【问题标题】:How do I make a requesocks request with socks5 username and password?如何使用 socks5 用户名和密码发出 requesocks 请求?
【发布时间】:2016-02-29 09:10:44
【问题描述】:

我目前使用它来连接 socks5 代理和 paramiko。

socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5,socks_hostname,socks_port, True, socks_username,socks_password)
paramiko.client.socket.socket = socks.socksocket
ssh = paramiko.SSHClient()

但是,我希望在 python 中使用 requesocks 和 paramiko 的相同代理设置发出一些请求,但找不到任何关于用户名和密码的内容。

此外,所有请求每次都使用不同的 socks 连接完成,全局设置可能会妨碍我的其他连接。

关于如何完成或是否有替代方法的任何想法? 我当前的实现非常多地使用 python 请求,所以从那里过渡到 requesocks 会很好,所以我不必重构所有东西。

注意:How to make python Requests work via socks proxy 不起作用,因为它不使用 socks5 身份验证。

【问题讨论】:

标签: python python-requests socks


【解决方案1】:

你可以使用PySocks

pip install PySocks

然后在你的python文件中:

import socket
import socks
import requests

socks.set_default_proxy(socks.SOCKS5, "127.0.0.1", 9050, True, 'socks5_user','socks_pass')
socket.socket = socks.socksocket
print(requests.get('http://ifconfig.me/ip').text)

它对我有用。但是我遇到了另一个问题,即为不同的请求会话使用不同的 socks5 代理。如果有人对此有解决方案,请提供。

【讨论】:

  • 正如你所说,这为我的应用程序设置了全局环境。这是一个后台任务,必须请求打开与外界的代理连接,因此每个请求都是一个新的代理连接。否则,这将起作用。
【解决方案2】:

现代方式:

pip install -U requests[socks]

然后

import requests

resp = requests.get('http://go.to', 
                    proxies=dict(http='socks5://user:pass@host:port',
                                 https='socks5://user:pass@host:port'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    相关资源
    最近更新 更多