使用tor-request npm调用newTorSession后IP未变更,代码问题排查求助
问题排查:调用
newTorSession后Tor IP未更换 看起来你在使用tor-request更换Tor IP时遇到了问题——调用newTorSession后IP没变化对吧?我帮你梳理下代码里的几个关键问题,以及修正方案:
1. 代码执行顺序错误
你先调用了requestIP(),之后才设置Tor地址tr.setTorAddress('localhost', 9050),这意味着第一次请求根本没走Tor!而且newTorSession是异步操作,你需要确保Tor地址配置完成后,再发起请求和创建新会话。
2. 缺少Tor控制端口配置
newTorSession依赖Tor的控制端口(默认9051)来触发线路更换,你只设置了SOCKS代理端口(9050),但没配置控制端口的话,tor-request无法向Tor发送更换会话的指令,自然不会换IP。
修正后的代码
var tr = require('tor-request'); // 先配置Tor的SOCKS端口和控制端口 tr.setTorAddress('localhost', 9050); tr.setTorControlPort(9051); // Tor默认控制端口是9051,需确保已开启 function requestIP() { tr.request('https://api.ipify.org', function (err, res, body) { if (!err && res.statusCode == 200) { console.log("Your public (through Tor) IP is: " + body); } else { console.error("请求IP失败:", err || `状态码:${res?.statusCode}`); } }) } // 先发起初始请求,确认Tor连接正常 requestIP(); // 异步创建新Tor会话,完成后再请求新IP tr.newTorSession( (err) => { if (err) { console.error("创建新Tor会话失败:", err); return; } console.log("已创建新Tor会话,获取新IP..."); requestIP(); });
额外注意事项
- 检查Tor配置:打开你的Tor配置文件(
torrc),确认已开启控制端口:
大部分默认Tor安装会自动开启Cookie认证,无需额外密码;如果设置了密码,你需要用ControlPort 9051 CookieAuthentication 1tr.setTorControlPassword('你的密码')配置。 - 异步流程注意:Node.js是异步驱动的,所有依赖Tor配置的操作必须放在
setTorAddress之后,避免因配置未生效导致请求不走Tor。 - 端口权限问题:如果连接控制端口报错,检查你的Node进程是否有权限访问9051端口,或者Tor服务是否正常运行。
内容的提问来源于stack exchange,提问作者howtodoit_help
相关产品推荐
相关产品推荐

