fetch如何突破cloudflare的5秒盾验证?
网友回复
可以下载一个FlareSolverr,FlareSolverr 启动代理服务器,它使用很少的资源等待处于空闲状态的用户请求。 当某些请求到达时,它会使用Selenium和未检测到的chromedriver来创建Web浏览器(Chrome)。它打开带有用户参数的 URL,并等待 Cloudflare 挑战 已解决(或超时)。HTML 代码和 COOKIE 被发送回给用户,这些 COOKIE 可用于 使用其他HTTP客户端绕过Cloudflare。
https://github.com/FlareSolverr/FlareSolverr
还可以使用undetected-chromedriver
https://github.com/ultrafunkamsterdam/undetected-chromedriver
安装:pip install undetected-chromedriver
import undetected_chromedriver as uc driver = uc.Chrome(headless=True,use_subprocess=False) driver.get('https://nowsecure.nl') driver.save_screenshot('nowsecure.png')
补充一下FlareSolverr
首先本地docker运行
docker run -d \ --name=flaresolverr \ -p 8191:8191 \ -e LOG_LEVEL=info \ --restart unless-stopped \ ghcr.io/flaresolverr/flaresolverr:latest
然后请求:
import requests import json url = "http://localhost:8191/v1" payload = json.dumps({ "cmd": "request.get", "url": "https://nowsecure.nl", "maxTimeout": 60000 }) headers = { 'Content-Type': 'application/json' } response = requests.post(url, headers=headers, data=payload) #print(response) # 这个Docker镜像启动的接口,返回的数据是JOSN,网页源代码在其中的.solution.response中 print(response.json()['solution']['response'])