【问题标题】:Parallel SOCKS5 proxies并行 SOCKS5 代理
【发布时间】:2016-04-09 12:49:19
【问题描述】:

您好,我需要从不同的 IP 执行多个并行请求,因此我有两个使用 stem 模块启动的 tor 实例。假设一个在127.0.0.1:9150 运行,第二个在127.0.0.1:9050 运行。

如果我想使用代理,我会这样做

    socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, '127.0.0.1', 9050)
    socket.socket = socks.socksocket

并通过

检查我的IP
    resp = requests.get('https://api.ipify.org?format=json', timeout=5)
    j = json.loads(resp.content)
    print('New IP: '+ j['ip'])

这适用于单个代理,但我能否以某种方式指定requests.get() 方法应使用两个代理中的哪一个?可能以某种方式限制了代码第一部分的范围? 谢谢

【问题讨论】:

    标签: python sockets tor


    【解决方案1】:

    这里有一个替代解决方案,而不是猴子修补 sockets 模块。

    requests 模块已经支持使用 http 代理,如 here 所述;例如:

    import requests
    
    proxies = {
      'http': 'http://10.10.1.10:3128',
      'https': 'http://10.10.1.10:1080',
    }
    
    requests.get('http://example.org', proxies=proxies)
    

    当然,你想使用 SOCKS 代理,它没有 本机支持。但是,那 polipo http 代理知道如何与上游 SOCKS 代理通信,因此可以 用于在requests 模块支持的内容和 您的上游 tor 代理。

    除了你的两个 tor 代理之外,你还要运行两个 polipo 代理, 然后使用proxies 选项将请求指向一个或另一个 到各种requests 方法。

    您的 polipo 配置如下所示:

    socksParentProxy = localhost:9050
    socksProxyType = socks5
    

    这无需对sockets 进行补丁即可工作 模块或requests 模块。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-06
      • 2018-07-28
      • 1970-01-01
      • 2012-07-16
      相关资源
      最近更新 更多