2009-02-09 49 views
0

我正在使用WCF的netTcpBinding,它直接连接到端点,似乎并不知道袜子代理的任何事情。如何强制System.Net.Socket.Connect()方法使用socks代理(代码注入vs外部自定义代理)

我需要使用代理服务器,因为我的大多数客户端不会允许直接出站连接,并且始终强制使用袜子代理服务器。

  • 我的第一个想法是配置.NET Framework来做到这一点,所以我编辑machine.config文件如下,但似乎只与HTTP代理(未袜子)

    <system.net> 
    <defaultProxy enabled="true"> 
        <proxy usesystemdefault="False" proxyaddress="foo:1080" bypassonlocal="True"/> 
        <module /> 
    </defaultProxy> 
    </system.net> 
    
  • 工作
  • 我的第二个选择是实现从netTcpBinding继承的自定义绑定,并且只覆盖连接逻辑以添加代理代码。

    我dissasembled的System.ServiceModel组装,不幸的是,很多类被标记为内部(包括SocketConnectionInitiator,ConnectionPoolHelper,ClientFramingDuplexSessionChannel和FramingDuplexSessionChannel,并可能其他藏汉)

    这使得创建一个自定义NetTcpBinding的一个巨大的工作,而且可能会导致一些问题,因为.net框架的新版本交付。

  • 另一个想法是将一些代码直接注入到Socket.Connect()方法中。这很容易实现,但我对修改.net框架的内部代码不是很有信心。另外,虽然套接字类没有被标记为密封,但我害怕破坏某些东西,特别是在后来的框架中。

  • 我现在最后的想法:我可以创建一个小代理工具,与我的软件运行在同一台计算机上,它会自动连接到公司的socks代理,并发出良好的“连接服务器”命令到真正的袜子代理。

后一种选择在我看来是更好的,但我很好奇听到别人的意见。

您认为如何?

回答

0

使用sockscap里,WideCap,或什么的,如果你可以把它安装到客户端计算机

或实现/找到一些袜子> HTTP代理和使用。