
    Nj3                         d dl Z d dlZd dlZd dlZd dlZ  edd ed        ed        ed        ed       d             Z G d	 d
      Z	y)    N_Log c                 R    t        j                  t              j                  |       S N)_logging	getLogger__name__errorms    5C:\Users\Sxnti\OneDrive\Desktop\amz\amazon\captcha.py<lambda>r      s    9K9KH9U9[9[\]9^    c                 \    t        j                  t              j                  |  d|       S )Nz: )r   r   r	   debug)kvs     r   r   r      sd      EM  EW  EW  X`  Ea  Eg  Eg  kl  jm  mo  pq  or  hs  Etr   c                 R    t        j                  t              j                  |       S r   r   r   r	   infor   s    r   r   r      sA      Ya  Yk  Yk  lt  Yu  Yz  Yz  {|  Y}r   c                 R    t        j                  t              j                  |       S r   r   r   s    r   r   r      sA      _g  _q  _q  rz  _{  _@  _@  AB  _Cr   )r
   detailsuccessr   c                   .    e Zd ZdZddddZedd       Zy)Captchaz7AWS WAF aamation captcha solver for curl_cffi sessions.enes)usflexcaflexmxflexc                 d
   |t         _        ddlm}  ||d      }|j	                  dddi      }|r|j                  dd      nd	}	t        j                  d
|      }
|
r|
d   nd	}
d } ||dd      } ||dd      } ||dd      } ||dd      }|r|j                  dd      }|
r|s/t        j                  dt        |
       dt        |       d       y	t        j                  d|       t        j                  |
dd|dddd	d	dd	dd      }| j                  | dd|idd d!d"d#d$d%&      }t        j                  |j                   j                  d'd(            }|j                  d)      } ||j"                  d*d      } ||j"                  d+d      } ||j"                  d,d      }|r
 ||d-d.      nd	}|r|st        j                  d/       y	| j                  d-| d0d1|j                  d-d      d2|d3|d4d%5      }|j                         }|d6   d7   }t        j                  |d6   d8         }|j                  d9d      j                  d:d      j                  d;d      j                  dd      j                  d<d=      j%                         }t        j'                  d>| d?t)        |       d@       t        j*                  dAdB| |dC      }|j                  dD      st        j                  dE       y	t        j-                  dF|dD           | j/                  d-| dG|dH   |dI   dJ   |dI   dK   dL|dM   |dD   dNt1        j2                  dOdP      id2dQd%R      }|j                         }|j                  dS      st        j                  dT       y	t        j-                  dU       |dV   }| j                  | dW| ||t        j                  dd| ddXd      dYdd d!d"d#d$d%&      } t        j                  | j                   j                  d'd(            }!|!j                  dZ      }"|"st        j                  d[       y	t        j-                  d\       i d|	d]|"d^d_d`dda|dbdcdd|xs ddedfdg|dhdidjdkdldfdm|dndodpt4        j6                  j                  |dq      dr|}#| j/                  | ds|#dt|t9        |      dudvd#dwd3dxd%dyz      }$t        j'                  d{|$j:                          t        j                  d|t9        |$j<                        d	d}        |$S )~u   
        Full aamation captcha flow: widget → problem → solve → voucher → cvf verify.
        Returns cvf_verify response or None on failure.
        r   )BeautifulSoupzhtml.parserinputnamezanti-csrftoken-a2zvalue Nz "data-context":\s*\'({[^\']*})\'c                     	 | j                  |      t        |      z   }| || j                  ||       S # t        $ r Y y w xY wr   )indexlen
