簡體   English   中英

使用 C# 自動設置 Internet Explorer/Windows 以使用 Socks5 代理

[英]Automatically Setting Internet Explorer/Windows to use a Socks5 proxy using C#

我正在制作一個 SSH 隧道應用程序,需要能夠自動強制系統使用 HTTP 和 Socks5 代理,並使更改立即生效。 HTTP 代理現在由PoshHTTP 類完美處理,但我不知道如何用 SOCKS5 做同樣的事情。

我已經嘗試強制更改注冊表,但它們不會立即生效,而且不可靠。 在大多數情況下,我必須在設置生效之前打開 Internet 選項 > lan 設置,因此用戶此時最好手動設置代理。

有沒有辦法做到這一點,我錯過了? 如果我可以修改 poshHTTP 來做到這一點,那就太棒了,但我並不抱太大希望。

任何人來到這里想知道 Tor,這可能對你有用

    public struct Struct_INTERNET_PROXY_INFO
    {
        public int dwAccessType;
        public IntPtr proxy;
        public IntPtr proxyBypass;
    };

    [DllImport("wininet.dll", SetLastError = true)]
    public static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength);

    public static void RefreshProxy()
    {
        try
        {
            //RESTART TOR
            Struct_INTERNET_PROXY_INFO struct_IPI;
            struct_IPI.dwAccessType = 3;
            struct_IPI.proxy = Marshal.StringToHGlobalAnsi("socks=127.0.0.1:9050");
            struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi("local");
            IntPtr intptrStruct = Marshal.AllocCoTaskMem(Marshal.SizeOf(struct_IPI));
            Marshal.StructureToPtr(struct_IPI, intptrStruct, true);
            InternetSetOption(IntPtr.Zero, 38, intptrStruct, Marshal.SizeOf(struct_IPI));
        }
        catch (Exception){ }
    }

在另一個論壇上尋求幫助后找到了解決方案。 最后,我能夠繼續使用我在其他地方使用的 PoshHTTP 類,而不是只傳遞 ip:port 像這樣使用它

PoshHttp.Proxies.SetProxy("socks=socks://$ip:$port"); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM