使用 c# 的 TOR 新身份
New identity for TOR using c#
我正在使用我的 TOR 浏览器连接到 .onion
网站并使用 C# 下载数据。我想做的是添加一个允许用户获得新身份的按钮,但到目前为止我尝试的一切都没有奏效。
我试过使用 telnet,向端口 9151 发送网络请求,运行 一个本应执行此操作的 vbs,但没有任何效果。
我试过使用 TorSharp,但虽然它有效,但它只适用于异步,我无法正确使用它。我目前正在使用 com.LandonKey.SocksWebProxy
.
我该怎么做?
我知道需要什么的时候会添加相关代码,尽管问。
编辑:
@Ralph Wiggum
遗憾的是,我不记得我尝试创建新身份的所有方式,正如我所说,我尝试了 运行 和 VBS
使用 Diagnostic.Process.Start()
,但我没有那个剧本了。
我也尝试过使用 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
class。
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 and HashedControlPassword 配置选项。
希望对您有所帮助。
我正在使用我的 TOR 浏览器连接到 .onion
网站并使用 C# 下载数据。我想做的是添加一个允许用户获得新身份的按钮,但到目前为止我尝试的一切都没有奏效。
我试过使用 telnet,向端口 9151 发送网络请求,运行 一个本应执行此操作的 vbs,但没有任何效果。
我试过使用 TorSharp,但虽然它有效,但它只适用于异步,我无法正确使用它。我目前正在使用 com.LandonKey.SocksWebProxy
.
我该怎么做?
我知道需要什么的时候会添加相关代码,尽管问。
编辑:
@Ralph Wiggum
遗憾的是,我不记得我尝试创建新身份的所有方式,正如我所说,我尝试了 运行 和 VBS
使用 Diagnostic.Process.Start()
,但我没有那个剧本了。
我也尝试过使用 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
class。
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 and HashedControlPassword 配置选项。
希望对您有所帮助。