Как правильно проверить SSL сертификат в скрапе - PullRequest
0 голосов
/ 20 февраля 2020
import scrapy

from scrapy.crawler import CrawlerProcess


class AppInfoSpider(scrapy.Spider):
    name = "brickset_spider"

    def start_requests(self):
        # expect to pass
        yield scrapy.Request(url='https://pypi.org/project/Scrapy/1.3.2/', callback=self.parse, errback=self.detail_errorback)
        # expect to fail
        yield scrapy.Request(url='https://expired.badssl.com/', callback=self.parse, errback=self.detail_errorback)


    def parse(self, response):
        pass

    def detail_errorback(self, failure):
        self.logger.error(failure)

process = CrawlerProcess(settings={
    'DOWNLOADER_CLIENTCONTEXTFACTORY': 'scrapy.core.downloader.contextfactory.BrowserLikeContextFactory',
})

process.crawl(AppInfoSpider)
process.start()

Это мой паук. Мне нужно проверить SSL. У меня есть 2 теста: https://pypi.org, как ожидается, пройдет проверку ssl, https://expired.badssl.com/, как ожидается, ssl подтверждение.

Я запускаю код, оба тестовые случаи не пройдены с сообщением об ошибке <twisted.python.failure.Failure OpenSSL.SSL.Error: [('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')

Как это исправить?

Обновление:

https://github.com/pyca/pyopenssl/issues/823#issuecomment -468675241 говорит о Windows Я должен установить load_verify_locations. Но как мне получить к нему доступ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...