我尝试过:
const browser = await puppeteer.launch({args: ['--enable-webrtc-stun-origin=false', '--enforce-webrtc-ip-permission-check=false']});
但这不起作用。 接下来我尝试了:
const targets = await browser.targets();
const backgroundPageTarget = targets.find(target => target.type() === 'background_page');
const backgroundPage = await backgroundPageTarget.page();
await backgroundPage.evaluateevaluateOnNewDocument(() => {
chrome.privacy.network.webRTCIPHandlingPolicy.set({
value: "default_public_interface_only"
});
});
但是得到:
类型错误:无法读取未定义的属性“页面”
编辑:需要 {headless: true} 的解决方案。
以下是防止 puppeteer 上的 webrtc IP 泄漏的步骤
version 1.9.0
。
headless: false
。将 git 存储库克隆到某个本地文件夹(即:
extensions/webrtc
),
git clone https://github.com/aghorler/WebRTC-Leak-Prevent extensions/webrtc
在代码中使用它,
const puppeteer = require('puppeteer');
async function helloWorld() {
// load the extension
const extensionPath = 'extensions/webrtc';
const browser = await puppeteer.launch({
// must be non-headless
headless: false,
args: [
`--disable-extensions-except=${extensionPath}`,
`--load-extension=${extensionPath}`,
],
});
const page = await browser.newPage();
// test it with browserleaks.com
await page.goto('https://browserleaks.com/webrtc');
// psss: just me hiding my details
await page.evaluate(() => $('#rtc-ipv4 a').css('-webkit-filter', 'blur(5px)'));
// taking evidence
await page.screenshot({ path: 'screenshots/browserleaks.png' });
await browser.close();
}
helloWorld();
如果您想快速从 webRTC 隐藏公共和私有 IP,请将此 (
extensions/webrtc/background.js
) 行修改为 disable_non_proxied_udp
,
最简单的解决方案,无需安装任何扩展,您可以使用这些标志启动 Chrome/Chromium,并且不会出现 IP 泄漏:
args: [
'--webrtc-ip-handling-policy=disable_non_proxied_udp',
'--force-webrtc-ip-handling-policy',
]
完整答案可以在这里找到:https://stackoverflow.com/a/78088496/15130822