使用 c# 的 TOR 新身份

Posted

技术标签:

【中文标题】使用 c# 的 TOR 新身份【英文标题】:New identity for TOR using c# 【发布时间】:2015-10-13 16:30:41 【问题描述】:

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

我尝试过使用 telnet,向端口 9151 发送 web 请求,运行应该执行此操作的 vbs,但没有任何效果。

我尝试过使用 TorSharp,但是虽然它只对异步有效,但我无法正确使用它。我目前正在使用com.LandonKey.SocksWebProxy

我该怎么做?


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


编辑:

@拉尔夫·维格姆

遗憾的是,我不记得尝试创建新身份的所有方式,正如我所说,我尝试使用 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,但我停止了。在那里创建一个新身份非常容易,但它完全异步运行,我无法修复它以将其与我的其余代码一起使用。

【问题讨论】:

您是否通过控制套接字进行了身​​份验证?请发布您用于连接到控制套接字并创建新身份的代码。 @WolfyD 关于您对 TorSharp 使用异步控制客户端的评论,您是否希望控制连接在发送信号之前阻止您的代码?设置基本连接将是相当简单的。只需切换到TcpClient.Connect 而不是 ConnectAsync,然后切换 streamreader/write 以使用 WriteLine 和 ReadLine 而不是异步版本。代码应该几乎相同。 【参考方案1】:

要使用直通代码获取新身份,您需要打开与控制端口的连接(通常为 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");

您也可以使用此batch file 请求新身份,但 C# 可能更适合您的应用程序。参考该代码以查看控制连接上的序列以获取新身份。

请参阅ControlPort 和HashedControlPassword 配置选项。

希望对您有所帮助。

【讨论】:

自从编辑我的帖子后,我尝试了您链接到的批处理文件解决方案,并且确实有效,谢谢。它仍然是我的代码之外的东西,所以它并不是我真正想要的,但在我找到解决方案之前它会起作用。谢谢!

以上是关于使用 c# 的 TOR 新身份的主要内容,如果未能解决你的问题,请参考以下文章

不同进程的不同 Tor 身份

在 C# 中使用 Tor 下载文件

C# HttpClient tor socks4/5 代理?

Bitstamp - C# 中的新身份验证 - 签名

不能在 tor 上使用手动连接设置?

Tor网络突破IP封锁,爬虫好搭档入门手册