node.js - Node.js 出站 IP - 更改地址
问题描述
操作系统是 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 地址,并且我提前打开了网站https://api.myip.com/和 puppeteer(感谢@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/,它还会显示像 puppeteer 这样的 IP。
解决方案
好的,我已经配置了 squid。似乎没有其他方法可以达到预期的效果。
推荐阅读
- python - ModuleNotFoundError:没有名为“Levenshtein”的模块
- ios - 与 react-native-quick-actions 的深度链接在 iOS 中不起作用
- java - Eclipse:设置 Ctrl+Space 以显示“Java Proposals”面板
- angular - 从 Angular 4 迁移到 9
- row - R包拼凑而成:行/列的标题
- python - Requests.py 重定向网址
- vowpalwabbit - vowpal wabbit 输出中“最佳常数损失”的概念,以及教程中所述的经验法则
- c# - 我想对列表列表进行分组
- javascript - 如何更新嵌套的 mongo 对象
- vb.net - npgsql executescalar() 总是不返回任何内容