2017-11-24 19 views
0

を私は urllib2.URLError取得しています:mechanize.browser.openの呼び出し中に エラー( '私のHTTPSサイト')。urllib2.URLErrorの取得:<urlopenエラーEOFがプロトコル(_ssl.c:661)に違反して発生した> Mechanizeのopenメソッドで

私はウェブを検索しましたが、何も私のために働いていませんでした。ここで

は私のコードです:

Traceback (most recent call last): 
    File "C:/Users/Himanshu/Desktop/UIET Rank system.py", line 27, in <module> 
    myBrowser.open("https://uwp.puchd.ac.in/common/viewmarks.aspx") 
    File "C:\Python27\lib\site-packages\mechanize\_mechanize.py", line 254, in open 
    return self._mech_open(url_or_request, data, timeout=timeout) 
    File "C:\Python27\lib\site-packages\mechanize\_mechanize.py", line 284, in _mech_open 
    response = UserAgentBase.open(self, request, data) 
    File "C:\Python27\lib\site-packages\mechanize\_opener.py", line 195, in open 
    response = urlopen(self, req, data) 
    File "C:\Python27\lib\site-packages\mechanize\_urllib2_fork.py", line 352, in _open 
    '_open', req) 
    File "C:\Python27\lib\site-packages\mechanize\_urllib2_fork.py", line 340, in _call_chain 
    result = func(*args) 
    File "C:\Python27\lib\site-packages\mechanize\_urllib2_fork.py", line 1215, in https_open 
    return self.do_open(conn_factory, req) 
    File "C:\Python27\lib\site-packages\mechanize\_urllib2_fork.py", line 1160, in do_open 
    raise URLError(err) 
urllib2.URLError: <urlopen error EOF occurred in violation of protocol (_ssl.c:661)> 

Process finished with exit code 1 

その他の情報:

import ssl 
print ssl.OPENSSL_VERSION 

output>> OpenSSL 1.0.2j 26 Sep 2016 

Pythonのバージョン

Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32 
をここで

import ssl 
try: 
    _create_unverified_https_context = ssl._create_unverified_context 
except AttributeError: 
    # Legacy Python that doesn't verify HTTPS certificates by default 
    pass 
else: 
    # Handle target environment that doesn't support HTTPS verification 
    ssl._create_default_https_context = _create_unverified_https_context 
import mechanize 
import operator 
from bs4 import BeautifulSoup 
import os 
myBrowser = mechanize.Browser() 
myBrowser.set_handle_robots(False) 
myBrowser.set_handle_refresh(False) 
myBrowser.open("https://uwp.puchd.ac.in/common/viewmarks.aspx") 

は、私が取得していますエラーです

このエラーを回避する方法はありますか?

注:

  • 私のアプリケーションの準備ができているので、私は、唯一の機械化を使用したいと、それ は前年を仕事に使用されるが、今では働いていないと私は再び全体のコードを変更する必要はありません。
  • 私はWindowsでPycharmを使用しています。
  • this webpage which I am trying to openを開こうとすると、クロムにも「安全でない接続」が表示され、ウェブページに進む必要があります。それは問題かもしれない。また、私はこのウェブページの証明書を持っていません。
  • 私のアプリケーションはセキュリティとは関係ないので、SSL検証をfalseに設定しても問題ありません(私は他の投稿からやってみましたが、私にとってはうまくいきませんでした)。アプリケーションが機能することだけが目標です。

答えて

1

このサイトの問題は、正常に電源を切ったため証明書の検証ではありません。代わりに、サイトではもはやセキュアではないと考えられる暗号、つまり3DESとRC4ベースの暗号だけがサポートされているという問題があります。 セキュリティ上の理由から、sslライブラリのデフォルトの暗号にはこれらの暗号が含まれていません。

これらの暗号のサポートを追加するには、デフォルトの暗号セットを手動で設定できます。次の行は、提供される暗号としてDES-CBC3-SHAを設定しています。こうすることで、壊れたサイトにアクセスできます。

ssl._DEFAULT_CIPHERS = ('DES-CBC3-SHA') 
myBrowser = mechanize.Browser() 
... 

この設定は、特定のサイトにのみ使用する必要があります。理論的には、すべてのサイトを処理するために_DEFAULT_CIPHERSのより大きな暗号セットを設定することも可能ですが、この特定のサイトには、DES-CBC3-SHAが含まれていてもTLSハンドシェイクで失敗するような問題があります。 DES-CBC3-SHAの前に新しい暗号が(GCMのように)提供されている場合は、提供された暗号セットが返されます。

+0

Steffen Ullrich、あなたの回答をありがとう、私は上記のステートメントを試みたが、それは動作しませんでした。それを動作させるためにいくつかの提案をお勧めしますか? –

+0

@darkPrince:それはPython 2.7.12で私のために働いていました。しかし、それは2.7.13で動作しないようです - 私はこれを詳しく見ていきます。 –

+0

@darkPrince:editを参照してください - 2.7.13でも動作します。 –

関連する問題