2016-06-30 7 views
0

私が使用:私は次のコードを使用する場合、しかしrequest.get差()とurrlib.request.urlopen()のpython

requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645) 

import request 
r = request.get("https://example.com") 

Iは、次の例外を取得:

url = "https://www.example.com" 
request = urllib.request.urlopen(url) 

私は正しい応答[200]コードを返します。それはなぜそうですか?これらの2つの方法の違いは何ですか?どちらを優先するのですか?

答えて

0

前者を使用してください: なぜそれが良いのかのソースを追加します。 はとにかくあなたはHTTPSリクエスト用のSSL証明書の検証からrequestを防ぐためにFalseとしてverifyを設定する必要があります。

import request 
r = request.get("https://example.com", verify=False) 

編集:

request.getとの差()とurrlib.request.urlopenを( )のpython

What are the differences between the urllib, urllib2, and requests module?

+0

私が間違っている場合は、request.get()[default verify = trueを指定して]証明書の検証を試み、urllib.request.urlopen()はそれをしません。 –

+0

https接続を使用して明示的に行われています。https://docs.python.org/2/library/httplib.html#httplib.HTTPSConnection – wolframalpha

+0

ありがとうございました。常にrequest.get/postを使用してssl検証を実行する方が良いです。解明してくれてありがとう! –

0

これは、example.comに有効な証明書がないために発生します。そのため、https接続が信頼されないという警告が表示されます。あなたがサーバーを信頼するなら、あなたはwolframalphaが提案したことを行うべきです。

関連する問題