4

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

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

这适用于 http 代理,但它只是不连接到 SOCKS5 代理。我已经在谷歌上广泛搜索了答案,但找不到任何人解决了这个问题,即使我已经找到了几次这个问题。有人知道我该怎么做吗?

4

3 回答 3

2

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

我也处于想使用带有 SOCKS5 代理的内置 .NET Web 功能的情况,但还没有找到任何令人满意的解决方案。我想我的下一步是通过 Reflector 或 Mono 代码库获取 .NET 类的源代码,并将其重构为使用上述链接中提到的 ProxySocket 类。

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

于 2009-08-15T16:08:14.433 回答
1

如果您能够使用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/");
    }
}
于 2017-11-18T18:31:29.943 回答
0

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

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

于 2015-06-25T11:30:29.750 回答