Автоматическая настройка Internet Explorer / Windows для использования прокси Socks5 с использованием C # - PullRequest
1 голос
/ 15 января 2012

Я создаю приложение SSH Tunneling, и мне нужно иметь возможность автоматически заставить систему использовать прокси-серверы HTTP и Socks5, чтобы изменения вступили в силу немедленно.HTTP-прокси теперь отлично обрабатываются классом PoshHTTP , но я не могу понять, как сделать то же самое с SOCKS5.

Я уже пытался форсировать изменения вреестра, но они не вступают в силу немедленно, и это просто ненадежно.В большинстве случаев мне приходилось открывать параметры Интернета> настройки локальной сети до того, как настройки вступили в силу, поэтому пользователь мог также настроить прокси-сервер вручную к этому моменту.

Есть ли способ сделать это, чтобы япропал?Было бы замечательно, если бы я мог просто изменить PoshHTTP, чтобы сделать это, но у меня нет больших надежд.

Я готов заплатить 50 долларов США за работоспособное решение C #, которое вступает в силу немедленно (оплачивается только через PayPal)

Ответы [ 2 ]

1 голос
/ 07 ноября 2015

Кто-нибудь пришел сюда, задаваясь вопросом о 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){ }
    }
0 голосов
/ 17 января 2012

Нашел решение после обращения за помощью на другой форум.В конце концов я смог продолжить использовать класс PoshHTTP, который я использовал в другом месте, но вместо передачи просто ip: port используйте его следующим образом

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