You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js下Selenium配置代理的有效代码示例及解决方案求助

Node.js Selenium 带代理配置可用方案(2024 v4.x 版本适配)

以下方案基于官方selenium-webdriver v4.x 版本测试可用,适配Chrome/Edge等Chromium内核浏览器。

前置依赖安装

  • 安装selenium官方依赖包:npm install selenium-webdriver
  • 下载和本地Chrome/Edge浏览器主版本完全匹配的对应驱动,放在系统PATH路径或项目根目录

无身份认证代理配置示例(Chrome)

const { Builder, By } = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');

async function runSeleniumWithProxy() {
  // 代理地址格式:http://IP:端口 或 socks5://IP:端口
  const proxyAddress = 'http://127.0.0.1:7890';
  
  let options = new chrome.Options();
  // 配置代理参数
  options.addArguments(`--proxy-server=${proxyAddress}`);
  // 可选:无头模式运行,去掉注释即可启用
  // options.addArguments('--headless=new');
  options.addArguments('--no-sandbox');
  options.addArguments('--disable-dev-shm-usage');

  let driver = await new Builder()
    .forBrowser('chrome')
    .setChromeOptions(options)
    .build();

  try {
    // 访问IP查询接口验证代理是否生效
    await driver.get('https://api.ipify.org');
    // 打印当前出口IP
    let ip = await driver.findElement(By.tagName('body')).getText();
    console.log('当前访问IP:', ip);
  } finally {
    await driver.quit();
  }
}

runSeleniumWithProxy();

带用户名密码认证的代理配置示例

const { Builder, By } = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');

async function runAuthenticatedProxy() {
  const proxyHost = '你的代理IP';
  const proxyPort = '你的代理端口';
  const proxyUser = '代理用户名';
  const proxyPass = '代理密码';

  let options = new chrome.Options();
  // 配置代理地址
  options.addArguments(`--proxy-server=http://${proxyHost}:${proxyPort}`);
  options.addArguments('--no-sandbox');
  options.addArguments('--disable-dev-shm-usage');

  // 关闭密码保存提示避免干扰
  options.setUserPreferences({
    'profile.password_manager_enabled': false,
    'credentials_enable_service': false,
  });

  let driver = await new Builder()
    .forBrowser('chrome')
    .setChromeOptions(options)
    .build();

  try {
    // 预先完成代理认证,避免后续访问弹认证框
    await driver.get(`http://${proxyUser}:${proxyPass}@${proxyHost}:${proxyPort}`);
    // 访问目标站点验证
    await driver.get('https://api.ipify.org');
    let ip = await driver.findElement(By.tagName('body')).getText();
    console.log('当前访问IP:', ip);
  } finally {
    await driver.quit();
  }
}

runAuthenticatedProxy();

常见问题排查

  • 确保selenium-webdriver版本为v4.x,旧版v3的API存在差异无法直接复用
  • 浏览器驱动版本必须和本地安装的浏览器主版本完全一致,否则会出现启动失败问题
  • 代理地址前缀不能省略,http代理加http://,socks5代理加socks5://
  • 如果是内网自签名证书代理,可额外加--ignore-certificate-errors参数忽略证书校验
  • Edge浏览器适配仅需将require('selenium-webdriver/chrome')替换为require('selenium-webdriver/edge'),setChromeOptions替换为setEdgeOptions即可,逻辑完全一致

内容的提问来源于stack exchange,提问作者user14982265

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:30:03