web-dev-qa-db-ja.com

エラー-urlopenエラー[Errno 8] _ssl.c:504:EOFプロトコル違反で発生しました

私の目的は、google検索語を入力した後、最初のページのすべてのリンクからhtmlを抽出することです。私はプロキシの背後で働いているので、これが私のアプローチです。

1.最初にmechanizeを使用してフォームに検索用語を入力し、プロキシとロボットを正しく設定しました。

2.リンクを抽出した後、私はurllib2.ProxyHandlerをグローバルに使用するオープナーを使用して、URLを個別に開きました。

しかし、これは私にこのエラーを与えます。それを理解することができません。

urlopen error [Errno 8] _ssl.c:504: EOF occurred in violation of protocol
22
Manoj

Pythonライブラリモジュールをコピーして編集する代わりに、ssl_versionキーワードパラメータをオーバーライドすることにより、sslモジュールのssl.wrap_socket()にパッチを適用できます。次のコードをそのまま使用できます。Putこれは、要求を行う前のプログラムの開始時です。

import ssl
from functools import wraps
def sslwrap(func):
    @wraps(func)
    def bar(*args, **kw):
        kw['ssl_version'] = ssl.PROTOCOL_TLSv1
        return func(*args, **kw)
    return bar

ssl.wrap_socket = sslwrap(ssl.wrap_socket)
21
chnrxn

これは既知のバグですが、このリンクのコメントには、その解決策がいくつか記載されています。それらを参照してください、あなたに役立つかもしれません バグのURL

4
NIlesh Sharma