
    h1                        d dl Z d dlmZ d dlmZ d dlmZmZmZ ddl	m
Z
mZ ddlmZ ed         Zd	Zd
ZdZdZdZdZdZdZdZd	d
dddddddd	Zd Z G d dee          Ze G d d                      Z G d ded          Zej        ej        ej         ej!        dZ"i dddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>i d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcddZ#i d dedfdgddhdidjdkdldmdndodpdqdrdsdtdudvddwdxdydzd{d|d}d~dddddi ddddddddddddddddddddddddddddddddddi ddddddddddddddddddddddddddddddd!dÓddœddddddddddddddӜZ$dddddddddddޜ
Z%de&de'fdZ(dS )    N)	dataclass)Enum)LiteralOptional	TypedDict   )CurlOptCurlSslVersion)CurlCffiWarning)/edge99edge101chrome99	chrome100	chrome101	chrome104	chrome107	chrome110	chrome116	chrome119	chrome120	chrome123	chrome124	chrome131
chrome133a	chrome136chrome99_androidchrome131_android	safari153	safari155	safari170safari172_ios	safari180safari180_ios	safari184safari184_ios	safari260safari260_ios
firefox133
firefox135tor145chromeedgesafari
safari_iossafari_betasafari_ios_betachrome_androidfirefox
safari15_3
safari15_5
safari17_0safari17_2_ios
safari18_0safari18_0_ios
safari18_4safari18_4_iosr   r   r$   r%   r&   r'   r   r)   r*   )	r+   r,   r-   r.   r/   r0   r1   r2   torc                     | dk    rt           S | dk    rt          S | dk    rt          S | dk    rt          S | dk    rt          S | dk    rt
          S | dk    rt          S | dk    rt          S | d	k    rt          S | S )
Nr+   r,   r-   r.   r/   r0   r1   r2   r;   )	DEFAULT_CHROMEDEFAULT_EDGEDEFAULT_SAFARIDEFAULT_SAFARI_IOSDEFAULT_SAFARI_BETADEFAULT_SAFARI_IOS_BETADEFAULT_CHROME_ANDROIDDEFAULT_FIREFOXDEFAULT_TOR)items    \/var/www/html/marketdash/venv/lib/python3.11/site-packages/curl_cffi/requests/impersonate.pynormalize_browser_typerH   c   s    x							!!			""	"	"	"&&	!	!	!%%				    c                       e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&S )'BrowserTyper   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r3   r4   r5   r6   r7   r8   N)(__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r3   r4   r5   r6   r7   r8    rI   rG   rK   rK   z   s        FGHIIIIIIIIIIIJI)+III#MI#MI#MI#MJJF JJJ%NJ%NNNrI   rK   c                       e Zd ZU ej        Zeed<   dZe	ed<   dZ
e	ed<   dZed         ed<   dZeee                  ed	<   d
Zeed<   dZeed<   dZeed<   dZeed<   dZe	ed<   dS )ExtraFingerprintstls_min_versionF
tls_greasetls_permute_extensionsbrotlizlibrU   tls_cert_compressionNtls_signature_algorithms tls_delegated_credentialr   tls_record_size_limit   http2_stream_weight   http2_stream_exclusivehttp2_no_priority)rL   rM   rN   r
   TLSv1_2rR   int__annotations__rS   boolrT   rX   r   rY   r   liststrr[   r\   r^   r`   ra   rO   rI   rG   rQ   rQ      s         )1OS111J#(D(((6>'"23>>>48htCy1888$&c&&&!"3""""""""#C####t#####rI   rQ   c                       e Zd ZU eed<   eed<   eed<   ed         ed<   eee	                  ed<   e	ed<   eed<   eed	<   eed
<   eed<   dS )ExtraFpDictrR   rS   rT   rV   rX   rY   r[   r\   r^   r`   ra   N)
rL   rM   rN   rc   rd   re   r   r   rf   rg   rO   rI   rG   ri   ri      s             !"23333&tCy1111!!!!rI   ri   F)total)i  i  i  i  
   TLS_RSA_WITH_3DES_EDE_CBC_SHA/   TLS_RSA_WITH_AES_128_CBC_SHA3    TLS_DHE_RSA_WITH_AES_128_CBC_SHA5   TLS_RSA_WITH_AES_256_CBC_SHA9    TLS_DHE_RSA_WITH_AES_256_CBC_SHA<   TLS_RSA_WITH_AES_128_CBC_SHA256=   TLS_RSA_WITH_AES_256_CBC_SHA256g   #TLS_DHE_RSA_WITH_AES_128_CBC_SHA256k   #TLS_DHE_RSA_WITH_AES_256_CBC_SHA256   TLS_PSK_WITH_AES_128_CBC_SHA   TLS_PSK_WITH_AES_256_CBC_SHA   TLS_RSA_WITH_AES_128_GCM_SHA256   TLS_RSA_WITH_AES_256_GCM_SHA384   #TLS_DHE_RSA_WITH_AES_128_GCM_SHA256   #TLS_DHE_RSA_WITH_AES_256_GCM_SHA384i  TLS_AES_128_GCM_SHA256i  TLS_AES_256_GCM_SHA384i  TLS_CHACHA20_POLY1305_SHA256i  %TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHAi	  $TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHAi
  $TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHAi  #TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHAi  "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHAi  "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHAi#  'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256i$  'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384i'  %TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256i(  %TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384i+  'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256i,  'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384i/  %TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256i0  %TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384i5  "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHAi6  "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA+TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256-TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256+TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256)i  i  i  server_namer_   max_fragment_lengthclient_certificate_url   trusted_ca_keys   truncated_hmac   status_request   user_mapping   client_authz   server_authz	   	cert_typesupported_groups   ec_point_formats   srp   signature_algorithms   use_srtp   	heartbeat   &application_layer_protocol_negotiation   status_request_v2   signed_certificate_timestamp   client_certificate_type   server_certificate_type   padding   encrypt_then_mac   extended_master_secret   token_binding   cached_info   tls_lts   compress_certificate   record_size_limit   pwd_protect   	pwd_clear   password_salt    ticket_pinning!   tls_cert_with_extern_psk"   delegated_credential#   session_ticket$   TLMSP%   TLMSP_proxying&   TLMSP_delegate'   supported_ekt_ciphers)   pre_shared_key*   
