[英]How do I use python Requests with a Putty SOCKS Proxy on Windows?
我已經設置了Putty以創建到服務器的Socks代理。 我可以使用Chrome和Firefox來訪問主機。 使用請求時,出現錯誤,似乎表明與Putty的連接有問題。 我嘗試設置HTTP_PROXY env變量,並嘗試傳遞proxies參數。 env變量方法產生“無法解析”錯誤,而代理方法產生超過最大重試次數。
設置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)
時,傳遞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請求時,看不到服務器的任何流量。 因此,我懷疑請求中的代理機制沒有進入我的Putty會話。
有人對這里會發生什么有任何提示或建議嗎? 我一直用谷歌搜索直到手指受傷!
提前致謝!!!
這是使用Firefox時服務器的外觀……
---------------- cmd輸出-------------------------
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'
>>>
油灰設置...
請求目前不支持SOCKS代理。 我們希望在底層的urllib3
庫中獲得支持,但是沒有明確的時間表。 此問題已對此進行了跟蹤。
2016年編輯 :從請求2.10開始,請求現在支持SOCKS代理。 您可以通過額外安裝socks
來獲得支持: pip install requests[socks]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.