2009-02-09 48 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代理和使用。