§
     öÉg~  ã                   ó¼  — d Z ddlZddlZ	 ddlZddlZn# e$ r ddlmZ ddlm	Z Y nw xY wddl
Z
d„ Zd„ Z e¦   «         Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d	„ d
ej        ej        ¦  «        Zedk    r×ddlZ	  eej        d         ¦  «        Zn# eef$ r dZY nw xY w ej         ee
j        de¦  «        ¦  «        Z e de !                    d¦  «         "                    ¦   «          #                    ¦   «         z   ¦  «          e de !                    d¦  «         "                    ¦   «          #                    ¦   «         z   ¦  «         dS dS )zù
SocksiPy + urllib2 handler

version: 0.3
author: e<e@tr0ll.in>

This module provides a Handler which you can use with urllib2 to allow it to tunnel your connection through a socks.sockssocket socket, with out monkey patching the original socket...
é    Nc                 óX   — |                       ¦   «         }|                     |¦  «         |S ©N)ÚcopyÚupdate)ÚaÚbÚds      úX/var/www/html/nodeJS/PythonScripts/venv3.11/lib/python3.11/site-packages/sockshandler.pyÚ
merge_dictr      s#   € Ø	�Š‰Œ€AØ‡H‚HˆQ�K„K€KØ€Hó    c                 ó–   — 	 d| v r t          j        t           j        | ¦  «         nd| v rt          j        | ¦  «         ndS dS #  Y dS xY w)Nú:ú.FT)ÚsocketÚ	inet_ptonÚAF_INET6Ú	inet_aton)Úss    r
   Úis_ipr      sa   € ð
