Nettacker/core/socks_proxy.py

41 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