gpt4 book ai didi

python - 如何在 Windows 上将 python 请求与 Putty SOCKS 代理一起使用?

转载 作者:可可西里 更新时间:2023-11-01 11:53:46 26 4
gpt4 key购买 nike

我已经设置 Putty 来创建服务器的 Socks 代理。我可以使用 Chrome 和 Firefox 访问主机。当我使用请求时,我收到一条错误消息,似乎表明与 Putty 的连接出现问题。我尝试设置 HTTP_PROXY env 变量并尝试传递代理参数。环境变量方法产生“解析失败”错误,代理方法产生超过最大重试次数。

调用 requests.get("http://10.122.116.17:8080/") 时设置环境会产生此错误

requests.packages.urllib3.exceptions.LocationParseError: Failed to parse: Failed to parse: "localhost:1088"

调用 requests.get("http://10.122.116.17:8080/",proxies=proxies) 时传递代理参数会产生此错误

requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=1088): Max retries exceeded with url: http://10.122.116.17:8080/ (Caused by <class 'httplib.BadStatusLine'>: '')

我已经安装了 Wireshark 并在我的代理服务器上进行过滤,该服务器位于 216.255.67.119。当我运行 Firefox 时,我看到了到该地址的流量。当我运行 Python Requests 时,我没有看到任何到服务器的流量。所以我怀疑请求中的代理机制没有进入我的 Putty session 。

有没有人对这里可能发生的事情有任何提示或建议?我用谷歌搜索直到我的手指受伤!

提前致谢!!!

这是我使用 Firefox 时服务器的样子......

Tomcat on Private Server

---------------- 命令输出------------------------

C:\Users\patman>set HTTP_PROXY="localhost:1088"
C:\Users\patman>echo %HTTP_PROXY%
"localhost:1088"
C:\Users\patman>set HTTPS_PROXY="localhost:1088"
C:\Users\patman>python
Enthought Python Distribution -- www.enthought.com
Version: 7.3-2 (64-bit)

Python 2.7.3 |EPD 7.3-2 (64-bit)| (default, Apr 12 2012, 15:20:16) [MSC v.1500 64 bit (AMD64)] on win32
Type "credits", "demo" or "enthought" for more information.
>>> import requests
>>> requests.get("http://10.122.116.17:8080/")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\requests-1.2.0-py2.7.egg\requests\api.py",
line 55, in get
return request('get', url, **kwargs)
File "C:\Python27\lib\site-packages\requests-1.2.0-py2.7.egg\requests\api.py",
line 44, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Python27\lib\site-packages\requests-1.2.0-py2.7.egg\requests\sessions
.py", line 346, in request
resp = self.send(prep, **send_kwargs)
File "C:\Python27\lib\site-packages\requests-1.2.0-py2.7.egg\requests\sessions
.py", line 449, in send
r = adapter.send(request, **kwargs)
File "C:\Python27\lib\site-packages\requests-1.2.0-py2.7.egg\requests\adapters
.py", line 263, in send
conn = self.get_connection(request.url, proxies)
File "C:\Python27\lib\site-packages\requests-1.2.0-py2.7.egg\requests\adapters
.py", line 188, in get_connection
conn = ProxyManager(self.poolmanager.connection_from_url(proxy))
File "C:\Python27\lib\site-packages\requests-1.2.0-py2.7.egg\requests\packages
\urllib3\poolmanager.py", line 122, in connection_from_url
u = parse_url(url)
File "C:\Python27\lib\site-packages\requests-1.2.0-py2.7.egg\requests\packages
\urllib3\util.py", line 156, in parse_url
raise LocationParseError("Failed to parse: %s" % url)
requests.packages.urllib3.exceptions.LocationParseError: Failed to parse: Failed to parse: "localhost:1088"

>>> >>> proxies = {
... "http": "localhost:1088",
... "https": "localhost:1088",
... }
>>> requests.get("http://10.122.116.17:8080/",proxies=proxies)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\requests-1.2.0-py2.7.egg\requests\api.py",
line 55, in get
return request('get', url, **kwargs)
File "C:\Python27\lib\site-packages\requests-1.2.0-py2.7.egg\requests\api.py",
line 44, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Python27\lib\site-packages\requests-1.2.0-py2.7.egg\requests\sessions
.py", line 346, in request
resp = self.send(prep, **send_kwargs)
File "C:\Python27\lib\site-packages\requests-1.2.0-py2.7.egg\requests\sessions
.py", line 449, in send
r = adapter.send(request, **kwargs)
File "C:\Python27\lib\site-packages\requests-1.2.0-py2.7.egg\requests\adapters
.py", line 318, in send
raise ConnectionError(e)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=1
088): Max retries exceeded with url: http://10.122.116.17:8080/ (Caused by <clas
s 'httplib.BadStatusLine'>: '')
>>> requests.__version__
'1.2.0'
>>> import urllib3
>>> urllib3.__version__
'1.7.1'
>>>

腻子设置... enter image description here

最佳答案

Requests 目前不支持 SOCKS 代理。我们希望在底层 urllib3 库中获得支持,但没有明确的时间框架。它由 this issue 跟踪.

2016 年编辑:从 Requests 2.10 开始,Requests 现在支持 SOCKS 代理。您可以通过安装 socks extra 获得支持:pip install requests[socks]

关于python - 如何在 Windows 上将 python 请求与 Putty SOCKS 代理一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22569413/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com