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连接失败,那就加上。
    """

     

 

posted @ 2024-01-02 11:55  CJTARRR  阅读(1009)  评论(0)    收藏  举报