在 Scrapy 中禁用 SSL 证书验证

2023-08-22  本文已影响0人  朝畫夕拾

【问题标题】:Disable SSL certificate verification in Scrapy在 Scrapy 中禁用 SSL 证书验证

【问题描述】:

我在使用 Scrapy 时,每当我使用 Scrapy 抓取证书的 CN 值与服务器域名匹配的 HTTPS 站点时,Scrapy 都非常好用!但另一方面,每当我尝试抓取证书的 CN 值与服务器域名不匹配的站点时,我都会得到以下信息:

我查看了尽可能多的文档,据我所知,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 并根据需要修改源。

【问题讨论】:

从文档中看,您可以修改 DOWNLOAD_HANDLERS 或 DOWNLOAD_HANDLERS_BASE 设置以更改 scrapy 处理 https 的方式。从那里您可能必须创建自己的修改后的HttpDownloadHandler,以克服您收到的错误。

/me 头靠在桌子上。这当然看起来很有希望。您能否将其写成答案以便我接受,然后添加我用于其他人的代码以供将来参考?

标签: python ssl scrapy

【解决方案1】:

根据您为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 继续其业务。可以专门解决我遇到的问题。

上一篇 下一篇

猜你喜欢

热点阅读