【发布时间】:2019-11-08 17:07:17
【问题描述】:
操作系统是 Linux Debian 9。我的网络接口上连接的 IPv4 很少,也可以有一些 IPv6。
网络接口设置文件在末尾添加 /64 组 IPv6 地址之一。
如何运行 node.js 以使用从 IPv4 地址列表中选择的一个 IPv4 作为出站连接?现在它总是使用接口的最后添加的IP。
我不想在这些 IP 上设置代理,因为它们用于网络服务器和其他服务。
我已经准备了一些代码来说明问题所在:
var ip = require('ip');
console.log(ip.address());
const puppeteer = require('puppeteer');
(async() => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://api.myip.com/');
let bodyHTML = await page.evaluate(() => document.body.innerHTML);
console.log(bodyHTML);
await browser.close();
})();
如您所见,我在这里列出了我的本地 IP 地址,并且我提前用 puppeteer 打开了网站https://api.myip.com/(感谢@crazyluki)以 json 格式显示其出站 IP。
所以结果是:
seo@serv:~/goo$ node ip.js
188.6.6.1
{"ip":"1001:a1d0:2:9aa1::","country":"France","cc":"FR"}
user@serv:~/goo$
添加了新的 IPv6:
user@serv:~/goo$ sudo /sbin/ifconfig eno1 inet6 add 1001:a1d0:2:9aa1::1/64
然后:
user@serv:~/goo$ node ip.js
188.6.6.1
{"ip":"1001:a1d0:2:9aa1::1","country":"France","cc":"FR"}
user@serv:~/goo$
所以我们可以看到 IP 地址从 1001:a1d0:2:9aa1:: 变为 1001:a1d0:2:9aa1::1
如何控制 puppeteer 中的出站 IP,而不使用代理来处理我的本地 IPv4 地址?
如果我用 Lynx 访问 https://api.myip.com/,它也会显示 IP,就像 puppeteer。
【问题讨论】:
标签: node.js linux bash debian puppeteer