You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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),确认已开启控制端口:
    ControlPort 9051
    CookieAuthentication 1
    
    大部分默认Tor安装会自动开启Cookie认证,无需额外密码;如果设置了密码,你需要用tr.setTorControlPassword('你的密码')配置。
  • 异步流程注意:Node.js是异步驱动的,所有依赖Tor配置的操作必须放在setTorAddress之后,避免因配置未生效导致请求不走Tor。
  • 端口权限问题:如果连接控制端口报错,检查你的Node进程是否有权限访问9051端口,或者Tor服务是否正常运行。

内容的提问来源于stack exchange,提问作者howtodoit_help

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:32:39