我正在尝试通过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条答案
按热度按时间pvabu6sv1#
显然,Microsoft没有将SOCKS代理支持构建到他们的Web类中(参见http://windows-tech.info/13/f17246e7dd4a8a2b.php)
我也想通过SOCKS5代理使用内置的.NET Web功能,但还没有找到任何满意的解决方案。我想我的下一步是通过Reflector或从Mono代码库获得.NET类的源代码,并将其重构为使用上面链接中提到的ProxySocket类。
这比我想要的工作要多,但似乎是唯一的方法。
afdcj2ne2#
在.NET 6中,您可以轻松地执行以下操作:
或者可以注入
IHttpClientFactory
时(推荐方式):在
ConfigureServices
方法中:然后在控制器中或任何可以注入
IHttpClientFactory
对象的位置,创建一个新的httpClient(配置了代理)示例,如下所示:以下是更详细的说明:https://dotnetcoretutorials.com/2021/07/11/socks-proxy-support-in-net/
uqjltbpv3#
如果您可以使用HttpClient,就可以使用SocksSharp。
我只是照着这个例子做,它对我很有效。
mccptt674#
理论上,你可以继承webservice类并覆盖GetWebRequest和GetWebResponse,然后你可以使用这个c# socks类http://www.codeproject.com/Articles/5954/C-class-for-connecting-via-a-SOCKS-Proxy-Server,将webrequest转换成sockets,然后再转换回来。
我所能找到的最快的解决方案是使用WideCap设置一个系统范围的socks代理。这将通过socks代理服务器路由机器上的所有流量。