2015-08-21 90 views
0

我試圖使用請求包從Python來訪問這個網站:當我運行此命令https://egov.uscis.gov/casestatus/landing.doSSL證書下載

requests.get('https://egov.uscis.gov/casestatus/landing.do') 

當認證驗證失敗我平時SSL錯誤..

通讀計算器並採用以下解決方案之一:下載(.crt)中的證書,然後使用openssl轉換爲.pem文件。然後我將這個.pem文件中的內容複製到cacert.pem的末尾。然而,這沒有奏效。

>>> requests.get('https://egov.uscis.gov/casestatus/landing.do') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Users\Sandra\Anaconda\lib\site-packages\requests\api.py", line 69, in get 
    return request('get', url, params=params, **kwargs) 
    File "C:\Users\Sandra\Anaconda\lib\site-packages\requests\api.py", line 50, in request 
    response = session.request(method=method, url=url, **kwargs) 
    File "C:\Users\Sandra\Anaconda\lib\site-packages\requests\sessions.py", line 465, in request 
    resp = self.send(prep, **send_kwargs) 
    File "C:\Users\Sandra\Anaconda\lib\site-packages\requests\sessions.py", line 573, in send 
    r = adapter.send(request, **kwargs) 
    File "C:\Users\Sandra\Anaconda\lib\site-packages\requests\adapters.py", line 431, in send 
    raise SSLError(e, request=request) 
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581) 

任何指針,我怎麼能夠克服這個不訴諸verify=False

也有在下載通過https://superuser.com/a/97203https://superuser.com/a/176721文件有什麼區別?

由於我對requests.get('https://www.google.com')沒有問題,其他網站是否對您下載的證書設置了限制?

回答

0

有三種方式設置CA證書:

  • $ pip install certifi然後
    >>> requests.get(url, verify=certifi.where())

  • >>> requests.get(url, verify='/path/to/cert_bundle_file')

  • >>> os.environ['REQUESTS_CA_BUNDLE'] = '/path/to/cert_bundle_file'
    >>> requests.get(url)

+0

以上都不是。我現在的問題是我正確下載證書:我目前正在使用這個建議 - > http://superuser.com/a/97203。 –