使用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
,但我停止了。在那里创建一个新身份非常容易,但它完全是异步运行的,我无法设法修复它,以便与其他代码一起使用。
要通过代码获得新的身份,您需要打开到控制端口的连接(通常为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配置选项。
希望对你有帮助。