美文网首页Python
反反爬 | 解决CloudFlare 5秒盾

反反爬 | 解决CloudFlare 5秒盾

作者: 是东东 | 来源:发表于2020-07-09 14:18 被阅读0次
遇到的问题

当我们第一次访问使用 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  # => "<!DOCTYPE html><html><head>..."
实例----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秒盾

    本文链接:https://www.haomeiwen.com/subject/urajcktx.html