我正在使用Python和请求来抓取一些内部页面。我已经关闭了SSL验证和警告。
requests.packages.urllib3.disable_warnings()
page = requests.get(url, verify=False)在某些服务器上,我收到一个SSL错误,我无法通过。
Traceback (most recent call last):
File "scraper.py", line 6, in <module>
page = requests.get(url, verify=False)
File "/cygdrive/c/Users/jfeocco/VirtualEnv/scraping/lib/python3.4/site-packages/requests/api.py", line 71, in get
return request('get', url, params=params, **kwargs)
File "/cygdrive/c/Users/jfeocco/VirtualEnv/scraping/lib/python3.4/site-packages/requests/api.py", line 57, in request
return session.request(method=method, url=url, **kwargs)
File "/cygdrive/c/Users/jfeocco/VirtualEnv/scraping/lib/python3.4/site-packages/requests/sessions.py", line 475, in request
resp = self.send(prep, **send_kwargs)
File "/cygdrive/c/Users/jfeocco/VirtualEnv/scraping/lib/python3.4/site-packages/requests/sessions.py", line 585, in send
r = adapter.send(request, **kwargs)
File "/cygdrive/c/Users/jfeocco/VirtualEnv/scraping/lib/python3.4/site-packages/requests/adapters.py", line 477, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: [SSL: SSL_NEGATIVE_LENGTH] dh key too small (_ssl.c:600)这在Cygwin、Windows和OSX中都会发生。我的研究暗示了服务器上过时的OpenSSL。我正在寻找一个理想的修复客户端。
编辑:我可以使用密码集来解决这个问题。
import requests
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS += 'HIGH:!DH:!aNULL'
try:
requests.packages.urllib3.contrib.pyopenssl.DEFAULT_SSL_CIPHER_LIST += 'HIGH:!DH:!aNULL'
except AttributeError:
# no pyopenssl support used / needed / available
pass
page = requests.get(url, verify=False)发布于 2020-08-11 14:45:58
requests库的核心开发团队中有人记录了将更改限制在一个或几个服务器上的方法:
如果您的代码与多个服务器交互,则不降低所有连接的安全性要求是有意义的,因为一台服务器的配置有问题。
密码对我来说很管用。也就是说,为CIPHERS使用我自己的值,'ALL:@SECLEVEL=1'。
https://stackoverflow.com/questions/38015537
复制相似问题