c# - 使用 C# 自动设置 Internet Explorer/Windows 以使用 Socks5 代理

标签 c# http sockets

我正在制作一个 SSH 隧道应用程序,需要能够自动强制系统使用 HTTP 和 Socks5 代理,并使更改立即生效。 HTTP 代理现在由 PoshHTTP class 完美处理, 但我不知道如何用 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){ }
    }

关于c# - 使用 C# 自动设置 Internet Explorer/Windows 以使用 Socks5 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8866614/

相关文章:

Java Socket 服务器应用程序 : Getting the packet after long delay

sockets - 关于 Java EE 的问题?

c# - 在 UWP 中导航回来后 AdControl 停止更新

c - 为客户端收到的消息出现段错误

c# - 表达式几乎相同,但其中一个不起作用

json - 如何防止用户代理显示无法识别的 MIME 类型的下载窗口?

python - 如何在Python中使用SSH连接从远程主机发送HTTP GET请求?

http - 使用 HTTP 集成从 AWS Api Gateway 中的 websocket 中提取 websocket 连接 ID 和其他详细信息

c# - MSMQ 事件日志记录不显示丢弃的消息?

c# - 在 C# 中调用 C++ DLL 库中的导出函数