o
    ǉjP                     @   s   d Z ddlZddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
mZmZmZmZmZmZ ddlmZ ddlmZ eeZeejdd	Zd
ZG dd dZdedefddZ deddfddZ!dedefddZ"dd Z#edkr}e#  dS dS )u:   
Amazon Account Creator — Adaptado para berseApi_clean.
    N)urljoin)BeautifulSoup)corehelpersAmazonRegisterErrorAccountBuilderAwsWafCookieConverter)HeroSms)CaptchaHTTP_TIMEOUTZ35   c                   @   s   e Zd Z				ddededededed	efd
dZdefddZd dede	de
fddZdede
fddZde
fddZdd Zedede
fddZdS )!AmazonAccountCreatorMXNQ?herosms_api_keycapsolver_api_keycountryproxysms_max_price	on_statusc                 C   s   |t jvrtd| ddt j || _t j| | _d| j | _t j| | _	t j
| | _|| _t | _|| _d | _t|||d| _|| _d| _d S )Nz	Country 'z' not supported. Use: z, zhttps://www.)ZmaxPriceZtargetCountryF)r   Zcountrys_supported
ValueErrorjoinr   Z
DOMAIN_MAPdomainbase_urlZASSOC_HANDLE_MAPassoc_handleZMANAGE_URLSregister_urlr   r   generateFakeProfileusercapsolver_key
phone_datar
   sms_service
_on_statusskip_billing)selfr   r   r   r   r   r    r%   $/Users/user/Downloads/amz/creator.py__init__   s   
	

zAmazonAccountCreator.__init__messagec              
   C   s\   | j r'z|  | W d S  ty& } ztd|  W Y d }~d S d }~ww t| d S )NzStatus callback error: )r"   	Exceptionloggerwarninginfo)r$   r(   er%   r%   r&   _emit1   s   zAmazonAccountCreator._emit   Fmax_retriesr#   returnc                    s  || _ t|d D ]}z| |W   S  ty,   | d |   | d Y   S  ty } zt| t	 fdddD }|rH|   d v sPd v rUt
 | _||krj|   |  W  Y d }~  S | d	|d  d
| d   td v rdn|rdnd |r| d z| j | _W n) ty } ztd|  | t|W  Y d }~W  Y d }~  S d }~ww W Y d }~q	d }~ww | dS )N   u   ⚠️ Cancelled by userzCancelled by userc                 3   s    | ]}| v V  qd S Nr%   ).0kZ	error_msgr%   r&   	<genexpr>E   s    z.AmazonAccountCreator.create.<locals>.<genexpr>)unusual activityactividad inusualnumber_associatedsms_timeoutr8   r9   zRetry /z: g       @g      ?g?zAcquiring new number...u   No se pudo obtener número: zUnexpected exit)r#   range_attemptKeyboardInterruptr.   _cancel_phone_errorr)   stranyr   r   r   timesleepr!   	getNumberr    r*   r+   )r$   r0   r#   Zattemptr-   Zneeds_new_numberZsms_errr%   r6   r&   create:   s@   

 
*
zAmazonAccountCreator.createretryc                 C   sP  |  d|d   t }| js(|  d | j | _|  d| jd   ntd| jd   |  }|d }z| j| jd  W n	 t	yO   Y nw t
| d	d
s|  d t|| jt| jd}| }|d rz|  d|d   n
|  d|d   |  dt | dd d| jjd| jd  | jjd|| jdS )Nz	Attempt #r2   u   📱 Acquiring phone number...u   ✅ Phone: numberzReusing phone: cookiesactivationIdr#   FzAdding billing address...)r   r   statusu   ✅ r(   u   ⚠️ u   ✅ Account created in z.1fsT+)emailphonepassword)rL   profilerJ   r   )r.   rD   r    r!   rF   r*   r,   _execute_flowZfinishActivationr)   getattrr   r   r   normalizeProxyr   ZhandleBillingAddressr   ZmailrQ   )r$   rH   Z	init_timeresultZcookies_rawZbuilderZbillingr%   r%   r&   r>   [   sB   


zAmazonAccountCreator._attemptc           @         s   | j d }| j d }| j}| j}| j}tj| j| j}t	|| j
| j\}}g g }	}
| d z>t| dt| j|d }|d rd|jjd|d d	| j
 dd
 tdt|d  d n
