2016-07-22 27 views
2

一般的なSSLサイトを要求することはできません。エラーは[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failedです。しかし、それは失敗し続け、このようrequests.exceptions.SSLError:[SSL:CERTIFICATE_VERIFY_FAILED]証明書の検証に失敗しました

By default Requests bundles a set of root CAs that it trusts, sourced from the Mozilla trust store. However, these are only updated once for each Requests version. This means that if you pin a Requests version your certificates can become extremely out of date.

私はverify=Trueを使用する場合、それは店であるべき人気サイトであると述べてdocumentation

要求します。私も他のSSLアドレスで試してみましたが、このエラーでも失敗します。 https://www.example.comが人気の英国のニュースサイトなので、それはCAストアにあるべきこと

import requests 

headers = { 
    'User-agent': 'Mozilla/5.0' 
} 

proxies = { 
    'http' : 'http://1.2.3.4:80', 
    'https' : 'http://1.2.3.4:443' 
} 

r = requests.get('https://www.example.com', proxies=proxies, verify=True) 

注意。

Pythonのバージョン:のPython 2.7.11

要求バージョン:要求(2.10.0)

OS:Windows 8の

私は根本的に間違って何かをやっていますか?

+1

プロキシがSSL傍受を行っている可能性があります。サイトの設定によって問題が発生することもあります。古い証明書ストアで非常に古いバージョンの要求を使用している可能性もあります。残念ながら、あなたが間違っていた情報を伝えることは不可能です。なぜなら、未知のサイトにアクセスしているいくつかの未知のプロキシを持つ未知のバージョンのリクエストを使用しているだけだからです。それとは別に、httpとhttpsのプロキシ設定が異なり、ポート443などでhttpsプロキシが実行されていることは珍しいです。 –

+0

バージョンに追加しました。最新バージョンです。あなたが言及したようにプロキシが何らかの傍受をしている可能性があります。 –

+1

私はそれがSSL検査を使用しているプロキシでなければならないと決めました。 –

答えて

0
r = requests.get('https://www.example.com', proxies=proxies, verify=False) 

この行を変更すると動作します。

+0

確かにそれは動作しますが、私はなぜそれが検証されていないか知りたいです。 –

関連する問題