1

問題を解決するためにこのQ&A のすべてを試しましたが、それでもエラーが発生します。

私の最新の試みはLukasa のコメントに基づいており、私のコードは次のようになります。

import requests
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.poolmanager import PoolManager
import ssl

class MyAdapter(HTTPAdapter):
    def init_poolmanager(self, connections, maxsize, block=False):
        self.poolmanager = PoolManager(num_pools=connections,
                                       maxsize=maxsize,
                                       block=block,
                                       ssl_version=ssl.PROTOCOL_TLSv1)

proxy = 'https://78.130.136.2:8080'
g = 'https://www.google.com/'


s = requests.Session()
s.mount('https://', MyAdapter())

r = s.get(g, proxies={'https': proxy} )
print r.text.encode('utf-8')

私が受け取る完全なエラーは次のとおりです。

Traceback (most recent call last):
  File "/Users/Dionysis_Lorentzos/Projects/getter/proxy.py", line 30, in <module>
    r = s.get(g, proxies={'https': proxy}, verify=True )
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/sessions.py", line 347, in get
    return self.request('GET', url, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/sessions.py", line 335, in request
    resp = self.send(prep, **send_kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/sessions.py", line 438, in send
    r = adapter.send(request, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/adapters.py", line 331, in send
    raise SSLError(e)
requests.exceptions.SSLError: [Errno 8] _ssl.c:504: EOF occurred in violation of protocol

では、プロキシ経由でサイトのデータを取得するにはどうすればよいhttpsですか? (プロキシは私の Firefox で正常に動作します)

4

2 に答える 2

1

Requests on PyPI のすべてのバージョンでは、動詞HTTPSがサポートされていないため、プロキシを介したサイトのリクエストはサポートされていません。CONNECT2.0 のプレリリース ブランチにはこのサポートがあり、私が試したすべてのプロキシで動作します。それを確認してこれで試してみたい場合は、カスタム アダプターも必要ありません。

それ以外の場合は、2.0 がリリースされるまで待つ必要があります

于 2013-09-08T14:04:43.923 に答える
0

httpプロキシのプロトコルとして使用する必要があります(ただし、それを使用httpsしています)

proxy = 'http://78.130.136.2:8080'

しかし、@ sigmavirus24 が言ったように、リクエストの現在のリリース バージョンには、http プロキシに関するいくつかの問題があります。この設定により、プロキシを使用できるようになります (すべてのプロキシではありませんが、このプロキシは特に機能します)。

注意: 現在のバージョンでは、データはあなたとプロキシの間で暗号化されません。

繰り返します: プロキシとそれの間のすべてとデータを読み取ることができます!

于 2013-09-08T15:30:53.440 に答える