Cloudflare反反爬的几种方式记录

Part1:最常用的cloudscraper库

这个方法现在已经失效,据说是cloudflare只要稍有改进就会失效。期待作者更新

import cfscrape

scraper = cfscrape.create_scraper(delay=10)  # 可以设置延迟时间
res = scraper.get(u, headers=headers)  # 发起请求的方式和requests相同

Par2:Fake-UserAgent

这个库来自GitHub - fake-useragent/fake-useragent: Up-to-date simple useragent faker with real world databasehttps://github.com/fake-useragent/fake-useragent用法如下:

from fake_useragent import UserAgent

ua = UserAgent()
ua1 = ua.random
print(ua1)  # 可以看到每次都调用不同的ua
headers = {
    'User-Agent': str(ua1),
    'cookie': bytedatas,}

Part3:time.sleep()

可以说是最质朴的方法了。缺点是会大幅降低爬虫速度。需要自己拿捏获取数据的速度和被屏蔽之间的平衡。目前我用的是每个网页7-10秒,每10页休息30-40秒

import time
import random
import requests

for u in urls:
    res = requests.get(u,headers=headers)
    # 中间省略
    time.sleep(random.randint(7,10))

Part4:一些不管用的偏方

requests设置延迟加载,禁止重定向等

res = requests.get(url,timeout=20,allow_redirects=False)

目前就是勉强用time.sleep()的方法运行着,过几十个就要改一下所请求的网址,同时写入日志,再对日志进行数据提取。

你可能感兴趣的:(爬虫,python,爬虫)