使用c#为TOR提供新的标识

本文关键字:标识 TOR 使用 | 更新日期: 2023-09-27 18:17:34

我使用TOR浏览器连接到.onion网站并使用c#下载数据。我想做的是,添加一个按钮,允许用户获得一个新的身份,但我尝试了没有工作到目前为止。

我试过使用telnet,发送一个webrequest到端口9151,运行一个vbs,应该这样做,但没有任何工作。

我试过使用TorSharp,但是,虽然这只工作异步,我不能正常使用。我目前使用com.LandonKey.SocksWebProxy

我怎么能这么做?


当我知道需要什么时,我会添加相关代码,只要问。


编辑:

@Ralph Wiggum

遗憾的是,我不记得我曾经尝试创建一个新的身份的每一种方式,正如我所说的,我尝试使用Diagnostic.Process.Start()运行VBS,但我不再有那个脚本了。

我也试过使用WebRequest,但我甚至不确定应该怎么做。

这是我记得的样子:

com.LandonKey.SocksWebProxy.Proxy.ProxyConfig pc = new com.LandonKey.SocksWebProxy.Proxy.ProxyConfig();
pc.SocksAddress = IPAddress.Parse(tb_Location.Text);
pc.SocksPort = 9151;
SocksWebProxy sw = new SocksWebProxy(pc);
HttpWebRequest wreq = (HttpWebRequest)WebRequest.Create("http://127.0.0.1");
wreq.Headers.Add("SIGNAL", "AUTHENTICATE '"'"");
wreq.Headers.Add("SIGNAL", "NEWNYM");
using (var wres = wreq.GetResponse())
{
    using (var s = new StreamReader(wres.GetResponseStream()))
    {
        MessageBox.Show(s.ReadToEnd());
    }
}

我也尝试使用telnet(使用PrimS.Telnet),这也不起作用。它看起来像这样:

CancellationToken ct = new CancellationToken(); 
PrimS.Telnet.Client c = new PrimS.Telnet.Client("127.0.0.1", 9151, ct);
c.WriteLine("AUTHENTICATE '"'"'n");
c.WriteLine("SIGNAL NEWNYM"); 

@drew010

正如我所说,我确实使用了TorSharp,但我停止了。在那里创建一个新身份非常容易,但它完全是异步运行的,我无法设法修复它,以便与其他代码一起使用。

使用c#为TOR提供新的标识

要通过代码获得新的身份,您需要打开到控制端口的连接(通常为9051,默认禁用[编辑您的torrc以添加ControlPort 9051])并发出NEWNYM信号以建立新电路。

可以使用TorSharp中的TorControlClient类。

using Knapcode.TorSharp.Tools.Tor;
TorControlClient tc = new TorControlClient();
tc.ConnectAsync("localhost", 9051);
tc.AuthenticateAsync(null); // you should password protect your control connection
tc.SendCommandAsync("SIGNAL NEWNYM");

你也可以使用这个批处理文件来请求一个新的身份,但是c#可能更适合你的应用程序。参考该代码以查看控制连接上获取新标识的顺序。

参见ControlPort和HashedControlPassword配置选项。

希望对你有帮助。