ValueError)datafirstlastss       r   _betweenzCaptcha.solve.<locals>._between    sH    JJu%E
2Adjjq122 s   14 	A A z"data-external-id": ""z1<input type="hidden" name="clientContext" value="z/<input type="hidden" name="verifyToken" value="z4<input type="hidden" name="openid.return_to" value="z&amp;&zMissing captcha data (context=z	, ext_id=)zExternal ID)WAF_ADVERSARIAL_SYNTHETIC_GRID_V2_LEVEL_1zen-USF)
clientDatachallengeTypelocale
externalIdenableHeaderFooterenableBypassMechanismenableModalVieweventTriggeraaExternalTokenforceJsFlushaamationToken),:)
separatorsz/aaut/verify/cvfoptionsz*/*zapplication/jsonemptycorszsame-origin)AcceptContent-TypeSec-Fetch-DestSec-Fetch-ModeSec-Fetch-Site<   )paramsheaderstimeoutzamz-aamation-respz{}clientSideContextz"problem":"z"id":"z<script src="zhttps://z/ait/zMissing captcha widget paramsz/ait/ait/ait/problemvisualzen-us1)kinddomainr6   problemnum_solutions_requiredid)rK   rM   assetstargetimages[]'_ zCaptcha target: z (z images)AwsWafClassificationz	aws:grid:)typequestionrX   objectszCapSolver returned no objectszCaptcha solved: z/ait/ait/ait/verifyhmac_tagstateivpayload)rd   re   keysolve_time_millisi  i@  )rb   rc   rf   client_solutionmetricsr6   )jsonrM   r   zCaptcha verification failedzCaptcha verifiedcaptcha_voucherz/aaut/verify/cvf/)r5   r+   )contextrB   responsesessionTokenz'No session token after voucher exchangezWAF session token obtainedcvf_aamation_response_tokencvf_captcha_captcha_actionverifyAamationChallengecvf_aamation_error_codeclientContextzopenid.pape.max_auth_age900zopenid.return_tozopenid.identityz2http://specs.openid.net/auth/2.0/identifier_selectzopenid.assoc_handlezopenid.modecheckid_setupzopenid.ns.papez+http://specs.openid.net/extensions/pape/1.0zopenid.claimed_idpageIdz	openid.nsz http://specs.openid.net/auth/2.0languager   verifyTokenz/ap/cvf/verifyz!application/x-www-form-urlencodeddocumentnavigatez?1)rF   OriginRefererrG   rH   rI   zSec-Fetch-UserzUpgrade-Insecure-RequestsT)r+   rL   rM   allow_redirectszCVF verify: zCVF URLP   )	capsolverapi_keybs4r"   findgetrefindallreplacer   r
   boolr   rj   dumpsloadsrL   textstripr   r)   solver   postrandomrandintr   HANDLE_LANGstrstatus_codeurl)%session	page_textpage_urlbase_domaincapsolver_api_keyassoc_handler"   htmlcsrf_elcsrfdata_contextr/   ext_id
client_ctxverify_token	return_torB   wamzclient_side_ctxrS   cap_idcap_url
cap_domainprobpjrW   rX   solvrvjvouchervr2amz2
sess_tokencvf_datacvfs%                                        r   r   zCaptcha.solve   s    .	%Y6))Gf.B%CD+2w{{7B'zz"EyQ*6|AD	 )%<cBi)\^ab
	+\^abY(^`cd	!))'37I6JJ7\8J7K9UYZ`UaTbbcdeM6* **&HV"'%$d#UT
 !" KK;-'78)WAU.%$+`
    jj':DAB''"56166=#6!&&(C0166?C8?FXgz7;D
JJ67 {{Xj\1EF(;(;J(K'&)P
 	  
 YY[Hh'BxL23R(00b9AA#rJRRSVXZ[ccdgilmssu		$VHBs6{m8DEoo*#F8,
 
 wwy!JJ67'I'789 \\HZL0CD:wK-"W+i:PQe9"9~+V^^D$-GHL
    WWYvvi JJ45'( &'kk[M):6(C&

!LG9A$ %&M
 .%$+
    zz#++//*=tDEXXn-
JJ@A12
 $
):
 )*C
 &r	

 Z
 '
 	R
 S
 "<
 ?
 K
  !U
 l
 ;
 ++//dC
  <!
& llk].9?!c(m(J+t),S
 t  - 			L 123Is377|CR01
r   N)r   )r	   
__module____qualname____doc__r   staticmethodr   r   r   r   r   r   	   s+    A $$K [ [r   r   )
rj   r   r   r   loggingr   r_   r   r   r   r   r   r   <module>r      s      	   FtFB,/^"_kw  yt  lu  BN  O}  B~  HT  UC  HD  E  F  Hc cr   