
    i                         S SK Jr  S SKr S SKJr  SSKJrJrJ	r	J
r
Jr   S SKrSSKJr   " S	 S
\5      r\" 5         g! \ a	    S SKJr   N:f = f! \ a	    \" S5      ef = f)    )absolute_importN)urlparse   )CaptchaServiceUnavailableCaptchaAPIErrorCaptchaTimeoutCaptchaParameterCaptchaBadJobIDz3Please install the python module 'polling2' via pip   )Captchac                   J   ^  \ rS rSrU 4S jr\S 5       rS rS rS r	Sr
U =r$ )captchaSolver   c                    > [         [        U ]  S5        SU l        [        R
                  " 5       U l        SSSS.U l        g )N	capsolverzhttps://api.capsolver.comReCaptchaV2TaskHCaptchaTaskAntiCloudflareTask)	reCaptchahCaptcha	turnstile)superr   __init__hostrequestsSessionsessioncaptchaType)self	__class__s    K/app/mltbenv/lib/python3.13/site-packages/cloudscraper/captcha/capsolver.pyr   captchaSolver.__init__   s<    mT+K8/	'')*&-
    c                    U R                   S;   a  [        SU R                    35      e U R                  5       nUR	                  SS5      (       a*  SUS   ;  a   [        SU SUR	                  S5       35      eg g ! [         a     g f = f)N)i  i  zCapSolver: Server Side Error errorDescriptionFzCurrent system busyzCapSolver -> z -> )status_coder   json	Exceptiongetr   )responsefnctrPayloads      r!   checkErrorStatuscaptchaSolver.checkErrorStatus'   s    :-+.KHL`L`Ka,bcc	}}H <<*E227LT\]oTp7p!vT(,,7I*J)KL  8q2  		s   A< <
B	B	c                    ^ ^ T(       d  [        S5      eU 4S jn[        R                  " UU 4S jUSSS9nU(       a$   UR                  5       S   nSU;   a  US   $ US	   $ [        S
5      e! [         a     Nf = f)Nz3CapSolver: Error bad job id to request task result.c                    > TR                  U S5         U R                  (       a  U R                  5       S   S:X  a  gg ! [         a     g f = f)N
requestJobstatusreadyT)r-   okr'   r(   )r*   r   s    r!   _checkRequest/captchaSolver.requestJob.<locals>._checkRequest<   sP    !!(L9;;8==?8#<#G   s   (? 
AAc                  n   > TR                   R                  TR                   S3TR                  T S.SS9$ )Nz/getTaskResult)	clientKeytaskId   )r'   timeout)r   postr   api_key)jobIDr   s   r!   <lambda>*captchaSolver.requestJob.<locals>.<lambda>F   s;    DLL%%99+^,!%#  & r#         check_successstepr;   solutiontokengRecaptchaResponsez)CapSolver: Error failed to solve Captcha.)r
   polling2pollr'   r(   r   )r   r>   r5   r*   r,   s   ``   r!   r1   captchaSolver.requestJob8   s    !"WXX	 == (
 #==?:6h&#G,,#$899 7
 	
  s   A- A- -
A:9A:c                   ^ ^ U 4S jnT R                   ST R                  U   UUS.S.mUS:X  a
  SS0TS   S'   T R                  (       a  T R                  TS   S	'   OT R                  U    S
3TS   S'   [        R                  " UU 4S jUSSS9nU(       a+  UR                  5       nUR                  S5      (       a  US   $ [        S5      e)Nc                    > TR                  U S5         U R                  5       nU R                  (       a  UR                  SS5      (       a  gg ! [         a     g f = f)N
createTaskr9   FT)r-   r'   r4   r)   r(   )r*   r,   r   s     r!   r5   1captchaSolver.requestSolve.<locals>._checkRequestg   sZ    !!(L9#==?;;||He44#   s   8A 
AAz$9E717405-8C70-49B3-B277-7C2F2196484B)type
websiteURL
websiteKey)r8   appIdtaskr   rP   rT   metadataproxy	Proxylessc                  V   > TR                   R                  TR                   S3T SSS9$ )Nz/createTaskFr:   )r'   allow_redirectsr;   )r   r<   r   )payloadr   s   r!   r?   ,captchaSolver.requestSolve.<locals>.<lambda>   s0    DLL%%99+[) %	 & r#   rA   rB   rC   r9   z(CapSolver: Error no job id was returned.)r=   r   rV   rI   rJ   r'   r)   r
   )r   r   urlsiteKeyr5   r*   r,   rZ   s   `      @r!   requestSolvecaptchaSolver.requestSolvec   s    		 ;((5!%
 +%+1;*?GFOJ'::'+zzGFOG$)-)9)9+)F(Gy&QGFOF#== (

 }}H||H%%))6
 	
r#   c                 L   UR                  S5      (       d  [        S5      eUR                  S5      U l        UR                  S5      (       a  UR                  S5      (       dp  [        UR                  S0 5      R                  S5      5      nUR                  (       d  [        S5      eUR
                  (       d  [        S5      eUS   S   U l        OS U l         U R                  XU5      nU R                  U5      $ ! [        R                   a    [        SW S	35      ef = f)
Nr=   z%CapSolver: Missing api_key parameter.rV   no_proxyhttpsz(Cannot parse proxy correctly, bad schemez(Cannot parse proxy correctly, bad netlocz#CapSolver: Captcha solve (task ID: z) took to long.)r)   r	   r=   r   schemenetlocrV   r^   r1   rI   TimeoutExceptionr   r   )r   r   r\   r]   captchaParams
hostParsedr>   s          r!   getCaptchaAnswercaptchaSolver.getCaptchaAnswer   s
     ++"#JKK$((3W%%m.?.?
.K.K!-"3"3GR"@"D"DW"MNJ$$&'QRR$$&'QRR&w/8DJDJ	%%k@E??5))(( 	 5eWOL 	s   "C? ?$D#)r=   r   r   rV   r   )__name__
__module____qualname____firstlineno__r   staticmethodr-   r1   r^   rh   __static_attributes____classcell__)r    s   @r!   r   r      s2    
   '
V6
t9 9r#   r   )
__future__r   r   r   ImportErrorurllib.parse
exceptionsr   r   r   r	   r
   rI    r   r    r#   r!   <module>rw      st    & &! M ]9G ]9D k  &%&  M
K
LLMs   > A AAA