如何以编程方式更改Tor出口节点以获取新IP?

时间:2009-12-28 15:22:32

标签: tor

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

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

我可以将哪些命令发送到此端口以使Tor构建新链,以便我可以获得另一个IP地址?

11 个答案:

答案 0 :(得分:39)

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

答案 1 :(得分:30)

方法1: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 as mentioned here,您可以有选择地发送:

kill -HUP $PID

方法2:控制端口

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/

另见:

相关主题

答案 2 :(得分:8)

是的,那是1(我的意思是= =)))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。 默认情况下它没有被淹没(我的意思是这个能力),但我可以让客户端听一些端口接受使用torrc的命令...如果我没有弄错...再次=)

<强> !!!地狱torrc在我的电脑上?

在C:\ Users \ geekman \ AppData \ Roaming \ Tor中我可以,不管它 我得到了远景。

答案 3 :(得分:8)

这个问题似乎经常出现(12),所以我刚为它添加了FAQ entry。如前所述,您可以通过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)

答案 4 :(得分:4)

我为自己创建了一个shell脚本,也允许你远程执行此操作(如果Tor服务器在另一台机器上运行)。

可在此处找到:https://gist.github.com/kirelagin/9667900

答案 5 :(得分:3)

您无法控制托管网络中的路由(如果有,有人可能滥用此功能)。但是,tor已经大约每10分钟切换一次路线(至少根据German Wikipedia article)。

答案 6 :(得分:2)

您只需在bash脚本中键入或插入:

service tor reload

答案 7 :(得分:1)

Advtor可让您访问几乎所有适用于tor网络的高级设置。

答案 8 :(得分:0)

我在这里做了一些不同的事情......我写了一个可以与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是一种无法重启的服务。

答案 9 :(得分:0)

我已经编写了一个用PHP控制Tor的库。它可以使用Composer进行安装,并允许更改出口节点。

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

答案 10 :(得分:0)

如果您无权访问控制端口,则可以使用其他电路来更改IP *。这可以通过指定其他袜子用户名来完成:

curl --location -X POST 'https://api.labs.sophos.com​/oauth2​/token' --header 'Content-Type: application/x-www-form-urlencoded' --header 'Authorization: Basic {encoded key:secret}' --data-raw 'grant_type=client_credentials' -i

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

*每次退出节点都是随机的,并且您有可能连续两次获得相同的IP。

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