Python设置全局socks5代理
-
安装pysocks
pip install pysocks
-
挂载/卸载代理方法
import socks
import socket
def up_global_proxy(host: str, port: int, username: str=None, password :str=None):
"""
开启全局代理
:return:
"""
# 生成socks代理配置
socks.setdefaultproxy(socks.SOCKS5, host, port, username=username, password=password)
# 全局替换socket
socket.socket = socks.socksocket
print(f"全局代理设置成功,当前代理为:{host}:{port}")
def off_global_proxy():
"""
关闭全局代理
:return:
"""
# 置空socks的代理配置
socks.setdefaultproxy()
# 恢复原生的socket
socket.socket = socket.SocketType
print("全局代理已关闭") -
补充说明:
"""
由于socket对象是动态创建的,
在代理设置之前创建的连接,不会使用代理,并且在全局替换之后,依然会保持原有的配置与客户端/服务端通信,即没有代理。
代理设置之后创建的新连接,即在全局替换之后创建的连接,才会使用代理。
"""
"""
"socket.socket = socket.SocketType",恢复原生socket的操作是可选的。
如果发现不加这个操作,某些库创建新的socket连接失败,那就加上。
"""