使用c#

时间:2015-10-13 16:30:41

标签: c# webrequest tor socks

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

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

我已经尝试过使用TorSharp,但是虽然有效但只能使用Async,我无法正常使用它。我目前正在使用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但我停了下来。在那里创建一个新的身份非常容易,但它完全运行Async,我无法修复它以将其与我的其余代码一起使用。

1 个答案:

答案 0 :(得分:3)

要使用代码获取新身份,您需要打开与控制端口的连接(通常为9051并默认禁用[编辑您的torrc以添加<catalog> <book id="bk102"> <author>Ralls, Kim</author> <title>Midnight Rain</title> <genre>Fantasy</genre> <price>5.95</price> <publish_date>2000-12-16</publish_date> <description>A former architect battles corporate zombies, an evil sorceress, and her own childhood to become queen of the world.</description> </book> </catalog> ])并发出NEWNYM信号以建立新电路。

为此,您可以使用TorSharp中的TorControlClient类。

ControlPort 9051

您也可以使用此batch file来申请新身份,但C#可能更适合您的应用。引用该代码以查看控件连接上的序列以获取新标识。

请参阅ControlPortHashedControlPassword配置选项。

希望有所帮助。