node.js - 如何使用 puppeteer 禁用 webRTC 本地 IP 泄漏?
问题描述
我试过:
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"
});
});
但得到:
TypeError:无法读取未定义的属性“页面”
编辑:需要 {headless: true} 的解决方案。
解决方案
以下是防止 puppeteer 上的 webrtc IP 泄漏的步骤version 1.9.0
。
笔记:
- 背景页面可用于 chrome 扩展。您可能不会在无头浏览器上找到背景页面。
- Chrome headless 不支持扩展。我们必须使用
headless: false
.
解决方案:WebRTC 防泄漏
将 git repo 克隆到某个本地文件夹(即:)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 和私有 IP,请将此 ( extensions/webrtc/background.js
) 行修改为disable_non_proxied_udp
,
推荐阅读
- flutter - Flutter/Dart:在 null 上调用了 getter 'length'
- r - 如何在 r 的列表中收集类似的列表?
- docker - 如何在 Openshift 中以非 root 身份运行 dotnet-counters?
- angularjs - Form.io AngularJS 设置“选项”
- php - var_dump($sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP)); 没有按预期工作
- java - 最佳实践确认第二个人的数据变化
- javascript - TypeError:无法读取未定义的 React-Redux 的属性“地图”
- hyperlink - 为什么 -pthread 工作但 -lpthread 不工作?
- python - “NoneType”类型的错误对象没有带有 json 和 csv 的 len()
- java - 为什么我的 System.out.println 不工作?这也不是主类,当我尝试从主类访问它时,我没有得到输出