Python requests如何绕过Cloudflare 5秒检测获取Investing.com页面
Cloudflare验证绕过获取目标页面HTML解决方案
核心原因
requests默认的请求头、TLS握手指纹与真实浏览器差异极大,会被Cloudflare的反爬机制直接拦截,返回浏览器验证页面。
方案1:使用cloudscraper请求库
cloudscraper是基于requests封装的专门绕过Cloudflare五秒盾的库,会自动完成验证计算、指纹模拟,用法和requests完全兼容,改造成本极低。
- 安装依赖:
pip install cloudscraper - 示例代码:
import cloudscraper # 初始化scraper实例,自动适配Cloudflare验证逻辑 scraper = cloudscraper.create_scraper( browser={ 'browser': 'chrome', 'platform': 'windows', 'mobile': False } ) resp = scraper.get("https://www.investing.com/你的目标页面路径") # 直接获取真实页面HTML print(resp.text)
方案2:使用无头浏览器模拟真实访问
如果站点开启了更严格的人机验证,使用Playwright模拟真实Chromium浏览器访问,特征和真实用户完全一致,通过率最高。
- 安装依赖:
pip install playwright,执行playwright install chromium下载浏览器内核 - 示例代码:
from playwright.sync_api import sync_playwright with sync_playwright() as p: # 启动无头模式浏览器,可配置自定义UA、代理等参数 browser = p.chromium.launch(headless=True) context = browser.new_context( user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" ) page = context.new_page() # 等待页面网络空闲后再获取内容,确保验证完成、页面加载完毕 page.goto("https://www.investing.com/你的目标页面路径", wait_until="networkidle") page_content = page.content() print(page_content) browser.close()
注意事项
- 请设置合理的请求间隔,避免短时间高频请求触发站点IP封禁规则
- 不要使用requests默认的
python-requests/版本号格式UA,统一替换为桌面端主流浏览器UA - 若出现IP临时限制,可更换代理IP后再尝试访问
内容的提问来源于stack exchange,提问作者uyncis
相关产品推荐
相关产品推荐

