56

我的计算机上正在运行 Tor,我需要每五分钟更改一次 Tor 出口节点。例如,如果我通过某个出口节点开始使用 Tor,那么我希望 Tor 在 5 分钟内更改为具有不同 IP 地址的出口节​​点。我怎样才能做到这一点?

据我所知,Tor 正在监听 localhost 上的 8051 端口。

我可以向这个端口发送什么命令来让 Tor 建立一个新的链,这样我就可以获得另一个 IP 地址?

4

11 回答 11

48

方法一:HUP

sudo killall -HUP tor

然后检查您的 IP 是否已更改为:

curl --socks5 127.0.0.1:9050 http://checkip.amazonaws.com/

sudo apt-get install tor在版本 1.6.0-5的 Ubuntu 17.10 中测试。

sudo是必需的,因为该过程默认由 root 启动。

HUP 信号对 Tor 守护进程的确切作用记录在:https ://gitweb.torproject.org/torspec.git/tree/control-spec.txt?id=03aaace9bd9459b0d4bf22a75012acf39d07bcec#n394 ,相当于通过命令端口。

Browser Bundle 5.0.5 不受此影响,只有守护进程端口,如默认的 9050,TBB 不使用该端口。对于该用例,请参阅:https ://tor.stackexchange.com/questions/1071/how-can-a-new-circuit-happen-without-closing-all-tabs

如果您正在部署这里提到的 Tor IP 大军,您可以有选择地发送:

kill -HUP $PID

方法二:控制端口

kat提到:

(echo authenticate '""'; echo signal newnym; echo quit) | nc localhost 9051

但要在 Ubuntu 17.10 上运行,您必须首先

  • 通过取消注释来启用控制端口:

    ControlPort 9051
    

    /etc/tor/torrc

  • 设置空密码,否则给出515 Authentication failed: Wrong length on authentication cookie.。第一次运行:

    tor --hash-password ''
    

    这会输出如下内容:

    16:D14CC89AD7848B8C60093105E8284A2D3AB2CF3C20D95FECA0848CFAD2
    

    现在/etc/tor/torrc更新该行:

    HashedControlPassword 16:D14CC89AD7848B8C60093105E8284A2D3AB2CF3C20D95FECA0848CFAD2
    
  • 重启 Tor:

    sudo service tor restart
    

奖励:如何检查您的 IP 是否已更改

curl --socks5 127.0.0.1:9050 http://checkip.amazonaws.com/

另请参阅:https ://askubuntu.com/questions/95910/command-for-determining-my-public-ip

相关主题

于 2015-11-15T23:03:51.720 回答
44
(echo authenticate '""'; echo signal newnym; echo quit) | nc localhost 9051
于 2012-07-06T01:00:03.023 回答
10

这个问题似乎经常出现(1 , 2)所以我只是为它添加了一个常见问题解答条目。如前所述,您可以通过 NEWNYM 信号执行此操作。这是一个通过stem做的例子......

from stem import Signal
from stem.control import Controller

with Controller.from_port(port = 9051) as controller:
  controller.authenticate()
  controller.signal(Signal.NEWNYM)
于 2013-06-16T04:10:30.217 回答
8

是的,那是 1(我的意思是 =true =)))tor 确实每 10 分钟更改一次 ip,但是!如果我重新启动 tor - 即使在这 10 分钟的间隔内,我也会获得一个新的 ip。所以我正在考虑让tor手动发送这个“change_ip”请求。查看此代码(根据http://en.linuxreviews.org/HOWTO_use_the_Internet_anonymously_using_Tor_and_Privoxy编写)

procedure ChangeIp;
var
  sck:TIdTCPClient;
begin
  sck:=TIdTCPClient.Create(nil);
  try
    sck.Host:='127.0.0.1';
    sck.Port:=10051;
    sck.Connect;
    sck.SendCmd('authenticate','');
    if sck.LastCmdResult.Code='250' then
    begin
      sck.SendCmd('signal newnym','');
    end;
  finally
    sck.Free;
  end;
end;

和accornig到[ https://tor-svn.freehaven.net/svn/torctl/trunk/doc/howto.txt]我可以编写一个控制器来动态改变tor的conf。默认情况下它没有启用(我的意思是这种能力),但我可以让 tor 客户端监听一些端口以使用 torrc 接受命令......如果我没记错......再次=)

!!!我的电脑上的地狱torrc在哪里?

在 C:\Users\geekman\AppData\Roaming\Tor 中,我可以找到 vista。

于 2009-12-28T15:53:34.910 回答
4

我为自己制作了一个 shell 脚本,它还可以让您远程执行此操作(如果 Tor 服务器在另一台机器上运行)。

它可以在这里找到:https ://gist.github.com/kirelagin/9667900 。

于 2014-03-29T12:50:34.820 回答
3

如果您无法访问控制端口,您可以使用不同的电路来更改您的 IP*。这可以通过指定不同的 socks 用户名来完成:

$ curl -x "socks5://circuit1@127.0.0.1:9050" "https://ifconfig.io/ip"
109.70.100.34

$ curl -x "socks5://circuit2@127.0.0.1:9050" "https://ifconfig.io/ip"
209.222.101.251

$ curl -x "socks5://circuit3@127.0.0.1:9050" "https://ifconfig.io/ip"
54.37.19.83

如果您想在某个时候重用特定 IP,您可以使用之前使用的相同用户名再次获取该 IP。

* 每次退出节点都是随机的,连续两次获得相同IP的概率很小。

如果我错了,请纠正我,我不是 Tor 专家,但这对我有用。

于 2020-11-22T22:22:24.943 回答
2

您无法控制 tor 网络中的路由(如果有,有人可能会滥用此功能)。但是 tor 已经大约每 10 分钟切换一次路线(至少根据德语维基百科文章)。

于 2009-12-28T15:29:27.157 回答
2

您可以简单地在 bash 脚本中键入或插入:

service tor reload
于 2017-04-30T12:52:39.510 回答
1

我在这里做了一些不同的事情......我编写了一个可以与 linux shell 通信的 PHP 程序。该程序将定期重新启动tor。

所以当tor重新启动时,它会获得一个新的IP......是的......!

exec("/etc/init.d/tor restart",$ioOut);
print_r($ioOut); //output from shell after executing the command
sleep(25);

您也可以编写一个 shell 脚本来执行此操作。

我现在正在寻找执行此操作的 Windows 选项。问题是 .. 在 Windows Tor 中是一项无法重新启动的服务。

于 2011-02-24T08:52:21.107 回答
1

Advtor让您可以访问几乎所有在 Tor 网络上工作的高级设置。

于 2014-02-25T09:11:15.683 回答
0

我写了一个库来用 PHP 控制 Tor。它可以与 Composer 一起安装,并允许更改出口节点。

当然它是免费软件:http ://dunglas.fr/2013/02/php-torcontrol-a-library-to-control-tor/

于 2013-02-24T12:52:57.960 回答