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

Selenium NodeJS中createCDPSession无法调用,请求拦截失败如何解决?

修复Selenium NodeJS中CDPSession无法调用的问题

问题根源

你的代码中使用的createCDPSession()方法在Selenium 4+的NodeJS版本中已被废弃,需要改用getDevTools()API来获取CDP会话对象。

修复后的完整代码

async launchBrowser(UA) {
    try {
        await this.startProxyServer();

        const chrome = require('selenium-webdriver/chrome');
        const { Builder } = require('selenium-webdriver');
        const options = new chrome.Options();

        options.addArguments('--blink-settings=animationPolicy=none');
        options.addArguments('--proxy-server=http://127.0.0.1:8080'); // 使用本地代理服务器

        if (this.browserSettings.convertToEnglish) options.addArguments('--lang=en-US');

        this.log('Using mobile browser settings with user agent:' + UA);
        options.addArguments('--user-agent=' + UA);
        options.addArguments('--window-size=375,812');

        if (this.browserSettings.incognitoMode) options.addArguments('--incognito');
        options.addArguments('--no-sandbox', '--disable-dev-shm-usage', '--disable-gpu');

        console.log('Initializing browser...');
        this.driver = await new Builder()
            .forBrowser('chrome')
            .setChromeOptions(options)
            .build();
        this.isDriverActive = true;
        this.log('Browser launched with the specified settings.');

        // 替换原createCDPSession()为getDevTools()获取CDP会话
        const cdpSession = await this.driver.getDevTools();
        await cdpSession.send('Network.enable');

        await cdpSession.send('Network.setBlockedURLs', {
            urls: [
                '*://images.tokopedia.net/*',
                '*://assets.tokopedia.net/*',
                '*://*.adservice.google.com/*',
                '*://*.analytics.google.com/*'
            ]
        });
        this.log('Blocked specific network requests using CDP.');

    } catch (error) {
        console.error('Error launching browser:', error);
        this.log(`Error launching browser: ${error.message}`);
        throw error;
    }
}

关键修改点

  • 将const cdpConnection = await this.driver.createCDPSession();替换为const cdpSession = await this.driver.getDevTools();
  • 确保导入Builder模块(如果之前未显式导入)

额外注意事项

  • 确保selenium-webdriver版本为4.x及以上,可执行npm install selenium-webdriver@latest更新
  • 确认Chrome浏览器版本与ChromeDriver版本完全匹配,版本不兼容会导致CDP会话无法正常建立
  • 若网络拦截未生效,可检查URL规则是否符合CDP的匹配格式,通配符*需正确覆盖目标地址

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 07:47:16