2012-01-27 20 views
3

私は、お気に入りの数ページを確認するための簡単なpythonスクリプトを書いています。私はPythonリクエストモジュールを使用しています。下記のように、証明書に関する問題がありました。私はウェブを使ったプログラミングにかなり慣れているので、私が何をすべきか分かりません。 r = requests.get("http://www.google.com/")が正しく返されました。Facebook graph GET request python request module-certificate verification failure

トレースバック(最新の呼び出しの最後): R = requests.get( "https://graph.facebook.com/cocacola") ルーチン:SSL3_GET_SERVER_CERTIFICATE:証明書は

感謝を確認に失敗しました!

答えて

3

OpenSSLから来ているようなエラーです。環境内で、要求によって証明書の場所を必要な証明書が含まれていないものに設定する構成があります。

要求は、証明書をチェックされるかもしれない可能な方法を検討してみてください。

  1. それはREQUESTS_CA_BUNDLE環境変数を使用して設定を探します。
  2. 環境変数CURL_CA_BUNDLEを使用してカールの互換性チェックをチェックします。
  3. certifiパッケージをインポートできる場合は、certifiリストをインポートしようとします。これらのいずれかが設定されている場合は、証明書を検証する場合、要求は、おそらくその構成を使用している

    env | egrep "REQUESTS_CA_BUNDLE|CURL_CA_BUNDLE" 
    

    REQUESTS_CA_BUNDLEの一つまたはCURL_CA_BUNDLEは、ご使用の環境にある場合

どうかを確認します。そうでない場合、要求はおそらくcertifiを使用しています。その場合、多分それは、それを更新する価値がある:それに失敗

pip install -U certifi 

は、それが検証ステップをスキップ持ってrequests.getverify=Falseを渡してみてください。私は実際の問題をそれをオフにする代わりに解決することをお勧めしますが、それはあなたがその問題の底に達するのを助けるかもしれません。

+0

verify=Falseが= Falseを検証しようとすることをお勧めします。私はcertifiを持っていて、egrepは何も見せなかった。だから私は実際の修正についてはわかりませんが、私の目的では検証はうまくいきませんでした。ありがとう! – AJcodez

2

certifiをインストールしましたか?最近、同様の問題も私を傷つけました。 GPLのライセンス問題のため、Kenneth Reitzと共同でSSLライセンスバンドルを別のレポに移す必要がありました。

私はちょうど最新certifiは、PyPIインストールからして、次を試してみましたが、正常に動作するようです:ライセンスの苦境について

>>> import requests 
>>> r = requests.get("https://graph.facebook.com/cocacola") 
>>> r 
<Response [200]> 

詳しい説明は、このGithub Issue threadフルに使用可能ですdiscolure:私はそのスレッドの元のポスターでした)。

新しいcertifiで修正されない場合は、Requests Github Issue pageをお試しください。彼らはとても敏感でフレンドリーなコミュニティです!

は編集:最新certifiはそれを修正しない場合、私は非常に他のポスターの提案は、トリックをした

+0

考えていただきありがとうございますが、certifiを再インストールしてもまだ動作しませんでした。 – AJcodez

+0

それを聞いて申し訳ありません!あなたが[Github Issues]ページ(https://github.com/kennethreitz/requests/issues)に問題を提出すれば、迅速な対応を受けることができます。 – mvanveen