td|d   W n ty } ztd|  W Y d }~nd }~ww | d tj|| jt| j|| j
d\}}tdt|jd d   t|jd}t|j\}	}
dt|jvrt|dr||j}}nx| d | d}|r|ddnd}|r|!ds| | }ddddtj"t|j| d|	|
||d d!t#|| jd"t|d#|!d$sd$| n|dd%}|$d&d'd(iD ]}|d)}|rB||vrB|d*d||< q+t%||pN| d||j|}|j}t|jd}t|d+}d }|$dD ]}d,|ddv ry|} nqj|rtd- t|d.p|}t|d/p|}nC|rtd0 | d&d)d.i}| d&d)d/i}|r|d*|n|}|r|d*|n|}nd1|jv sd2|jv rt&d3t&d4| d5 |p| d}|r|ddnd} | r | !ds | |  } d6d||t|d#d7}!|r||!d+< |$d&d'd(iD ]}|d)}|r2||!vr2|d*d|!|< qt%|| p>| d,|!|j|}| d8 t|jd}"t|"dsZt&d9| d: d }#t'||||||||	|
|d;}$t(|$jr{t&d<t)|$jr| d= |$}#nt*|$jrh| d> |$}%t+t,D ]}&| d?|&d@  dt, dA t-||%j|%j|| j.|}'|'sqt)|'jr| dB |'}# nt(|'jrt&d<t/|'jrt'||'|%j|||||	|
|dC|&d@  }(t(|(jr t&d<t)|(jr|(}# nU|(}%qt*|'jr|'}%qt|'jd})|) dr\t|)dr\t'||'|%j|||||	|
|dD|&d@  }(t)|(jrM|(}# nt(|(jrXt&d<|(}%q|'}%q|#sgt&dEnt&dFt|#jd}*d }+|*$dD ]}| d&d)dGir|}+ nqy|+r|+ d&d)dGi},|,r|,d*dnd}-|-dHkr| dI i }.|+$d&D ]}|d)}|r|d*d|.|< qdH|.dG< |+dd}/|/r|/!dst0t|#j|/}/|/s| dJ}/t%||/|.t|#j|}#t|#jd}*d }0|*$dD ]}| d&dGdHdKr|}0 nq|0rz| dL i }1|0$d&D ]}|d)}|r4|d*d|1|< q"|0dd}2|2rM|2!dsMt0t|#j|2}2|2sU| dJ}2t%||2|1t|#j|}3t|3jd}4|4 d&d)dMisxdH|3j1 v rz|3}#| dN z+| j23| j dO  t4t5j6dPdQ}5| j2j7| j dO |5dR}6|6st8dS| dT W n ty   t&dUw | dV t|#jd}7d }8|7$dD ]}9|9 d&d)dMir|9}8 nq|8s|7 d}8|8r|8ddnd}:|:r|:!dst0t|#j|:}:|:s| dJ}:t|#j\};}<i }=|8r/|8$d&d'd(iD ]}|d)}|r-|d*d|=|< qdM|=d< |6|=dM< tj"t|#jt|#j|;pE|	|<pI|
|||j9dW|=dX< t%||:|=t|#j| dYdZd[d\| j
 d]| j
 dZg}>t: fd^d_|>D r| d` t;|| j
}?da|?|dbS t&dc)dNrI   ZnormalizedNumberzSolving WAF challenge...r<   )Z
websiteURLr   Z	userAgentrL   zaws-waf-tokenZtoken.)r   pathzWAF token obtained (z chars)zWAF failed: descriptionzWAF error: u!   📄 Loading registration page...)timeoutr   r   r   zPage loaded: F   zhtml.parserz	/ax/claimZappActionTokenzSubmitting phone number...Zformaction ZhttpZSIGNIN_CLAIM_COLLECTZFullPageUnifiedClaimCollectZunifiedZT2)rO   ZphoneNumbertrueanti-csrftoken-a2zrN   )Z	appActionZsubPageTypeZclaimCollectionWorkflowunifiedAuthTreatment	metadata1Z	claimTypecountryCodeZisServerSideRoutingr_   rO   rQ   inputtypeZhiddennamevaluearbz/ap/registerzPhone claimed (new number)rO   rb   z%Number may exist, using register linkZSIGNIN_PWD_COLLECTZSIGNIN_OTP_COLLECTr:   Zno_arbzLoading registration form...ZunifiedAuthClaimCollection)ZclaimCollectionLayoutTyper`   rb   rO   r_   zRegistration form loadedZno_register_formzSubmitting registration...Zfirstr8   z'Registration accepted, OTP page reachedzCaptcha challenge detectedzSolving captcha (r2   z)...z Captcha passed, OTP page reachedz	resubmit-zcvf-resubmit-Zcaptcha_failedZunexpected_responseZrequestedContactTypeZsmsz Switching to SMS verification...z/ap/cvf/verify)re   rf   z Switching verification to SMS...codezWaiting for SMS code...rK   ZSMS_TIMEOUTZ75)rZ   zEmpty SMS codezSMS code receivedr;   zSubmitting OTP...)rO   re   ra   zamazon.com/?z/refz/gp/Znav_newcustz/?c                 3   s    | ]
}|t  jv V  qd S r3   )rB   url)r4   xZotp_subr%   r&   r7     s    z5AmazonAccountCreator._execute_flow.<locals>.<genexpr>zAccount verifiedT)rL   rJ   ZsessionZ
otp_failed)<r    r   r   r   r   ZAMAZON_COUNTRY_CODE_MAPgetr   r   ZbuildSessionr   r   r.   r   rU   ZsolverJ   setr*   r,   lenr+   r)   Zget_with_retryr   r   rB   ri   r   textZextractScriptsZgetHiddenFieldfind
startswithZgenerateMetadataZphone_country_codeZfind_allZpostFormr   ZsubmitRegisterZ	isUnusualZisOtpZ	isCaptchar=   CAPTCHA_MAXr   r   Z	isRegFormr   lowerr!   Z	markReadyintosenvironZgetSMSRuntimeErrorre   rC   Zexport_session_cookies)@r$   rP   Zphone_shortr   baseZhandleZ
cc_defaultrM   ZuaZdyn_urlsZ
dyn_hashesZwrr-   Zr1Zhtml1Zr3Zr2_urlf1Za1Z
claim_dataZinpnZr2Zhtml2rg   Zreg_formfZc_emailZ	c_countryZeiZciZtfZraZrdZhtml3Zotp_respZreg_respZcpiZcvfZrsZcvf_htmlZotp_htmlZcontact_formZcurrent_typeZcurrent_valZca_dataZ	ca_actionZsms_switch_formZsms_dataZ
sms_actionZswitch_respZswitch_htmlr;   Zotp_codeZohZotp_formcZ
otp_actionZouZohhZotp_payloadZsuccess_markersrJ   r%   rk   r&   rS      s  









 

 




 




