
    ^j!                         d dl mZ d dlZd dlZ	 d dlmZ 	 d dlZddlm	Z	m
Z
mZmZmZmZ ddlmZ  G d	 d
e      Z e        y# e$ r	 d dlmZ Y ;w xY w# e$ r	  ed      w xY w)    )absolute_importN)urlparsez3Please install the python module 'polling2' via pip   )CaptchaExceptionCaptchaServiceUnavailableCaptchaTimeoutCaptchaParameterCaptchaBadJobIDCaptchaReportError   )Captchac                   L     e Zd Z fdZed        Zd Zd Zd Zd Z	d Z
 xZS )captchaSolverc                     t         t        |   d       d| _        t	        j
                         | _        ddd| _        y )Ndeathbycaptchazhttp://api.dbcapi.me/api47)	reCaptchahCaptcha)superr   __init__hostrequestsSessionsessioncaptchaType)self	__class__s    ^/var/www/lego-monitor/venv/lib/python3.12/site-packages/cloudscraper/captcha/deathbycaptcha.pyr   zcaptchaSolver.__init__   s:    mT+,<=.	'')
    c                     t        g d      }| j                  |v r$t        |j                  | j                              y )N))i  zDeathByCaptcha: 400 Bad Request)i  zLDeathByCaptcha: 403 Forbidden - Invalid credentails or insufficient credits.)i  z4DeathByCaptcha: 503 Service Temporarily Unavailable.)dictstatus_coder   get)responseerrorss     r   checkErrorStatuszcaptchaSolver.checkErrorStatus(   s@    
 6)+FJJx7K7K,LMM *r    c                      | _         | _         fd}t        j                   fd|dd      } j	                  |       y )Nc                     | j                   rY| j                         j                  d      rt        d      | j                         j                  d      dk(  rt        d      | S j	                  |        y )N	is_bannedz'DeathByCaptcha: Your account is banned.balanacer   z%DeathByCaptcha: insufficient credits.)okjsonr$   r   r'   r%   r   s    r   _checkRequestz*captchaSolver.login.<locals>._checkRequest<   se    {{==?&&{334]^^==?&&z2a734[\\!!(+r    c                       j                   j                   j                   dddi j                   j                  d      S )Nz/userAcceptapplication/jsonusernamepasswordheadersdatar   postr   r4   r5   )r   s   r   <lambda>z%captchaSolver.login.<locals>.<lambda>K   sE    DLL%%99+U#!#56 $ $ &  r    
   x   check_successsteptimeout)r4   r5   polling2polldebugRequest)r   r4   r5   r/   r%   s   `    r   loginzcaptchaSolver.login8   sF      	 == (
 	(#r    c                      st        d       fd}t        j                   fd|dd      }|ryt        d      )	Nz<DeathByCaptcha: Error bad job id to report failed reCaptcha.c                 J    | j                   dk(  r| S j                  |        y )N   )r#   r'   r.   s    r   r/   z.captchaSolver.reportJob.<locals>._checkRequestb   s'    ##s*!!(+r    c                      j                   j                  j                   d  dddij                  j                  d      S )N	/captcha/z/reportr1   r2   r3   r6   r9   jobIDr   s   r   r;   z)captchaSolver.reportJob.<locals>.<lambda>k   sK    DLL%%99+YugW5!#56 $ $ &  r    r<      r>   Tz.DeathByCaptcha: Error report failed reCaptcha.)r
   rB   rC   r   r   rL   r/   r%   s   ``  r   	reportJobzcaptchaSolver.reportJob\   sS    !N 	 == (
 $@ r    c                      st        d       fd}t        j                   fd|dd      }|r|j                         j	                  d      S t        d      )	Nz6DeathByCaptcha: Error bad job id to request reCaptcha.c                     | j                   r!| j                         j                  d      r| S j                  |        y )Ntextr,   r-   r$   r'   r.   s    r   r/   z/captchaSolver.requestJob.<locals>._checkRequest   s3    {{x}}226:!!(+r    c                  `    j                   j                  j                   d  ddi      S )NrJ   r1   r2   )r7   )r   r$   r   rK   s   r   r;   z*captchaSolver.requestJob.<locals>.<lambda>   s6    DLL$$99+Yug.!#56 %  r    r<   rM   r>   rR   z0DeathByCaptcha: Error failed to solve reCaptcha.)r
   rB   rC   r-   r$   r   rN   s   ``  r   
