I have Tor running on my computer, and I need to change the Tor exit node every five minutes. For example, if I start using Tor via some exit node, then in 5 minutes I want
Advtor gives you access over almost all advanced settings which works over tor network.
You have no control over the routing in the tor network (if you had, someone could abuse this feature). But tor already switches the route roughly every 10 minutes (at least according to the German Wikipedia article).
If you don't have access to the control port, you could use a different circuit which changes your IP*. This can be done by specifying a different socks username:
$ 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
If you want to reuse a specific IP at some point you can use the same username you used before to get that IP again.
* The exit node will be random every time and there is a slight chance you'll get the same IP twice in a row.
Correct me if I'm wrong, I'm not a Tor expert, but this works for me.
I've made a shell script for myself that also lets you do this remotely (if Tor server is running on another machine).
It's available here: https://gist.github.com/kirelagin/9667900.
Method 1: HUP
sudo killall -HUP tor
Then check that your IP has changed with:
curl --socks5 127.0.0.1:9050 http://checkip.amazonaws.com/
Tested in Ubuntu 17.10 with sudo apt-get install tor
version 1.6.0-5.
sudo
is needed since the process is started by root by default.
What an HUP signal does exactly to the Tor daemon is documented at: https://gitweb.torproject.org/torspec.git/tree/control-spec.txt?id=03aaace9bd9459b0d4bf22a75012acf39d07bcec#n394 and is equivalent to sending some command through the command port.
Browser Bundle 5.0.5 is not affected by this, only daemon ports like the default 9050, which is not used by the TBB. For that use case see: https://tor.stackexchange.com/questions/1071/how-can-a-new-circuit-happen-without-closing-all-tabs
If you are deploying an army of Tor IPs as mentioned here you can selectively send:
kill -HUP $PID
Method 2: control port
Mentioned by kat:
(echo authenticate '""'; echo signal newnym; echo quit) | nc localhost 9051
but for that to work on Ubuntu 17.10 you must first:
enable the control port by uncommenting:
ControlPort 9051
from /etc/tor/torrc
Set the empty password, otherwise it gives 515 Authentication failed: Wrong length on authentication cookie.
. First run:
tor --hash-password ''
This outputs something like:
16:D14CC89AD7848B8C60093105E8284A2D3AB2CF3C20D95FECA0848CFAD2
Now on /etc/tor/torrc
update the line:
HashedControlPassword 16:D14CC89AD7848B8C60093105E8284A2D3AB2CF3C20D95FECA0848CFAD2
Restart Tor:
sudo service tor restart
Bonus: how to check that your IP changed
curl --socks5 127.0.0.1:9050 http://checkip.amazonaws.com/
See also: https://askubuntu.com/questions/95910/command-for-determining-my-public-ip
Related threads