如何使用 puppeteer 禁用 webRTC 本地 IP 泄漏? [英] How can I disable webRTC local IP leak with puppeteer?

查看:219
本文介绍了如何使用 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