对抗 5 秒盾用到库 cloudscraper
代码语言:javascript复制pip install cloudscraper
以中间件的形式插到 Scrapy 爬虫中
首先在爬虫中引入库:
代码语言:javascript复制import cloudscraper
然后在爬虫的类中按下面的结构插入代码:
代码语言:javascript复制class YourSpider(scrapy.Spider):
name = 'xxxx'
allowed_domains = ['xxxx.xxx']
browser = cloudscraper.create_scraper() # 这行是你需要加入的代码
然后到 middlewares.py 中加一个中间件(不要在意中间件的名字):
代码语言:javascript复制class FuckCloudflare:
def process_response(self, request, response, spider):
if response.status == 403:
if spider.name == 'xxxx': # 这里是我个人的处理 因为一个中间件可能给多个爬虫使用 在这做一下区分
url = request.url
rsp = spider.browser.get(url,
proxies={'http': 'http://127.0.0.1:7890', # 这里的代理主要是爬取外国网站做的处理
'https': 'http://127.0.0.1:7890'},
headers={'referer': url})
return HtmlResponse(url=url,
body=rsp.text,
encoding="utf-8",
request=request)
return response
再到 setting.py 中找到DOWNLOADER_MIDDLEWARES启用中间件就好了:
代码语言:javascript复制DOWNLOADER_MIDDLEWARES = {
'你的爬虫名字 参照其他配置改.middlewares.FuckCloudflare': 400,
···
···
}
Back to posts