requestJobzcaptchaSolver.requestJob   sg    !H 	 == (
 ==?&&v.. B r    c                      fd} j                    j                  d|dk(  rn||d} j                  r(|j                   j                   j                  d       j                   j
                  |   t        j                  |      d       nm||d} j                  r(|j                   j                   j                  d       j                   j
                  |   t        j                  |      d       t        j                   fd	|d
d      }|r|j                         j                  d      S t        d      )Nc                     | j                   r@| j                         j                  d      r!| j                         j                  d      r| S j                  |        y )N
is_correctcaptcharS   r.   s    r   r/   z1captchaSolver.requestSolve.<locals>._checkRequest   sG    {{x}}22<@X]]_EXEXYbEc!!(+r    r3   r   )	googlekeypageurl)proxy	proxytype)typetoken_params)sitekeyr[   )r^   hcaptcha_paramsc                  `    j                   j                  j                   dddi d      S )Nz/captchar1   r2   F)r7   r8   allow_redirects)r   r:   r   )r8   r   s   r   r;   z,captchaSolver.requestSolve.<locals>.<lambda>   s8    DLL%%99+X&!#56 %	 &  r    r<   rM   r>   rY   z-DeathByCaptcha: Error no job id was returned.)r4   r5   r\   update	proxyTyper   r-   dumpsrB   rC   r$   r
   )r   r   urlsiteKeyr/   jPayloadr%   r8   s   `      @r   requestSolvezcaptchaSolver.requestSolve   s;   	 

 +%$H
 zz!ZZ!%! 
 KK((5 $

8 4  #H
 zz!ZZ!%! 
 KK((5#'::h#7 
 == (

 ==?&&y11!? r    c                 `   d }dD ]>  }|j                  |      st        d| d      t        | ||j                  |             @ |j                  d      r|j                  d      st        |j                  di       j                  d            }|j                  st        d      |j
                  st        d      |j                  j                         | _        |j                  di       j                  d      | _        nd | _        || j                  vrt        d	| d
      	 | j                  |||      }| j                  |      S # t        j                  $ rK 	 |r| j                  |       n&# t        j                  $ r t!        d| d      w xY wt!        d| d      w xY w)Nr3   zDeathByCaptcha: Missing 'z' parameter.r\   no_proxyhttpsz(Cannot parse proxy correctly, bad schemez(Cannot parse proxy correctly, bad netloczDeathByCaptcha: z# is not supported by this provider.zPDeathByCaptcha: Captcha solve took to long and also failed reporting the job id .z=DeathByCaptcha: Captcha solve took to long to execute job id z, aborting.)r$   r	   setattrr   schemenetlocupperre   r\   r   r   rj   rU   rB   TimeoutExceptionrO   r   )r   r   rg   rh   captchaParamsrL   param
hostParseds           r   getCaptchaAnswerzcaptchaSolver.getCaptchaAnswer   s   - 	;E $$U+&/wlC  D%!2!25!9:	; W%m.?.?
.K!-"3"3GR"@"D"DW"MNJ$$&'QRR$$&'QRR'..446DN&**7B7;;GDDJDJd..."%5k]Be#fgg	%%k3@E??5))(( 	NN5),, $fglfmmno 
 !OPUwVab 	s$   +#E F-#E76F-7#FF-)__name__
__module____qualname__r   staticmethodr'   rE   rO   rU   rj   rw   __classcell__)r   s   @r   r   r      s<    
 N N $H!JB@H)r    r   )
__future__r   r-   r   r   ImportErrorurllib.parserB   
exceptionsr   r   r   r	   r
   r    r   r    r    r   <module>r      sw    &  &!M  tG tr [  &%&
  M
K
LLMs   A A AAA#