仅能在非无头模式下打开站点?Selenium无头模式运行异常求助
仅能在非无头模式下打开站点?Selenium无头模式运行异常求助
嘿,我之前也踩过一模一样的坑!无头模式下的Chrome和你手动打开的浏览器在默认配置、特征识别上差得还真不少,网站很容易把它当成“非人类访问”给限制了。给你几个亲测有效的解决办法,一步步来试试:
伪装正常浏览器的User-Agent
无头模式下Chrome的默认UA会带HeadlessChrome的标识,很多网站靠这个判断是不是自动化工具。你可以手动设置成和正常Chrome一致的UA:from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() # 用新版无头模式,行为更接近正常浏览器(Chrome 112+支持) options.add_argument("--headless=new") # 可在浏览器地址栏输入chrome://version/查看自己当前的UA,替换掉下面的内容 options.add_argument("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") driver = webdriver.Chrome(options=options)隐藏Selenium的自动化特征
Selenium默认会给浏览器加上一些自动化相关标记,网站能通过JS检测到。加上这些参数就能把它们藏起来:options.add_argument("--disable-blink-features=AutomationControlled") options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option('useAutomationExtension', False)设置正常的窗口尺寸
无头模式默认窗口尺寸特别小,有些网站会根据这个判断是异常访问,直接返回错误或空白页。设置一个常规桌面窗口大小:options.add_argument("--window-size=1920,1080")(可选)加载本地浏览器配置
如果网站需要登录状态或特定浏览器环境,你可以让无头模式加载你平时用的Chrome用户数据(注意要先关闭正在运行的Chrome,不然会冲突):# 替换成你自己的Chrome用户数据路径,Windows一般是这个格式 options.add_argument(r"user-data-dir=C:\Users\你的用户名\AppData\Local\Google\Chrome\User Data") options.add_argument("--profile-directory=Default")
把这些参数组合起来,你的代码访问行为就和正常浏览器差不多了。如果还是不行,那可能网站用了更严格的指纹检测,不过先把上面的基础配置试完,大部分情况都能解决!
内容来源于stack exchange
相关产品推荐
相关产品推荐

