2015-08-21 106 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。 –