【发布时间】:2018-05-21 12:14:34
【问题描述】:
在使用带有登录https://selfserve.publicmobile.ca/Overview/ 的请求的python 脚本时,我收到SSL“错误握手”错误
这是错误:
Traceback (most recent call last):
File "/home/pi/Documents/repos/private-repos/public-mobile-usage-scraping/pm_usage_scraping_to_db.py", line 55, in <module>
r = s.get(URL)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 526, in get
return self.request('GET', url, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 513, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 623, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 514, in send
raise SSLError(e, request=request)
SSLError: ("bad handshake: Error([('SSL routines', 'SSL3_GET_SERVER_CERTIFICATE', 'certificate verify failed')],)",)
我知道一种解决方法是设置 verify=False,但会让我容易受到攻击,尤其是因为我想通过它发送我的用户名和密码。
根据我的研究,该网站似乎缺少中间证书(请参阅https://www.ssllabs.com/ssltest/analyze.html?d=selfserve.publicmobile.ca)。
这是真的吗?我在哪里/如何找到中间证书以将其添加到我的代码中?
另外,如果我使用我的帐户凭据向该站点发出非 SSL 请求,考虑到我只是在我的家庭网络中这样做,会有多糟糕?
我是 python 和网络抓取的新手,对 SSL 和网络安全只有初步的了解。非常感谢您的帮助!
【问题讨论】:
-
请求必须经过您的家庭网络才能到达网站,因此非 SSL 请求会将其中的数据暴露给整个网络。
-
谢谢,这向我证实了我必须找到解决方案。在网上搜索了几个小时的解决方案,但无济于事:(
标签: python ssl web-scraping ssl-certificate python-requests