如何用Python Selenium加载页面?解决空白页及Cloudflare验证问题
解决Selenium打开页面空白的问题
你遇到的是Cloudflare的隐形人机验证机制,这段JS就是用来触发验证的——普通浏览器因为是真人操作能通过验证,而Selenium默认的自动化特征会被识别为爬虫,导致验证失败显示空白页。以下是具体解决步骤:
基础方案:优化Selenium浏览器配置
通过修改ChromeOptions模拟真实浏览器环境,减少被识别的概率:
- 禁用自动化特征检测:添加
--disable-blink-features=AutomationControlled参数,避免页面检测到Selenium的自动化标识 - 设置真实用户代理:复制你常用浏览器的User-Agent(比如Chrome的UA),通过
--user-agent参数传入 - 可选:加载本地浏览器配置文件,让Selenium使用你日常使用的Chrome环境(包含缓存、Cookie等,更接近真人访问)
示例代码:
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() # 禁用自动化检测 options.add_argument("--disable-blink-features=AutomationControlled") # 替换成你自己浏览器的User-Agent options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36") # 可选:加载本地Chrome配置,路径替换成你自己的profile路径 # options.add_argument(r"user-data-dir=C:\Users\你的用户名\AppData\Local\Google\Chrome\User Data") driver = webdriver.Chrome(options=options) driver.get("目标页面URL")
进阶方案:使用反检测专用库
如果基础方案无效,直接用undetected-chromedriver库,它专门针对Cloudflare等反爬机制做了优化,能自动绕过大部分验证:
- 先安装库:
pip install undetected-chromedriver - 示例代码:
import undetected_chromedriver as uc driver = uc.Chrome() driver.get("目标页面URL") # 等待页面加载完成 driver.implicitly_wait(10)
注意事项
- 你提供的那段JS里的
__CF$cv$params参数是临时的,每次访问都会变化,硬抄执行这段JS没用,必须让页面自动完成验证流程 - 不要频繁刷新或快速操作,模拟真人访问的节奏,避免触发更严格的验证
内容的提问来源于stack exchange,提问作者mikezang
相关产品推荐
相关产品推荐

