帮助中心 代理使用 Selenium和Playwright浏览器自动化代理配置实战:从基础接入到高级技巧
Selenium和Playwright浏览器自动化代理配置实战:从基础接入到高级技巧
作者: 山水代理
发布时间: 2026-09-17 10:32:27
阅读量: 5 人次

Selenium、Playwright、Puppeteer——主流浏览器自动化框架的代理IP配置,一篇全搞定


在爬虫和自动化测试场景中,浏览器自动化工具(Selenium、Playwright、Puppeteer)是处理JavaScript渲染页面的主力武器。但如果不配置代理IP,这些工具发出的请求会直接暴露真实IP,不仅面临封禁风险,还无法模拟多地域访问。本文以实战代码示例,系统讲解Selenium和Playwright两大主流框架的代理配置方法,覆盖基础认证、无头模式、会话保持和IP轮换四个核心场景。

一、Selenium代理配置


1、基础代理设置(Chrome)
Selenium通过ChromeOptions的`--proxy-server`参数配置代理:`options.add_argument('--proxy-server=http://ip:port')`。如果代理需要用户名密码认证,Selenium原生不支持在命令行中传递认证信息,需要通过Chrome DevTools Protocol(CDP)注入认证弹窗的自动填充脚本,或使用第三方库`webdriver-manager`配合`proxy-auth`插件实现。

2、认证代理的密码自动填充方案
最常用的方案是通过CDP发送`Fetch.enable`命令拦截认证请求,自动提交用户名密码。核心代码:`driver.execute_cdp_cmd('Fetch.enable', {'patterns': [{'urlPattern': '*'}]})`,然后在`Fetch.authRequired`事件中调用`Fetch.continueWithAuth`提交凭证。这种方式兼容Chrome和Edge浏览器,且支持动态切换不同的认证凭证。

3、无头模式下的代理配置
在无头模式(`--headless=new`)下,代理配置方式与有头模式相同,但需要注意:无头模式下无法弹出认证对话框,必须使用上述CDP方案处理认证。同时建议添加`--disable-gpu`和`--no-sandbox`参数,避免无头模式下的兼容性问题。

二、Playwright代理配置


1、原生代理支持(推荐)
Playwright对代理的支持比Selenium更原生、更简洁。在启动浏览器时直接传入代理参数:`browser = playwright.chromium.launch(proxy={'server': 'http://ip:port', 'username': 'user', 'password': 'pass'})`。用户名密码认证直接内置支持,无需额外的CDP脚本。这也是2026年推荐使用Playwright替代Selenium的重要原因之一。

2、按页面配置不同代理
Playwright支持为不同页面(Context)配置不同的代理,实现"一个浏览器实例,多个代理出口"。创建新Context时传入`proxy`参数即可:`context = browser.new_context(proxy={'server': 'http://ip2:port2'})`。这在需要同时模拟多个地域访问的场景中非常实用——每个Context使用不同城市的代理IP,互不干扰。

3、代理认证失败的处理
Playwright会在代理认证失败时抛出`net::ERR_PROXY_AUTH_UNSUPPORTED`或类似错误。建议在代码中添加try-except捕获,当认证失败时自动切换到备用代理IP重新请求。同时,Playwright的`route` API可以拦截所有请求,检查代理连接状态,实现自动故障转移。

三、IP轮换实战技巧


1、Selenium的IP轮换方案
Selenium本身不支持运行时切换代理,需要重启浏览器实例才能更换IP。推荐方案:维护一个代理IP池,每完成N个页面的抓取后关闭当前浏览器实例,用新的代理IP启动新实例。使用`webdriver.Chrome(options=options)`创建新实例的开销约2-3秒,可通过复用ChromeProfile减少启动时间。

2、Playwright的IP轮换方案
Playwright可以通过新建Context实现更轻量的IP轮换:每个Context使用不同的代理IP,Context销毁后切换到新IP。与Selenium重启浏览器相比,新建Context的开销仅需200-500ms,效率提升5-10倍。批量抓取时,可以创建多个Context并行运行,每个Context使用不同的代理IP。

3、隧道代理:免轮换的终极方案
如果不想手动管理IP轮换逻辑,可以直接使用隧道代理。隧道代理内置自动轮换机制,每次连接自动分配新的代理IP,无需修改任何代码——只需将代理地址指向隧道代理的端口即可。对于Selenium和Playwright用户,这是最简单的IP轮换方案。

总结


浏览器自动化工具的代理配置是爬虫和自动化测试的基础能力。Playwright在代理支持上优于Selenium(原生支持认证、按Context切换IP),是2026年的首选方案。对于追求简单易用的场景,隧道代理可以免去IP轮换的代码开发成本。无论选择哪种方案,代理IP都是浏览器自动化不可或缺的基础设施。

关于山水代理


山水代理 的私密代理提供API动态提取接口,方便在Selenium和Playwright中实现IP自动轮换——每次提取新IP后更新代理配置即可。
隧道代理 内置自动轮换,无需管理IP切换逻辑,一行代码接入,特别适合浏览器自动化场景。
欢迎随时 免费试用,体验流畅的浏览器代理集成。

延伸阅读


企业微信

客服在线时间:9:00~18:00

133-5988-7911

Copyright© 2022-2023 祈美科技(牡丹江)有限公司 黑ICP备2022000763号-1 beian 黑公网安备 23100002000084号

山水代理仅提供代理IP服务,用户使用山水代理从事的任何行为均不代表山水代理的意志和观点,与山水代理的立场无关。

严禁用户使用山水代理从事任何违法犯罪行为。产生的相关责任用户自负,对此山水代理不承担任何法律责任。官网上所有内容的最终解释权归本公司所有。

企微客服
山水代理微信客服 客服二维码 扫一扫添加
联系客服
山水代理客服电话 133-5988-7911