
    ^j                         d dl mZ d dlZ	 d dlmZ ddlmZmZm	Z	m
Z
mZ 	 d dlZddlmZ  G d	 d
e      Z e        y# e$ r	 d dlmZ Y 9w xY w# e$ r	  ed      w xY w)    )absolute_importN)urlparse   )CaptchaServiceUnavailableCaptchaAPIErrorCaptchaTimeoutCaptchaParameterCaptchaBadJobIDz3Please install the python module 'polling2' via pip   )Captchac                   @     e Zd Z fdZed        Zd Zd Zd Z xZ	S )captchaSolverc                     t         t        |   d       d| _        t	        j
                         | _        dddd| _        y )Nanticaptchazhttps://api.anti-captcha.comNoCaptchaTaskHCaptchaTaskTurnstileTask)	reCaptchahCaptcha	turnstile)superr   __init__hostrequestsSessionsessioncaptchaType)self	__class__s    [/var/www/lego-monitor/venv/lib/python3.12/site-packages/cloudscraper/captcha/anticaptcha.pyr   zcaptchaSolver.__init__   s<    mT+M:2	'')(&(
    c                     | j                   dv rt        d| j                          | j                         }|d   dk\  r d|v rt        |d         t        |d         y )N)i  i  zanticaptcha: Server Side Error errorIdr   errorDescription	errorCode)status_coder   jsonr   )responsepayloads     r    checkErrorStatuszcaptchaSolver.checkErrorStatus(   s}    :-+1(2F2F1GH  --/9"!W,%./  &gk&:;; #r!   c                      st        d       fd}t        j                   fd|dd      }|r!|j                         d   }d|v r|d   S |d	   S t	        d
      )Nz2anticaptcha: Error bad task id to request Captcha.c                 n    j                  |        | j                  r| j                         d   dk(  ryy )NstatusreadyTr*   okr'   r(   r   s    r    _checkRequestz/captchaSolver.requestJob.<locals>._checkRequest@   s0    !!(+{{x}}x8GCr!   c                  t     j                   j                   j                   d j                  dd      S )Nz/getTaskResult)	clientKeytaskId   )r'   timeout)r   postr   r4   )r   taskIDs   r    <lambda>z*captchaSolver.requestJob.<locals>.<lambda>I   s=    DLL%%99+^,!%$  &  r!         check_successstepr7   solutiontokengRecaptchaResponsez+anticaptcha: Error failed to solve Captcha.)r
   polling2pollr'   r   )r   r9   r2   r(   r)   s   ``   r    
requestJobzcaptchaSolver.requestJob:   s    !D 	 == (
 mmoj1G'!w''344 = r!   c                 D     fd} j                   || j                  |   ddd j                  rd   j                   j                         nd   d    dd   d<   t	        j
                   fd|d	d
      }|r|j                         d   S t        d      )Nc                 h    j                  |        | j                  r| j                         d   ryy )Nr5   Tr/   r1   s    r    r2   z1captchaSolver.requestSolve.<locals>._checkRequestd   s+    !!(+{{x}}x8r!   )
websiteURL
websiteKeytypei  )r4   tasksoftIdrK   rJ   	Proxylessc                  \    j                   j                  j                   d dd      S )Nz/createTaskFr6   )r'   allow_redirectsr7   )r   r8   r   )datar   s   r    r:   z,captchaSolver.requestSolve.<locals>.<lambda>|   s2    DLL%%99+[) %	 &  r!   r;   r<   r=   r5   z+anticaptcha: Error no task id was returned.)r4   r   proxyupdaterC   rD   r'   r
   )r   r   urlsiteKeyr2   r(   rP   s   `     @r    requestSolvezcaptchaSolver.requestSolvec   s    	 !%((5
 
 ::L

+&*6l6&:%;9#EDL == (

 ==?8,,!= r!   c                 >   d }|j                  d      st        d      |j                  d      | _        |j                  d      r|j                  d      st        |j                  di       j                  d            }|j                  st        d      |j
                  st        d      dd	d
}|j                  |j                  |j                  r|j                  n|| j                  d      |j                  |j                  d| _        n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)Nr4   z)anticaptcha: Missing clientKey parameter.rQ   no_proxyhttpsz(Cannot parse proxy correctly, bad schemez(Cannot parse proxy correctly, bad netlocP   i  )httprX   	proxyType)r[   proxyAddress	proxyPort
proxyLoginproxyPasswordzXanticaptcha: Captcha solve took to long and also failed reporting the task with task id .z;anticaptcha: Captcha solve took to long to execute task id z, aborting.)getr	   r4   r   schemenetlochostnameportrQ   usernamepasswordrU   rE   rC   TimeoutException	reportJobr   )r   r   rS   rT   captchaParamsr9   
hostParsedportss           r    getCaptchaAnswerzcaptchaSolver.getCaptchaAnswer   s     -";  '**;7W%m.?.?
.K!-"3"3GR"@"D"DW"MNJ$$&'QRR$$&'QRR E (.. * 3 30:Z__U4::VaKbEc(11!+!4!4DJ DJ	&&{CAF??6**(( 	NN6*,, $77=haA  !!(+/ 	s$   #D> >FE&%F&#F		F)
__name__
__module____qualname__r   staticmethodr*   rE   rU   rm   __classcell__)r   s   @r    r   r      s-    
 < <"%R)Z2r!   r   )
__future__r   r   r   ImportErrorurllib.parse
exceptionsr   r   r   r	   r
   rC    r   r    r!   r    <module>ry      st    & &! M hG hZ A  &%&  M
K
LLMs   > A AAA