反反爬 | 解决CloudFlare 5秒盾

遇到的问题

当我们第一次访问使用 CloudFlare 加速的网站时,网站就会出现让我们等待 5 秒种的提示


解决方法:

方法一、使用浏览器模拟技术请求目标网站,例如:Selenium
方法二、一个专门为了绕过这个 CloudFlare 开发的 Python 库 cloudscraper

本文重点介绍----方法二

用上它就可以无感爬取使用了 CloudFlare 的网站,使用这个库非常简单

第一步 安装
pip install cloudscraper
二步 基础使用

文档 https://pypi.org/project/cloudscraper/

import cloudscraper

scraper = cloudscraper.create_scraper()  # returns a CloudScraper instance
# Or: scraper = cloudscraper.CloudScraper()  # CloudScraper inherits from requests.Session
print scraper.get("http://somesite.com").text  # => "..."
实例----scrapy框架 + cloudscraper

spider.py

    def start_requests(self):
        self.browser = cloudscraper.create_scraper(browser={'browser': 'chrome', 'mobile': False})
        yield scrapy.Request(url=url, callback=self.parse)

middlewares.py

    def process_response(self, request, response, spider):
        if response.status == 503:
            if spider.name == "mmtimes_new":
                url = request.url
                req = spider.browser.get(url, headers={'referer': url})
                time.sleep(5)
                return HtmlResponse(url=url, body=req.text, encoding="utf-8", request=request)
        return response

2020年7月9日亲测仍有效

你可能感兴趣的:(反反爬 | 解决CloudFlare 5秒盾)