如何使用终端更改Tor提供的IP地址?

我有Tor服务,并且想要使用终端来更改Tor给我的IP地址。换句话说,我如何在命令行中请求一个新的IP地址?

5一个更好的说法是如何从终端"改变身份"。 - mchid
我添加了一个在Ubuntu后台运行tor守护进程时发现的另一个命令。 - mchid
http://stackoverflow.com/questions/1969958/how-to-change-tor-exit-node-programmatically - Ciro Santilli OurBigBook.com
5个回答

对于在Ubuntu上运行的Tor守护进程,请首先尝试以下方法:
killall -HUP tor

如果那不起作用,請在您的torrc文件中啟用控制端口。
然後,使用 tor --hash-password password 設置控制端口的密碼
打開對控制端口的telnet連接,並發出NEWNYM命令:
printf 'AUTHENTICATE "password"\r\nSIGNAL NEWNYM\r\n' | nc 127.0.0.1 9051

来源:


1对于新手来说,你首先必须像这样在你的torrc文件中设置哈希密码:https://askubuntu.com/a/989108/52975 - Ciro Santilli OurBigBook.com

你可以在你的bash脚本中简单地输入或插入:
service tor reload

我需要 sudo,但这个方法也起作用了。 - Brian Z
对我来说,这实际上是比@mchid给出的答案更好的答案。重新加载命令将触发正在运行的Tor可执行文件重新加载其配置并设置一个新的电路(从而获得新的IP)。另一个答案将终止正在运行的可执行文件并重新启动它。这可能需要更长的时间,并导致依赖于Tor代理的其他服务失败。 - Alex
我不知道为什么其他人建议如此复杂的解决方案,而这一简单的方法就可以解决问题。 - Mostafa Ahangarha
1@MostafaAhangarha 因为这对于多个 Tor 实例不起作用。 - MewX
@Alex 如果你只使用第二种方法并发送NEWNYM命令,它将持续运行并且你将获得一个新的IP地址,因为它将切换到干净的电路。 - mchid

方法一:HUP

使用终端更改由Tor提供的IP地址中提到了,但这里还有一些更多的细节:

sudo killall -HUP tor

然后检查您的IP是否已更改:
curl --socks5 127.0.0.1:9050 http://checkip.amazonaws.com/

在Ubuntu 17.10上进行测试,使用sudo apt-get install tor安装版本1.6.0-5。
由于默认情况下进程是由root启动的,所以需要使用sudo
有关HUP信号对Tor守护程序的确切作用的文档可以在此处找到:https://gitweb.torproject.org/torspec.git/tree/control-spec.txt?id=03aaace9bd9459b0d4bf22a75012acf39d07bcec#n394,它相当于通过命令端口发送某些命令。
浏览器捆绑包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/

参见:

相关主题


对于一个如此简单的功能(“获取新电路”),提供了如此复杂的解决方案。我完全不再信任Tor了。我认为它充满了漏洞和故障,让我们暴露自己。 - adrianTNT

你可以设置一个控制端口并使用Python脚本。
from stem import Signal
from stem.control import Controller

with Controller.from_port(port = 9051) as controller:
    controller.authenticate()
    controller.signal(Signal.NEWNYM)

1你知道怎么等待新的IP设置吗? - silgon

一条简短的命令可以让Tor使用不同的IP地址:
systemctl show -p MainPID tor | cut -d= -f2 | xargs sudo kill -HUP