首页 文章

通过SOCKS5代理连接到.NET Web服务

提问于
浏览
3

我正在尝试通过SOCKS5代理连接到Web服务 . 目前,我的app.config如下:

<system.net>
 <defaultProxy enabled="true"  >
  <proxy proxyaddress="http://xxx.xxx.xxx.xxx:yyyy" bypassonlocal="True" />
 </defaultProxy>
</system.net>

这适用于http代理,但它只是不连接到SOCKS5 . 我已经谷歌搜索到了答案,并且找不到任何解决了这个问题的人,即使我已经找到了几次问题 . 任何人都知道如何做到这一点?

3 回答

  • 2

    显然,Microsoft没有在他们的Web类中构建SOCKS代理支持(参见http://windows-tech.info/13/f17246e7dd4a8a2b.php

    我也处于这样一种情况,即我希望将内置的.NET Web功能与SOCKS5代理一起使用,并且没有找到任何令人满意的解决方案 . 我想我的下一步是通过Reflector或Mono代码库获取.NET类的源代码,并重构它以使用上面链接中提到的ProxySocket类 .

    这比我想要的更多,但似乎是唯一的方法 .

  • 0

    理论上,您可以继承Web服务类并重写GetWebRequest和GetWebResponse . 然后你可以使用这个c#socks类http://www.codeproject.com/Articles/5954/C-class-for-connecting-via-a-SOCKS-Proxy-Server并将webrequest转换为套接字并再次返回 .

    我能找到的最快的解决方案是使用WideCap设置系统范围的socks代理 . 这将通过socks代理服务器路由计算机上的所有流量 .

  • 0

    如果您能够使用HttpClient,则可以使用SocksSharp .

    我只是按照这个例子,它对我有用 .

    var settings = new ProxySettings()
    {
        Host = "xxx.xxx.xxx.xxx",
        Port = yyyy
    };
    
    using (var proxyClientHandler = new ProxyClientHandler<Socks5>(settings))
    {
        using (var httpClient = new HttpClient(proxyClientHandler))
        {
            var response = await httpClient.GetAsync("http://example.com/");
        }
    }
    

相关问题