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())
[+]
dnf-plugins
[+]
tuned
[+]
_distutils_hack
[+]
setroubleshoot-3.3.33.dist-info
[+]
pip
[-] prettytable.py
[edit]
[+]
pytz
[+]
ansible
[+]
cloud_init-24.4-py3.9.egg-info
[+]
__pycache__
[+]
nftables
[+]
pexpect
[+]
ptyprocess
[-] pyinotify.py
[edit]
[+]
attrs-20.3.0-py3.9.egg-info
[+]
gi
[+]
setuptools
[-] sockshandler.py
[edit]
[-] seobject.py
[edit]
[+]
dasbus
[+]
ply
[-] distro.py
[edit]
[+]
idna-2.10-py3.9.egg-info
[+]
requests-2.25.1.dist-info
[+]
requests
[+]
dns
[+]
urllib3
[+]
pygtkcompat
[-] configobj.py
[edit]
[+]
sepolicy
[-] configobj-5.0.6-py3.9.egg-info
[edit]
[-] socks.py
[edit]
[+]
chardet-4.0.0.dist-info
[+]
cockpit
[+]
dateutil
[+]
pyudev
[+]
html2text-2020.1.16-py3.9.egg-info
[+]
pyudev-0.22.0-py3.9.egg-info
[+]
sos
[+]
isc
[+]
prettytable-0.7.2-py3.9.egg-info
[+]
tracer
[+]
six-1.15.0.dist-info
[-] validate.py
[edit]
[-] pyparsing.py
[edit]
[-] jsonpointer.py
[edit]
[+]
pkg_resources
[+]
python_dateutil-2.9.0.post0.dist-info
[+]
serial
[+]
jinja2
[+]
dnf
[+]
pycparser
[+]
cloudinit
[+]
pip-21.3.1.dist-info
[-] ptyprocess-0.6.0-py3.9.egg-info
[edit]
[+]
distro-1.5.0-py3.9.egg-info
[+]
resolvelib-0.5.4-py3.9.egg-info
[+]
procfs
[+]
setroubleshoot
[+]
jsonpatch-1.21-py3.9.egg-info
[+]
sepolgen
[+]
python_linux_procfs-0.7.3-py3.9.egg-info
[+]
urllib3-1.26.5-py3.9.egg-info
[+]
resolvelib
[+]
idna
[+]
attr
[+]
oauthlib
[+]
firewall
[+]
setuptools-53.0.0.dist-info
[+]
chardet
[+]
pycparser-2.20-py3.9.egg-info
[+]
PySocks-1.7.1-py3.9.egg-info
[-] _version.py
[edit]
[+]
ply-3.11-py3.9.egg-info
[+]
dasbus-1.5-py3.9.egg-info
[+]
jsonpointer-2.0-py3.9.egg-info
[+]
pyinotify-0.9.6-py3.9.egg-info
[+]
pyparsing-2.4.7.dist-info
[-] distutils-precedence.pth
[edit]
[+]
cockpit-344.dist-info
[+]
sos-4.10.2-py3.9.egg-info
[+]
sepolicy-3.6-py3.9.egg-info
[+]
oauthlib-3.1.1-py3.9.egg-info
[+]
ansible_core-2.14.18-py3.9.egg-info
[-] isc-2.0-py3.9.egg-info
[edit]
[+]
packaging-20.9.dist-info
[+]
dnfpluginscore
[+]
jsonschema-3.2.0-py3.9.egg-info
[-] pexpect-4.8.0-py3.9.egg-info
[edit]
[+]
pytz-2021.1-py3.9.egg-info
[+]
babel
[+]
jsonschema
[+]
nftables-0.1.dist-info
[+]
..
[-] magic.py
[edit]
[+]
file_magic-0.4.0-py3.9.egg-info
[+]
pyserial-3.4-py3.9.egg-info
[-] six.py
[edit]
[+]
passlib
[+]
html2text
[-] jsonpatch.py
[edit]
[+]
Babel-2.9.1-py3.9.egg-info
[+]
Jinja2-2.11.3-py3.9.egg-info
[+]
passlib-1.7.4.dist-info
[+]
packaging
[+]
dnspython-2.6.1-py3.9.egg-info