PATH:
usr
/
lib
/
python3.9
/
site-packages
#!/usr/bin/env python """ 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... """ import socket import ssl try: import urllib2 import httplib except ImportError: # Python 3 import urllib.request as urllib2 import http.client as httplib import socks # $ pip install PySocks def merge_dict(a, b): d = a.copy() d.update(b) return d def is_ip(s): try: if ':' in s: socket.inet_pton(socket.AF_INET6, s) elif '.' in s: socket.inet_aton(s) else: return False except: return False else: return True socks4_no_rdns = set() class SocksiPyConnection(httplib.HTTPConnection): def __init__(self, proxytype, proxyaddr, proxyport=None, rdns=True, username=None, password=None, *args, **kwargs): self.proxyargs = (proxytype, proxyaddr, proxyport, rdns, username, password) httplib.HTTPConnection.__init__(self, *args, **kwargs) def connect(self): (proxytype, proxyaddr, proxyport, rdns, username, password) = self.proxyargs rdns = rdns and proxyaddr not in socks4_no_rdns while True: try: sock = socks.create_connection( (self.host, self.port), self.timeout, None, proxytype, proxyaddr, proxyport, rdns, username, password, ((socket.IPPROTO_TCP, socket.TCP_NODELAY, 1),)) break except socks.SOCKS4Error as e: if rdns and "0x5b" in str(e) and not is_ip(self.host): # Maybe a SOCKS4 server that doesn't support remote resolving # Let's try again rdns = False socks4_no_rdns.add(proxyaddr) else: raise self.sock = sock class SocksiPyConnectionS(httplib.HTTPSConnection): def __init__(self, proxytype, proxyaddr, proxyport=None, rdns=True, username=None, password=None, *args, **kwargs): self.proxyargs = (proxytype, proxyaddr, proxyport, rdns, username, password) httplib.HTTPSConnection.__init__(self, *args, **kwargs) def connect(self): SocksiPyConnection.connect(self) self.sock = self._context.wrap_socket(self.sock, server_hostname=self.host) if not self._context.check_hostname and self._check_hostname: try: ssl.match_hostname(self.sock.getpeercert(), self.host) except Exception: self.sock.shutdown(socket.SHUT_RDWR) self.sock.close() raise class SocksiPyHandler(urllib2.HTTPHandler, urllib2.HTTPSHandler): def __init__(self, *args, **kwargs): self.args = args self.kw = kwargs urllib2.HTTPHandler.__init__(self) def http_open(self, req): def build(host, port=None, timeout=0, **kwargs): kw = merge_dict(self.kw, kwargs) conn = SocksiPyConnection(*self.args, host=host, port=port, timeout=timeout, **kw) return conn return self.do_open(build, req) def https_open(self, req): def build(host, port=None, timeout=0, **kwargs): kw = merge_dict(self.kw, kwargs) conn = SocksiPyConnectionS(*self.args, host=host, port=port, timeout=timeout, **kw) return conn return self.do_open(build, req) if __name__ == "__main__": import sys try: port = int(sys.argv[1]) except (ValueError, IndexError): port = 9050 opener = urllib2.build_opener(SocksiPyHandler(socks.PROXY_TYPE_SOCKS5, "localhost", port)) print("HTTP: " + opener.open("http://httpbin.org/ip").read().decode()) print("HTTPS: " + opener.open("https://httpbin.org/ip").read().decode())
[+]
pkg_resources
[-] sockshandler.py
[edit]
[+]
pyudev-0.22.0-py3.9.egg-info
[+]
html2text
[+]
sepolicy-3.6-py3.9.egg-info
[+]
chardet-4.0.0.dist-info
[+]
isc
[+]
_distutils_hack
[-] pexpect-4.8.0-py3.9.egg-info
[edit]
[-] magic.py
[edit]
[-] socks.py
[edit]
[+]
dnf-plugins
[+]
ply-3.11-py3.9.egg-info
[+]
requests-2.25.1.dist-info
[+]
setuptools-53.0.0.dist-info
[-] pyinotify.py
[edit]
[+]
sos
[-] pyparsing.py
[edit]
[+]
dnfpluginscore
[+]
pyinotify-0.9.6-py3.9.egg-info
[+]
six-1.15.0.dist-info
[+]
html2text-2020.1.16-py3.9.egg-info
[+]
nftables-0.1.dist-info
[+]
pyudev
[+]
urllib3-1.26.5-py3.9.egg-info
[+]
file_magic-0.4.0-py3.9.egg-info
[+]
nftables
[+]
pexpect
[+]
firewall
[+]
idna
[-] isc-2.0-py3.9.egg-info
[edit]
[+]
requests
[+]
dateutil
[+]
pygtkcompat
[+]
chardet
[+]
distro-1.5.0-py3.9.egg-info
[+]
python_linux_procfs-0.7.3-py3.9.egg-info
[+]
gi
[+]
..
[+]
dnf
[+]
PySocks-1.7.1-py3.9.egg-info
[-] six.py
[edit]
[+]
procfs
[-] seobject.py
[edit]
[+]
sepolicy
[+]
pip
[+]
sepolgen
[+]
tuned
[-] distro.py
[edit]
[+]
urllib3
[+]
pip-21.3.1.dist-info
[+]
dns
[+]
__pycache__
[+]
sos-4.10.1-py3.9.egg-info
[-] ptyprocess-0.6.0-py3.9.egg-info
[edit]
[+]
dnspython-2.6.1-py3.9.egg-info
[+]
idna-2.10-py3.9.egg-info
[+]
ptyprocess
[+]
python_dateutil-2.9.0.post0.dist-info
[+]
pyparsing-2.4.7.dist-info
[-] distutils-precedence.pth
[edit]
[+]
setuptools
[+]
ply