如何使用 puppeteer 禁用 webRTC 本地 IP 泄漏? [英] How can I disable webRTC local IP leak with puppeteer?
本文介绍了如何使用 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();等待 backgroundPage.evaluateevaluateOnNewDocument(() => {chrome.privacy.network.webRTCIPHandlingPolicy.set({值:default_public_interface_only"});});
但是得到了:
<块引用>类型错误:无法读取未定义的属性页面"
需要 {headless: true} 的解决方案.
解决方案
以下是防止 puppeteer version 1.9.0
上 webrtc IP 泄漏的步骤.
注意:
- 背景页面可用于 chrome 扩展程序.您可能不会在无头浏览器上找到背景页面.
- Chrome Headless 不支持扩展程序.我们必须使用
headless: false
.
解决方案:高级内容
如果你想快速隐藏 webRTC 的公共和私有 IP,修改这行 (extensions/webrtc/background.js
) 为 disable_non_proxied_udp
,
I tried:
const browser = await puppeteer.launch({args: ['--enable-webrtc-stun-origin=false', '--enforce-webrtc-ip-permission-check=false']});
But this is not working. Next I tried:
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"
});
});
But got:
TypeError: Cannot read property 'page' of undefined
EDIT: Need solution for {headless: true}.
解决方案
Here are steps to prevent webrtc IP leak on puppeteer version 1.9.0
.
Note:
- Background Pages are available for chrome extensions. You won't probably find a background page on a headless browser.
- Chrome headless does not support extensions. We must use
headless: false
.
Solution: WebRTC Leak Prevent
Clone the git repo to some local folder (ie: extensions/webrtc
),
git clone https://github.com/aghorler/WebRTC-Leak-Prevent extensions/webrtc
Use it inside your code,
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();
Result:
Advanced Stuff
If you want to quickly hide both Public and Private IP from webRTC, modify this (extensions/webrtc/background.js
) line to disable_non_proxied_udp
,
这篇关于如何使用 puppeteer 禁用 webRTC 本地 IP 泄漏?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文