early_data+   supported_versions,   cookie-   psk_key_exchange_modescertificate_authorities0   oid_filters1   post_handshake_auth2   signature_algorithms_cert	key_share4   transparency_infoconnection_idexternal_id_hashexternal_session_idquic_transport_parametersticket_requestdnssec_chain%sequence_number_encryption_algorithmsrrcapplication_settingszapplication_settings newech_outer_extensionsencrypted_client_hellorenegotiation_info)6   7   8   rs   :   ;   ru   rw   iD  D  i     i  zP-192zP-224zP-256zP-384zP-521X25519	ffdhe2048	ffdhe3072X25519MLKEM768X25519Kyber768Draft00)
r   r   r   r   r   r   r]   i  i  ic  extension_idenablec                 f   |dk    rF|r"|                      t          j        d           d S |                      t          j        d           d S |dk    rb|r>t          j        dt
          d           |                      t          j        d           d S |                      t          j        d           d S |d	k    rF|r"|                      t          j        d           d S |                      t          j        d
           d S |dk    r|rB|                      t          j        d           |                      t          j        d           d S |                      t          j        d
           |                      t          j        d
           d S |d
k    rt          d          |dk    rF|r"|                      t          j
        d           d S |                      t          j
        d
           d S |dk    r&|r"|                      t          j        d           d S d S |dk    r&|r"|                      t          j        d           d S d S |dk    rF|r"|                      t          j        d           d S |                      t          j        d
           d S |dk    rd S |dv rd S t          d| d          )Nr  greaserZ   r   zTCert compression setting to brotli, you had better specify which to use: zlib/brotlir_   )
stacklevelrU   r  r   r  z>It's unlikely that the server_name(0) extension being changed.r   r   r   r   r   )r   r   zThis extension(z6) can not be toggled for now, it may be updated later.)setoptr	   ECHwarningswarnr   SSL_CERT_COMPRESSIONSSL_ENABLE_ALPSTLS_USE_NEW_ALPS_CODEPOINTNotImplementedErrorSSL_ENABLE_ALPNTLS_STATUS_REQUESTTLS_SIGNED_CERT_TIMESTAMPSSSL_ENABLE_TICKET)curlr  r  s      rG   toggle_extensionr*  p  s   u 	)KKX.....KKR(((((			 		:MC	    KK4h?????KK4b99999			 	4KK/33333KK/33333			 	?KK/333KK:A>>>>>KK/333KK:A>>>>>			!L
 
 	
 
		 	4KK/33333KK/33333			 	7KK2A66666	7 	7 
		 	?KK:A>>>>>	? 	? 
		 	6KK1155555KK1155555					!	!!l   
 
 	
rI   ))r  dataclassesr   enumr   typingr   r   r   constr	   r
   utilsr   BrowserTypeLiteralr=   r>   r?   r@   rA   rB   rC   rD   rE   REAL_TARGET_MAPrH   rg   rK   rQ   ri   TLSv1_0TLSv1_1rb   TLSv1_3TLS_VERSION_MAPTLS_CIPHER_NAME_MAPTLS_EXTENSION_NAME_MAPTLS_EC_CURVES_MAPrc   re   r*  rO   rI   rG   <module>r9     s8    ! ! ! ! ! !       / / / / / / / / / / + + + + + + + + # # # # # #3? D $ ! ) ,  !&)
 
  .'& '& '& '& '&#t '& '& '&T 
$ 
$ 
$ 
$ 
$ 
$ 
$ 
$
 
 
 
 
)5 
 
 
 
  """"	 &
+&
*& .& *	&
 .& -& -& 1& 1& *& *& -& -& 1& 1&  $!&" $#& &$ *%&& 3'&( 2)&* 2+&, 1-&. 0/&0 01&2 53&4 55&6 37&8 39&: 5;&< 5=&> 3?&@ 3A&B 0C&D 0E& &F :;9K& & & Vi}ii i 	i
 i i ~i ~i ~i {i i i i i 
i  !i" 0#i i$ %i& &'i( !)i* !+i, 	-i. /i0  1i2 3i4 5i6 	7i8 9i: ;i< =i> ?i@ AiB CiD "Ei i iF GiH IiJ KiL MiN OiP QiT UiV WiX YiZ [i\  ]i` !aib cid eif #gih iij ki in 	#/!%D "#  Oi i i Z 			
"  C
 C
d C
 C
 C
 C
 C
 C
rI   