【问题标题】:how to make httpwebrequest via Tor如何通过 Tor 进行 httpwebrequest
【发布时间】:2012-08-09 19:16:12
【问题描述】:

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

myRequest.Proxy = New WebProxy("127.0.0.1", 8118)

但这给了我一个错误 Unable to connect to the remote server

内部异常是No connection could be made because the target machine actively refused it 127.0.0.1:8118

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

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

Tor 浏览器正在运行,所以我想我的代码应该也能正常运行。如何设置代理以使用 Tor。

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

也许我的 tor 设置了别的东西?

感谢一百万!

编辑

关于隐私:

过去(大约一年前或更长时间)我只是下载 tor,然后添加 8118 作为代理,一切正常。现在没有了。也许有什么变化?

所以我现在按照 CodeCaster 的建议下载了 privoxy,现在当 tor 和 privoxy 都在运行时,请求可以工作,但是,恐怕它没有使用 tor 代理,因为响应回来了,好像我被服务器

你知道为什么过去我不必下载 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)。这让整个事情变得毫无意义

如果它没有运行,那么我得到上述错误No connection could be made because the target machine actively refused it 127.0.0.1:8118

回顾一下,过去我使用 Tor 本身(加上 Vidalia)没有 Privoxy 或类似的东西,它工作得很好。

谢谢

【问题讨论】:

  • WebProxy 类用于使用 HTTP 代理。如我所见,TOR 客户端将自身暴露为 SOCKS 代理,.NET Framework 中不存在对此的支持。正如您所看到的here,您必须设置一个叫做privoxy 的东西。这是我在没有任何 SOCKS 或 TOR 知识的情况下发现的。请尝试自己展示一些研究成果。
  • 嗨,谢谢。请阅读我的编辑。我不太精通代理。

标签: .net proxy httpwebrequest tor


【解决方案1】:

我会建议一个适合我的选项:您可以使用 Tor.NET

【讨论】:

    【解决方案2】:

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

    using Tor as Proxy

    以防万一其他人将来偶然发现这个问题......

    junior-mayhe:如果你看到这个,请你在这里回答,这样我可以提高我的代表吗?谢谢:-)

    【讨论】:

      【解决方案3】:

      使用下面的代码获取您的默认代理并为其分配 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());
          }
      

      来源:http://msdn.microsoft.com/en-us/library/system.net.webproxy.getdefaultproxy.aspx

      【讨论】:

      • tor 不是我的默认代理。我只需要它来完成特定的任务。谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-16
      • 2018-11-25
      • 1970-01-01
      • 2010-09-19
      • 1970-01-01
      相关资源
      最近更新 更多