2012-01-27 3 views
3

좋아요 수에 대한 몇 페이지를 확인하는 재미있는 Python 스크립트를 작성했습니다. 파이썬 요청 모듈을 사용하고 있습니다. 아래에서 볼 수 있듯이 인증서에 관한 문제가있었습니다. 나는 웹 관련 프로그래밍에 익숙하지 않아, 내가해야 할 일이 무엇인지 분명하지 않다. r = requests.get("http://www.google.com/")이 올바르게 반환했습니다.Facebook 그래프 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 라이센스 번들을 다른 repo로 옮겨야했습니다.

나는 단지와 함께 다음을 시도 가장 pypi를 설치하고 그것을 잘 작동하는 것 같다 최신 certifi에서 :

>>> 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