python – 在Scrapy中禁用SSL证书验证
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 在Scrapy中禁用SSL证书验证,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2711字,纯文字阅读大概需要4分钟。
内容图文
![python – 在Scrapy中禁用SSL证书验证](/upload/InfoBanner/zyjiaocheng/809/81dbdfe8f71242c4893c25c3d074a5c8.jpg)
我目前正在努力解决与Scrapy有关的问题.每当我使用Scrapy刮取证书的CN值与服务器域名匹配的HTTPS站点时,Scrapy效果很好!另一方面,每当我尝试抓取证书的CN值与服务器的域名不匹配的网站时,我会得到以下内容:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/twisted/protocols/tls.py", line 415, in dataReceived
self._write(bytes)
File "/usr/local/lib/python2.7/dist-packages/twisted/protocols/tls.py", line 554, in _write
sent = self._tlsConnection.send(toSend)
File "/usr/local/lib/python2.7/dist-packages/OpenSSL/SSL.py", line 1270, in send
result = _lib.SSL_write(self._ssl, buf, len(buf))
File "/usr/local/lib/python2.7/dist-packages/OpenSSL/SSL.py", line 926, in wrapper
callback(Connection._reverse_mapping[ssl], where, return_code)
--- <exception caught here> ---
File "/usr/local/lib/python2.7/dist-packages/twisted/internet/_sslverify.py", line 1055, in infoCallback
return wrapped(connection, where, ret)
File "/usr/local/lib/python2.7/dist-packages/twisted/internet/_sslverify.py", line 1154, in _identityVerifyingInfoCallback
verifyHostname(connection, self._hostnameASCII)
File "/usr/local/lib/python2.7/dist-packages/service_identity/pyopenssl.py", line 30, in verify_hostname
obligatory_ids=[DNS_ID(hostname)],
File "/usr/local/lib/python2.7/dist-packages/service_identity/_common.py", line 235, in __init__
raise ValueError("Invalid DNS-ID.")
exceptions.ValueError: Invalid DNS-ID.
我尽可能多地查看了文档,据我所知,Scrapy没有办法禁用SSL证书验证.甚至Scrapy Request对象的文档(我假设这个功能所在的位置)也没有引用:
http://doc.scrapy.org/en/1.0/topics/request-response.html#scrapy.http.Request
https://github.com/scrapy/scrapy/blob/master/scrapy/http/request/init.py
也没有解决问题的Scrapy设置:
http://doc.scrapy.org/en/1.0/topics/settings.html
如果没有按源使用Scrapy并根据需要修改源代码,是否有人对如何禁用SSL证书验证有任何想法?
谢谢!
解决方法:
从您为the settings链接的文档中,您似乎可以修改DOWNLOAD_HANDLERS设置.
来自文档:
"""
A dict containing the request download handlers enabled by default in
Scrapy. You should never modify this setting in your project, modify
DOWNLOAD_HANDLERS instead.
"""
DOWNLOAD_HANDLERS_BASE = {
'file': 'scrapy.core.downloader.handlers.file.FileDownloadHandler',
'http': 'scrapy.core.downloader.handlers.http.HttpDownloadHandler',
'https': 'scrapy.core.downloader.handlers.http.HttpDownloadHandler',
's3': 'scrapy.core.downloader.handlers.s3.S3DownloadHandler',
}
然后在您的设置中,这样的事情:
"""
Configure your download handlers with something custom to override
the default https handler
"""
DOWNLOAD_HANDLERS = {
'https': 'my.custom.downloader.handler.https.HttpsDownloaderIgnoreCNError',
}
因此,通过为https协议定义自定义处理程序,您应该能够处理您所获得的错误,并允许scrapy继续其业务.
内容总结
以上是互联网集市为您收集整理的python – 在Scrapy中禁用SSL证书验证全部内容,希望文章能够帮你解决python – 在Scrapy中禁用SSL证书验证所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。