Nettacker/nettacker/core/socks_proxy.py

42 lines
1.3 KiB
Python

import socket
def getaddrinfo(*args):
"""
same getaddrinfo() used in socket except its resolve addresses with socks proxy
Args:
args: *args
Returns:
getaddrinfo
"""
return [(socket.AF_INET, socket.SOCK_STREAM, 6, "", (args[0], args[1]))]
def set_socks_proxy(socks_proxy):
if socks_proxy:
import socks
socks_version = socks.SOCKS5 if socks_proxy.startswith("socks5://") else socks.SOCKS4
socks_proxy = socks_proxy.split("://")[1] if "://" in socks_proxy else socks_proxy
if "@" in socks_proxy:
socks_username = socks_proxy.split(":")[0]
socks_password = socks_proxy.split(":")[1].split("@")[0]
socks.set_default_proxy(
socks_version,
str(socks_proxy.rsplit("@")[1].rsplit(":")[0]), # hostname
int(socks_proxy.rsplit(":")[-1]), # port
username=socks_username,
password=socks_password,
)
else:
socks.set_default_proxy(
socks_version,
str(socks_proxy.rsplit(":")[0]), # hostname
int(socks_proxy.rsplit(":")[1]), # port
)
return socks.socksocket, getaddrinfo
else:
return socket.socket, socket.getaddrinfo