web-dev-qa-db-ja.com

Tor出口ノードをプログラムで変更して新しいIPを取得する方法は?

コンピューターでTorを実行していますが、5分ごとにTor終了ノードを変更する必要があります。たとえば、ある出口ノードを介してTorの使用を開始した場合、5分後にTorを別のIPアドレスを持つ出口ノードに変更したいと思います。これどうやってするの?

Torは、私の知る限り、localhostのポート8051をリッスンしています。

Torに新しいチェーンを構築させ、別のIPアドレスを取得できるようにするために、このポートにどのコマンドを送信できますか?

43
lazybob
(echo authenticate '""'; echo signal newnym; echo quit) | nc localhost 9051
41
kat

方法1:HUP

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でテスト済み。

プロセスはデフォルトでルートによって開始されるため、Sudoが必要です。

Torデーモンに対するHUPシグナルの正確な内容は、 https://gitweb.torproject.org/torspec.git/tree/control-spec.txt?id=03aaace9bd9459b0d4bf22a75012acf39d07bcec#n394 これは、コマンドポートを介してコマンドを送信することと同等です。

Browser Bundle 5.0.5はこの影響を受けず、TBBで使用されないデフォルトの9050などのデーモンポートのみが影響を受けます。その使用例については、 https://tor.stackexchange.com/questions/1071/how-can-a-new-circuit-happen-without-closing-all-tabs

ここに記載されているようにTor IPの軍隊 を展開している場合 、選択的に送信できます:

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/

こちらもご覧ください:

関連するスレッド

この質問はかなり頻繁に出てくるようです( 12 )ので、 FAQエントリ を追加しました。前述のように、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)
8
Damian

ええ、それは1です(つまり、= true =)))、torは10分ごとにIPを変更しますが! torを再起動した場合-この10分間隔でも新しいIPを取得します。だから私はこの "change_ip"リクエストを手動で送信するためにtorを作ることを考えていました。このコードを参照してください( 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;

[ https://tor-svn.freehaven.net/svn/torctl/trunk/doc/howto.txt] に賛同して、私はすぐにtorのconfを変更するコントローラーを書くことができます。デフォルトでは有効ではありません(この能力を意味します)が、torcを使用してコマンドを受け入れるためにtorクライアントにポートをリッスンさせることができます...間違っていない場合は... again =)

!!!地獄のtorrcは私のPC上にありますか?

C:\ Users\geekman\AppData\Roaming\Torで、私はそれを手に入れて、Vistaを手に入れました。

8
lazybob

リモートでこれを実行できるシェルスクリプトを自分で作成しました(Torサーバーが別のマシンで実行されている場合)。

ここにあります: https://Gist.github.com/kirelagin/96679

4
kirelagin

Torネットワークのルーティングを制御することはできません(もしあれば、誰かがこの機能を悪用する可能性があります)。しかし、torはすでに約10分ごとにルートを切り替えています(少なくとも ドイツのウィキペディアの記事 によると)。

3
Aaron Digulla

Bashスクリプトを入力または挿入するだけです。

service tor reload
2
Liam

Advtor は、torネットワークを介して機能するほとんどすべての詳細設定にアクセスできます。

1
Cyril

ここで何か違うことをしました... 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);

これを行うシェルスクリプトを作成することもできます。

これを行うためのWindowsオプションを探しています。問題は.. Windows Torでは再起動できないサービスです。

0
Clain Dsilva

PHPでTorを制御するライブラリを作成しました。 Composerでインストール可能で、出口ノードを変更できます。

もちろん、それはフリーソフトウェアです: http://dunglas.fr/2013/02/php-torcontrol-a-library-to-control-tor/

0
Kévin Dunglas