簡體   English   中英

如何在Windows上將Python請求與Putty SOCKS代理一起使用?

[英]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時服務器的外觀……

私有服務器上的Tomcat

---------------- 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM