a
G2]~ @ s8 d Z ddlZddlZzddlZddlZW n* eyR ddlmZ ddlm Z Y n0 ddl
Z
dd Zdd Ze
ZG dd dejZG d d
d
ejZG dd dejejZed
kr4ddlZzeejd ZW n eefy dZY n0 eee
jdeZe de!d" # e de!d" # dS )z
SocksiPy + urllib2 handler
version: 0.3
author: e
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 C s | }|| |S N)copyupdate)abd r 0/usr/lib/python3.9/site-packages/sockshandler.py
merge_dict s
r
c C sN z6d| v rt t j| nd| v r.t | nW dS W n Y dS 0 dS d S )N:.FT)socketZ inet_ptonZAF_INET6Z inet_aton)sr r r is_ip s
r c @ s e Zd ZdddZdd ZdS )SocksiPyConnectionNTc O s0 ||||||f| _ tjj| g|R i | d S r ) proxyargshttplibHTTPConnection__init__ self proxytype proxyaddr proxyportrdnsusernamepasswordargskwargsr r r r + s zSocksiPyConnection.__init__c C s | j \}}}}}}|o|tv}z:t| j| jf| jd ||||||tjtj dff
}W qW q tj
y } z8|rdt|v rt| jsd}t
| n W Y d }~qd }~0 0 q|| _d S )N Z0x5bF)r socks4_no_rdnssocksZcreate_connectionhostporttimeoutr
ZIPPROTO_TCPZTCP_NODELAYZSOCKS4Errorstrr addsock) r r r r r r r r' er r r connect/ s zSocksiPyConnection.connect)NTNN__name__
__module____qualname__r r) r r r r r * s
r c @ s e Zd ZdddZdd ZdS )SocksiPyConnectionSNTc O s0 ||||||f| _ tjj| g|R i | d S r )r r HTTPSConnectionr r r r r r D s zSocksiPyConnectionS.__init__c C sx t | | jj| j| jd| _| jjst| jrtzt | j
| j W n, tyr | jt
j | j Y n0 d S )N)Zserver_hostname)r r) Z_contextZwrap_socketr' r" Zcheck_hostnameZ_check_hostnamesslZmatch_hostnameZgetpeercert ExceptionZshutdownr
Z SHUT_RDWRcloser r r r r) H s
zSocksiPyConnectionS.connect)NTNNr* r r r r r. C s
r. c @ s$ e Zd Zdd Zdd Zdd ZdS )SocksiPyHandlerc O s || _ || _tj| d S r )r kwurllib2HTTPHandlerr )r r r r r r r T s zSocksiPyHandler.__init__c s d fdd } ||S )Nr c s( t j|}t j| ||d|}|S N)r" r# r$ )r
r5 r r r" r# r$ r r5 Zconnr3 r r buildZ s z(SocksiPyHandler.http_open..build)Nr Zdo_openr Zreqr: r r3 r http_openY s zSocksiPyHandler.http_openc s d fdd } ||S )Nr c s( t j|}t j| ||d|}|S r8 )r
r5 r. r r9 r3 r r r: a s z)SocksiPyHandler.https_open..build)Nr r; r<