
    vKg2                        S r SSKrSSKrSSKrSSKJr  SSKJrJ	r	J
r
  SSKJrJrJr  SSKJrJrJr  SSKJrJr  SS	KJrJr  / S
Qr SSK7  SSKJr  SSKJr  Sr " S S5      r$S\%S\&4S jr'S\%4S jr(S\)S\*S\&4S jr+S r,S \R                  S!\-4S" jr.S \R                  S#\-4S$ jr/S \R                  S\)S\R                  4S% jr0S \R                  S\&4S& jr1g!   Sr " S S\ 5      r! " S S\ 5      r" " S S\ 5      r# N= f)'a_  
_http.py
websocket - WebSocket client library for Python

Copyright 2024 engn33r

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
    N)encodebytes   )WebSocketAddressExceptionWebSocketExceptionWebSocketProxyException)debugdumptrace)DEFAULT_SOCKET_OPTION	recv_linesend)HAVE_SSLssl)get_proxy_info	parse_url)
proxy_infoconnectread_headers)*)	ProxyType)ProxyTFc                       \ rS rSrSrg)
ProxyError-    N__name__
__module____qualname____firstlineno____static_attributes__r       O/var/www/highfloat_scraper/venv/lib/python3.13/site-packages/websocket/_http.pyr   r   -       r"   r   c                       \ rS rSrSrg)ProxyTimeoutError0   r   Nr   r   r"   r#   r&   r&   0   r$   r"   r&   c                       \ rS rSrSrg)ProxyConnectionError3   r   Nr   r   r"   r#   r)   r)   3   r$   r"   r)   c                       \ rS rSrS rSrg)r   7   c                    UR                  SS 5      U l        U R                  (       a  UR                  SS5      U l        UR                  SS 5      U l        UR                  SS 5      U l        UR                  SS5      U l        UR                  SS 5      U l        U R
                  S	;  a  [        S
5      eg SU l        S U l        S U l        SU l        g )Nhttp_proxy_hosthttp_proxy_portr   http_proxy_authhttp_no_proxy
proxy_typehttphttp_proxy_timeout)r3   socks4socks4asocks5socks5hz7Only http, socks4, socks5 proxy protocols are supported)get
proxy_host
proxy_portauthno_proxyproxy_protocolproxy_timeoutr   )selfoptionss     r#   __init__proxy_info.__init__8   s    !++&7>??%kk*;Q?DO$5t<DI#KK>DM")++lF"CD!(-A4!HD"" +  !M   DODI DM"(Dr"   )r<   r=   r:   r;   r>   r?   N)r   r   r   r    rB   r!   r   r"   r#   r   r   7   s    )r"   r   urlreturnc           	         [         (       d  [        S5      e[        U 5      u  p4pVUR                  S:X  a  Sn[        R
                  nOhUR                  S:X  a  Sn[        R
                  nOEUR                  S:X  a  Sn[        R                  nO"UR                  S:X  a  Sn[        R                  n[        R                  " WUR                  [        UR                  5      UR                  (       a  UR                  S   OS UR                  (       a  UR                  S	   OS WS
9n	U	R                  X4UR                  S9n
U(       a-  [        (       a  [!        XR"                  U5      n
O[        S5      eXXE44$ )Nz>Python Socks is needed for SOCKS proxying but is not availabler5   Fr6   Tr7   r8   r   r   )r2   hostportusernamepasswordrdns)timeoutSSL not available.)HAVE_PYTHON_SOCKSr   r   r>   r   SOCKS4SOCKS5r   creater:   intr;   r<   r   r?   r   _ssl_socketsslopt)rD   rA   proxyhostnamerH   resource	is_securerK   r2   ws_proxysocks              r#   _start_proxied_socketr[   R   s@    L
 	
 +4C.'HHx'%%
				*%%
				)%%
				*%%
||!!""'**A$"'**A$H HE4G4GHD8t^^X>D$%9::D+++r"   c                    UR                   (       a#  U(       d  UR                  S:w  a  [        XU5      $ [        U 5      u  pEpgU(       a  X4XV44$ [	        XEXr5      u  pn
U(       d  [        SU SU 35      eS n [        XR                  UR                  5      nU	(       a  [        XXZ5      nU(       a-  [        (       a  [        XR                  U5      nO[        S5      eXXV44$ !   U(       a  UR                  5         e = f)Nr3   zHost not found.: :rM   )r:   r>   r[   r   _get_addrinfo_listr   _open_socketsockoptrL   _tunnelr   rS   rT   close)rD   rA   rU   socketrV   port_from_urlrW   rX   addrinfo_listneed_tunnelr<   rZ   s               r#   r   r   }   s     5+?+?6+I$S5993<S>0HX-:::'9($M  #4XJa!OPPDM??GOOL4=?Dx"4B()=>>888JJLs   9A+C% %C?rH   rX   c                    [        U UUR                  UR                  UR                  UR                  5      u  pEn U(       d:  [
        R                  " XS[
        R                  [
        R                  5      nUSS 4$ U=(       a    U=(       d    Sn[
        R                  " XES[
        R                  [
        R                  5      nUSU4$ ! [
        R                   a  n[        U5      eS nAff = f)Nr   FP   T)r   r:   r;   r<   r=   rc   getaddrinfoSOCK_STREAMSOL_TCPgaierrorr   )	rV   rH   rX   rU   phostpportpauthre   es	            r#   r^   r^      s    (

E%+ "..6#5#5v~~M !%--Oe)rE
 #..a!3!3V^^M !$--?? +'**+s   A C >AC C0 C++C0c                    S nU  H  nUS S u  pVn[         R                   " XVU5      nUR                  U5        [         H  n	UR                  " U	6   M     U H  n	UR                  " U	6   M     US   n
S nU(       d   UR	                  U
5        OM    U$    U(       a  UeW$ ! [         R
                   a  nUR                  5         [        U
S   5      Ul         [        R                  [        R                  [        R                  4nO0! [         a#    [        R                  [        R                  4n Of = fUR                  U;  a  UeUn S nAM  S nAff = f)N      r   )rc   
settimeoutr   
setsockoptr   errorrb   str	remote_iperrnoECONNREFUSEDWSAECONNREFUSEDENETUNREACHAttributeError)re   r`   rL   erraddrinfofamilysocktypeprotorZ   optsaddressrv   eConnRefuseds                r#   r_   r_      sH   
C!"*2A,%}}Vu5 )DOOT" *DOOT"  1+W%" 
 KM "F IK1 << 

"%gaj/K**--))$L
 & K$)$6$68I8I#JLK;;l2Ks<   ;BE3#E/DE*D41E3D44EErZ   rT   c                 .   UR                  SS 5      nU(       GdJ  [        R                  " UR                  S[        R                  5      5      n[        R
                  R                  SS 5      Ul        UR                  S[        R                  5      [        R                  :w  a|  UR                  SS 5      nUR                  SS 5      nU(       d  U(       a  UR                  XVS9  O:[        US5      (       a)  UR                  [        R                  R                  5        UR                  S	S 5      (       a6  UR                  US	   UR                  S
S 5      UR                  SS 5      5        UR                  S[        R                  5      [        R                  :X  a4  UR                  SS5      (       d  SUl        [        R                  Ul        O<UR                  SS5      Ul        UR                  S[        R                   5      Ul        SU;   a  UR#                  US   5        SU;   a  US   u  pxn	UR                  XxU	5        SU;   a  UR%                  US   5        UR'                  U UR                  SS5      UR                  SS5      US9$ )Ncontextssl_versionSSLKEYLOGFILE	cert_reqsca_certsca_cert_path)cafilecapathload_default_certscertfilekeyfilerJ   check_hostnameFTciphers
cert_chain
ecdh_curvedo_handshake_on_connectsuppress_ragged_eofs)r   r   server_hostname)r9   r   
SSLContextPROTOCOL_TLS_CLIENTosenvironkeylog_filename	CERT_NONEload_verify_locationshasattrr   PurposeSERVER_AUTHload_cert_chainr   verify_modeCERT_REQUIREDset_ciphersset_ecdh_curvewrap_socket)
rZ   rT   rV   r   r   r   r   r   r   rJ   s
             r#   _wrap_sni_socketr      s   jjD)G..M3;R;R!ST
 #%**..$"G::k3==1S]]BZZ
D1FZZ5F--V-K"677**3;;+B+BC::j$''##z"

9d+

:t, ::k3==1S]]B6::eL
 L
 &+G""%--G%+ZZ0@$%GG""(**[#:K:K"LGy 126!*0*>'Hx##Hx@6!""6,#78 &

+Dd K#ZZ(>E 	   r"   user_ssloptc                    S[         R                  0nUR                  U5        [        R                  R                  S5      nU(       a<  [        R                  R                  U5      (       a  UR                  SS 5      c  XCS'   OBU(       a;  [        R                  R                  U5      (       a  UR                  SS 5      c  XCS'   UR                  SS 5      (       a  US   nUR                  SS5      n[        XX%5      n U $ )Nr   WEBSOCKET_CLIENT_CA_BUNDLEr   r   r   r   T)
r   r   updater   r   r9   pathisfileisdirr   )rZ   r   rV   rT   	cert_pathr   s         r#   rS   rS   !  s    !2!23F
MM+

;<IGGNN9%%OOJ-5&zGGMM)$$OOND19!*~zz#T**+,ZZ 0$7ND(CDKr"   c                    [        S5        SU SU S3nUSU SU S3-  nU(       ar  US   (       ah  US   nUS   (       a  USUS    3-  n[        UR                  5       5      R                  5       R	                  5       R                  S	S
5      nUSU S3-  nUS-  n[        SU5        [        X5         [        U 5      u  n  nUS:w  a  [        SU 35      eU $ ! [         a  n	[        [        U	5      5      eS n	A	ff = f)NzConnecting proxy...zCONNECT r]   z HTTP/1.1
zHost: z
r   r   
 zProxy-Authorization: Basic zrequest header   z!failed CONNECT via proxy status: )r   base64encodeencodestripdecodereplacer	   r   r   	Exceptionr   rw   )
rZ   rG   rH   r<   connect_headerauth_strencoded_strstatus_rp   s
             r#   ra   ra   <  s    	
 vQtfM:NtfAdV400N Q77!DG9%H"8??#45;;=DDFNNtUWX7}DIIfN	>*.#D)1 }%(I&&RSSK  .%c!f--.s   7C 
C?&C::C?c                    S nS n0 n[        S5         [        U 5      nUR                  S5      R                  5       nU(       d  O[        U5        U(       d5  UR	                  SS5      n[        US   5      n[        U5      S:  a  US   nOUR	                  SS5      n[        U5      S:w  a  [        S5      eUu  pxUR                  5       S:X  a?  UR                  S5      (       a)  UR                  S5      S	-   UR                  5       -   US'   O UR                  5       X7R                  5       '   GM  [        S
5        XU4$ )Nz--- response header ---zutf-8    r   r]   zInvalid headerz
set-cookiez; z-----------------------)
r
   r   r   r   splitrR   lenr   lowerr9   )	rZ   r   status_messageheaderslinestatus_infokvkeyvalues	            r#   r   r   X  s   FNG	
#$
{{7#))+d**S!,KQ(F;!#!,QC#B2w!|()9::JCyy{l*w{{</H/H(/L(AD(H5;;=(X%',{{}		$' * 

#$N**r"   )2__doc__ry   r   rc   base64r   r   _exceptionsr   r   r   _loggingr   r	   r
   _socketr   r   r   _ssl_compatr   r   _urlr   r   __all__python_socks._errorspython_socks._typesr   python_socks.syncr   rN   r   r   r&   r)   r   rw   tupler[   r   rR   boolr^   r_   dictr   rS   ra   r   r   r"   r#   <module>r      s5  $  	  . 
 ) ( ; ; & +
3&-') )6(,s (,u (,V" "J+s +t +u +@(V16== 1$ 1hfmm $ 6&-- S 6== 8+v}} + +]	
Y I y s   C %D