在Selenium中,完成验证码验证后如何切换无头模式或禁用图片?
针对登录后切换无头模式/节省资源的解决方案
一、无法直接切换无头模式,但可以用会话复用方案
浏览器启动后没法修改无头模式参数,换个思路就能解决:
- 用有头浏览器完成登录(手动处理验证码)后,保存当前登录会话的Cookies
- 关掉有头浏览器,再用无头模式(或带资源限制配置)启动新浏览器,加载保存的Cookies,直接进入登录状态
Python示例代码
from selenium import webdriver from selenium.webdriver.chrome.options import Options # 第一步:有头浏览器处理登录和验证码 basic_options = Options() driver = webdriver.Chrome(options=basic_options) driver.get("你的登录页面URL") # 在这里手动完成验证码验证、登录操作... # 保存登录后的Cookies login_cookies = driver.get_cookies() driver.quit() # 第二步:启动无头+禁用图片的浏览器,复用登录会话 optimized_options = Options() optimized_options.add_argument("--headless=new") # 启用新版无头模式 # 禁用图片加载 optimized_options.add_experimental_option("prefs", { "profile.managed_default_content_settings.images": 2 }) new_driver = webdriver.Chrome(options=optimized_options) new_driver.get("登录后的目标页面URL") # 加载保存的Cookies,恢复登录状态 for cookie in login_cookies: new_driver.add_cookie(cookie) # 刷新页面后即可执行后续点击操作 new_driver.refresh() # 这里写你需要的按钮点击逻辑...
二、登录后直接禁用图片(无需重启浏览器)
如果不想重启浏览器,登录完成后可以通过Chrome DevTools协议(CDP)直接禁用图片加载:
# 登录完成后执行这段代码,立刻禁用图片 driver.execute_cdp_cmd('Emulation.setDisabledImageTypes', { 'disabledImageTypes': ['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg'] })
三、其他节省资源的实用配置
- 禁用非必要的JavaScript:如果后续点击操作不依赖JS,可添加启动参数
--disable-javascript(注意:依赖JS的操作不能用) - 禁用CSS渲染:添加参数
--disable-css,减少页面渲染开销 - 缩短页面加载超时:设置
driver.set_page_load_timeout(10),避免等待无关资源加载 - 用启动参数直接禁用图片:启动浏览器时加
--blink-settings=imagesEnabled=false,和修改prefs效果一致
内容的提问来源于stack exchange,提问作者sadcat_1
相关产品推荐
相关产品推荐