**






"





6 
z"AmazonAccountCreator._execute_flowc                 C   sH   | j r"z| j| j d  td W n	 ty   Y nw d | _ d S d S )NrK   zPhone cancelled to save credits)r    r!   ZcancelActivationr*   r,   r)   )r$   r%   r%   r&   r@     s   
z"AmazonAccountCreator._cancel_phonec                 C   s
   d| dS )NF)rL   r(   r%   )r(   r%   r%   r&   rA     s   
zAmazonAccountCreator._error)r   Nr   N)r/   F)__name__
__module____qualname__rB   floatcallabler'   r.   rt   booldictrG   r>   rS   r@   staticmethodrA   r%   r%   r%   r&   r      s6    
	!+  	r   datar1   c                 C   s   t j| dddS )NF   )Zensure_asciiZindent)jsondumps)r   r%   r%   r&   _json_pretty  s   r   rV   c           	      C   s   ddl m} t| }|dsd S ||}|tjdd }|tjdd }t|d }|jd	d
d}|| W d    n1 sDw   Y  |jd	d
d}||d d  W d    n1 sdw   Y  t	
d|j d|j  d S )Nr   PathcookieZACCOUNTS_FILEzaccounts.txtZCOOKIES_FILEzcookies.txtz

azutf-8)encoding
zGuardado en z y )pathlibr   _to_json_outputrl   ru   rv   r   openwriter*   r,   re   )	rV   Zbase_dirr   outrootZaccountsZcookies_onlyZblockr{   r%   r%   r&   _save_account  s   
r   c                 C   sx   |  dsd|  ddiS |  di }|  dpd }|  dd	}|r*t||nd	}| d
| d| d|dS )NrL   errorr(   unknownrR   r   r   rJ   r]   rO   rP   rQ   )rO   rI   passr   )rl   upperr	   Zconvert)rV   pr   Z
raw_cookier   r%   r%   r&   r     s   
r   c            
      C   s  dd l } dd l}ddlm} zddlm} ||t jd  W n	 t	y*   Y nw t
jt
jdtjd | jdd}|jd	|jd
d |jd|jdd |jd|jddd |jd|jdd |jdtt|jddd |jddddd | }|jr|jsttddi td |jrt
 t
j |jrd ndd  }t|j|j|j|j |d!}|j!|j"d"}t#|}	tt|	d#d$ |d%rt$||t j t|d%rd d S d d S )&Nr   r   )load_dotenvz.envz%(message)s)levelformatstreamzCrear cuenta Amazon MX)rY   z--herosms-keyZHEROSMS_API_KEY)defaultz--capsolver-keyZCAPSOLVER_API_KEYz	--countryZAMAZON_COUNTRYr   z--proxyZPROXYz	--retriesZMAX_RETRIES3)rd   r   z-qz--quietZ
store_truezSin logs, solo JSON)r\   helpr   Zmissing_api_keysr2   c                 S   s   t | tjddS )NT)fileflush)printsysstderr)msgr%   r%   r&   <lambda>  s    zmain.<locals>.<lambda>)r   r   r   r   r   )r0   T)r   rL   )%argparseru   r   r   Zdotenvr   __file__ZresolveparentImportErrorloggingZbasicConfigZINFOr   r   ZArgumentParserZadd_argumentrv   rl   rt   Z
parse_argsZherosms_keyr   r   r   exitquiet	getLoggerZsetLevelZERRORr   r   r   rG   Zretriesr   r   )
r   ru   r   r   Zparserargsr   creatorrV   r   r%   r%   r&   main  sJ   

"r   __main__)$__doc__r   ru   r   rD   r   Zurllib.parser   Zbs4r   Zamazonr   r   r   r   r   r	   Z
amazon.smsr
   Zamazon.captchar   r   r~   r*   rt   rv   rl   r   rr   r   r   rB   r   r   r   r   r%   r%   r%   r&   <module>   s2     
   /