Ø�!ˆ8ˆ8ÝÔ�Vœ_¨aÑ0Ô0Ð0Ð0Ø�AˆXˆXÝÔ˜QÑÔÐÐà�5ð ˆtøðØˆuˆuøøøs   ‚=A ÁAc                   ó   — e Zd Zdd„Zd„ ZdS )ÚSocksiPyConnectionNTc                 óT   — ||||||f| _         t          j        j        | g|¢R i |¤Ž d S r   )Ú	proxyargsÚhttplibÚHTTPConnectionÚ__init__©	ÚselfÚ	proxytypeÚ	proxyaddrÚ	proxyportÚrdnsÚusernameÚpasswordÚargsÚkwargss	            r
   r   zSocksiPyConnection.__init__+   s@   € Ø# Y°	¸4ÀÈ8ÐTˆŒÝÔÔ'¨Ð>¨tÐ>Ð>Ð>°vÐ>Ð>Ð>Ð>Ð>r   c                 óœ  — | j         \  }}}}}}|o|t          v}	 	 t          j        | j        | j        f| j        d ||||||t          j        t          j	        dff¦
  «
        }nb# t          j
        $ rO}|rBdt          |¦  «        v r1t          | j        ¦  «        sd}t                               |¦  «         n‚ Y d }~nd }~ww xY wŒª|| _        d S )NTé   Ú0x5bF)r   Úsocks4_no_rdnsÚsocksÚcreate_connectionÚhostÚportÚtimeoutr   ÚIPPROTO_TCPÚTCP_NODELAYÚSOCKS4ErrorÚstrr   ÚaddÚsock)	r   r   r    r!   r"   r#   r$   r5   Úes	            r
   ÚconnectzSocksiPyConnection.connect/   s  € ØFJÄnÑCˆ�I˜y¨$°¸(ØÐ7˜	­Ð7ˆð	ðÝÔ.Ø”Y ¤	Ð*¨D¬L¸$Ø˜y¨)°T¸8ÀXÝÔ(­&Ô*<¸aÐ@ÐBñDô D�ð øÝÔ$ð ð ð Øð ˜F¥c¨!¡f¤fÐ,Ð,µU¸4¼9Ñ5EÔ5EÐ,ð !�DÝ"×&Ò& yÑ1Ô1Ð1Ð1àð 2Ð1Ð1Ð1Ð1øøøøðøøøð	ð ˆŒ	ˆ	ˆ	s   œAA# Á#CÁ2AB<Â<C©NTNN©Ú__name__Ú
__module__Ú__qualname__r   r7   © r   r
   r   r   *   s7   € € € € € ð?ð ?ð ?ð ?ðð ð ð ð r   r   c                   ó   — e Zd Zdd„Zd„ ZdS )ÚSocksiPyConnectionSNTc                 óT   — ||||||f| _         t          j        j        | g|¢R i |¤Ž d S r   )r   r   ÚHTTPSConnectionr   r   s	            r
   r   zSocksiPyConnectionS.__init__D   s@   € Ø# Y°	¸4ÀÈ8ÐTˆŒÝÔÔ(¨Ð?°Ð?Ð?Ð?¸Ð?Ð?Ð?Ð?Ð?r   c                 óº  — t                                | ¦  «         | j                             | j        | j        ¬¦  «        | _        | j        j        s‡| j        r‚	 t          j	        | j         
                    ¦   «         | j        ¦  «         d S # t          $ r? | j                             t          j        ¦  «         | j                             ¦   «          ‚ w xY wd S d S )N)Úserver_hostname)r   r7   Ú_contextÚwrap_socketr5   r-   Úcheck_hostnameÚ_check_hostnameÚsslÚmatch_hostnameÚgetpeercertÚ	ExceptionÚshutdownr   Ú	SHUT_RDWRÚclose)r   s    r
   r7   zSocksiPyConnectionS.connectH   sØ   € Ý×"Ò" 4Ñ(Ô(Ð(Ø”M×-Ò-¨d¬iÈÌÐ-ÑSÔSˆŒ	ØŒ}Ô+ð 	°Ô0Dð 	ðÝÔ" 4¤9×#8Ò#8Ñ#:Ô#:¸D¼IÑFÔFÐFÐFÐFøÝð ð ð Ø”	×"Ò"¥6Ô#3Ñ4Ô4Ð4Ø”	—’Ñ!Ô!Ð!Øðøøøð	ð 	ð 	ð 	s   Á1B ÂA	Cr8   r9   r=   r   r
   r?   r?   C   s;   € € € € € ð@ð @ð @ð @ð	ð 	ð 	ð 	ð 	r   r?   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚSocksiPyHandlerc                 ó`   — || _         || _        t          j                             | ¦  «         d S r   )r%   ÚkwÚurllib2ÚHTTPHandlerr   )r   r%   r&   s      r
   r   zSocksiPyHandler.__init__T   s-   € ØˆŒ	ØˆŒÝÔ×$Ò$ TÑ*Ô*Ð*Ð*Ð*r   c                 ó<   ‡ — dˆ fd„	}‰                       ||¦  «        S )Nr   c                 ó\   •— t          ‰j        |¦  «        }t          ‰j        | ||dœ|¤Ž}|S ©N)r-   r.   r/   )r   rR   r   r%   ©r-   r.   r/   r&   rR   Úconnr   s         €r
   Úbuildz(SocksiPyHandler.http_open.<locals>.buildZ   s8   ø€ Ý˜DœG VÑ,Ô,ˆBÝ% t¤y°tÀ$ÐPWÐ^Ð^Ð[]Ð^Ð^ˆDØˆKr   ©Nr   ©Údo_open©r   ÚreqrZ   s   `  r
   Ú	http_openzSocksiPyHandler.http_openY   ó7   ø€ ð	ð 	ð 	ð 	ð 	ð 	ð �|Š|˜E 3Ñ'Ô'Ð'r   c                 ó<   ‡ — dˆ fd„	}‰                       ||¦  «        S )Nr   c                 ó\   •— t          ‰j        |¦  «        }t          ‰j        | ||dœ|¤Ž}|S rW   )r   rR   r?   r%   rX   s         €r
   rZ   z)SocksiPyHandler.https_open.<locals>.builda   s8   ø€ Ý˜DœG VÑ,Ô,ˆBÝ&¨¬	¸À4ÐQXÐ_Ð_Ð\^Ð_Ð_ˆDØˆKr   r[   r\   r^   s   `  r
   Ú
https_openzSocksiPyHandler.https_open`   ra   r   N)r:   r;   r<   r   r`   rd   r=   r   r
   rP   rP   S   sA   € € € € € ð+ð +ð +ð
(ð (ð (ð(ð (ð (ð (ð (r   rP   Ú__main__r(   iZ#  Ú	localhostzHTTP: zhttp://httpbin.org/ipzHTTPS: zhttps://httpbin.org/ip)$Ú__doc__r   rH   rS   r   ÚImportErrorÚurllib.requestÚrequestÚhttp.clientÚclientr+   r   r   Úsetr*   r   r   rA   r?   rT   ÚHTTPSHandlerrP   r:   ÚsysÚintÚargvr.   Ú
ValueErrorÚ
IndexErrorÚbuild_openerÚPROXY_TYPE_SOCKS5ÚopenerÚprintÚopenÚreadÚdecoder=   r   r
   ú<module>r{      sD  ððð ð €€€Ø 
€
€
€
ð"Ø€N€N€NØ€N€N€N€NøØð "ð "ð "Ø$Ð$Ð$Ð$Ð$Ð$Ø!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ð"øøøð €€€ðð ð ð
ð ð ð �‘”€ðð ð ð ð ˜Ô/ñ ô ð ð2ð ð ð ð ˜'Ô1ñ ô ð ð (ð (ð (ð (ð (�gÔ)¨7Ô+?ñ (ô (ð (ð( ˆzÒÐØ€J€J€JðØˆs�3”8˜A”;ÑÔˆˆøØ˜
Ð#ð ð ð Øˆˆˆðøøøà!ˆWÔ! / /°%Ô2IÈ;ÐX\Ñ"]Ô"]Ñ^Ô^€FØ	€Eˆ(�V—[’[Ð!8Ñ9Ô9×>Ò>Ñ@Ô@×GÒGÑIÔIÑ
IÑJÔJÐJØ	€Eˆ)�f—k’kÐ":Ñ;Ô;×@Ò@ÑBÔB×IÒIÑKÔKÑ
KÑLÔLÐLÐLÐLð Ðs   Œ •)¨)Â
B! Â!	B-Â,B-