.net 如何通过Tor发出httpwebrequest

.net 如何通过Tor发出httpwebrequest,.net,proxy,httpwebrequest,tor,.net,Proxy,Httpwebrequest,Tor,我正试图通过tor代理发出请求 myRequest.Proxy = New WebProxy("127.0.0.1", 8118) 但这给了我一个错误 无法连接到远程服务器 内部异常是无法建立连接,因为目标计算机主动拒绝了它127.0.0.1:8118 我的阅读表明这可能是防火墙问题,所以我完全关闭了windows FW,我还临时禁用了我的AVG AV。我没有其他我知道的保护措施 为了更好的衡量,我还尝试了9050和9051作为端口号,但没有帮助 Tor浏览器正在工作,所以我想我的代码也应该工

我正试图通过tor代理发出请求

myRequest.Proxy = New WebProxy("127.0.0.1", 8118)
但这给了我一个错误
无法连接到远程服务器

内部异常是
无法建立连接,因为目标计算机主动拒绝了它127.0.0.1:8118

我的阅读表明这可能是防火墙问题,所以我完全关闭了windows FW,我还临时禁用了我的AVG AV。我没有其他我知道的保护措施

为了更好的衡量,我还尝试了9050和9051作为端口号,但没有帮助

Tor浏览器正在工作,所以我想我的代码也应该工作。如何将代理设置为使用Tor

顺便说一句,“8118”内存不足,我找不到任何关于应该使用哪个端口作为代理的文档

也许我的任务是做别的

万分感谢

编辑

关于privoxy:

在过去(大约一年前或更长时间),我只是下载tor,然后添加8118作为代理,所有这些都起了作用。现在没有了。也许有什么改变了

所以我现在下载了CodeCaster建议的privoxy,现在当tor和privoxy都在运行时,请求就可以工作了,但是,我担心它没有使用tor代理,因为响应会回来,就像服务器识别了im一样

你知道为什么过去我不需要下载privoxy,现在必须下载并启用它吗

多谢各位

编辑#2:测试

我现在制作了一个简单的测试函数,如下所示:

    Function ExternalIP(Optional Proxy As Integer? = Nothing) As String
        Dim webClient = New WebClient
        webClient.Headers.Add("Cache-Control", "max-age=0")
        If Proxy.HasValue Then webClient.Proxy = New WebProxy("127.0.0.1", Proxy.Value)
        Dim ip = webClient.DownloadString("http://myip.ozymo.com/")
        webClient.Dispose()
        Return ip
    End Function
当在不传递代理的情况下使用时,我会恢复我的常规真实ip。到目前为止还不错

当我使用8118作为代理时,它取决于:

如果privoxy正在运行,那么我将恢复我的常规ip(而不是出现在tor浏览器中的伪造ip)。这使得整件事毫无意义

如果它没有运行,那么我会收到上面的错误消息,因为目标机器主动拒绝了127.0.0.1:8118,所以无法建立连接

简单回顾一下,过去我使用Tor本身(加上Vidalia)时没有Privoxy或类似的东西,而且效果很好


谢谢

使用下面的代码获取默认代理并将其分配给myRequest对象

    WebProxy proxy = (WebProxy) WebProxy.GetDefaultProxy();

    // See what proxy is used for resource.
    Uri resourceProxy = proxy.GetProxy(resource);

    // Test to see whether a proxy was selected.
    if (resourceProxy == resource)
    {
        Console.WriteLine("No proxy for {0}", resource);
    } 
    else
    {
        Console.WriteLine("Proxy for {0} is {1}", resource.ToString(),
            resourceProxy.ToString());
    }

来源:

@junior mayhe的回答在这里帮了我的忙

以防万一将来有人偶然发现这个问题


朱尼尔·梅赫:如果你看到这个,请你在这里回答,这样我就可以提高我的销售代表的水平了?谢谢:-)

我将建议一个适合我的选项:您可以使用库

WebProxy类用于使用HTTP代理。正如我所发现的,TOR客户端将自己公开为SOCKS代理,而.NET Framework中不支持该代理。正如你所看到的,你必须建立一个叫做privoxy的东西。这是我在不知道的情况下发现的。请你自己做一些研究。嗨,谢谢。请阅读我的编辑。我不太精通代理。tor不是我的默认代理。我只需要它来完成特定的任务。谢谢