Как получить настройки прокси из IE? - PullRequest
4 голосов
/ 31 января 2011

Мне нужно найти настройки прокси в IE, чтобы настроить RCUrl. Настройки не могут быть отображены в IE (администраторы больницы «заштриховали» всю коробку). Я понимаю, что есть функция, позволяющая раскрыть настройки прокси для IE (WinHttpGetIEProxyConfigForCurrentUser) Поскольку я знаю только R (статистику), где эта функция недоступна, какой самый простой способ получить выходные данные этой функции? Это можно назвать в Excel?

// M

Ответы [ 5 ]

2 голосов
/ 23 марта 2018

Вот разные способы сделать это. Из R используйте system2, чтобы получить эту информацию.

Из PowerShell:

param ($reqUrl)

$source = @"
public class WinHttp
{
    [System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)]
    public struct WinhttpCurrentUserIeProxyConfig
    {
        [System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.Bool)]
        public bool AutoDetect;
        [System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPWStr)]
        public string AutoConfigUrl;
        [System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPWStr)]
        public string Proxy;
        [System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPWStr)]
        public string ProxyBypass;

    }

    [System.Runtime.InteropServices.DllImport("winhttp.dll", SetLastError = true)]
    static extern bool WinHttpGetIEProxyConfigForCurrentUser(ref WinhttpCurrentUserIeProxyConfig pProxyConfig);

    public static string GetProxyForUrl(string reqUrl)
    {
        var config = new WinhttpCurrentUserIeProxyConfig();

        WinHttpGetIEProxyConfigForCurrentUser(ref config);

        // System.Console.WriteLine("Proxy: {0}", config.Proxy); // eg. 104.129.192.32:443
        // System.Console.WriteLine("AutoConfigUrl: {0}", config.AutoConfigUrl); // http://xxxxx/nam.filt.pac
        // System.Console.WriteLine("AutoDetect: {0}", config.AutoDetect); // True
        // System.Console.WriteLine("ProxyBypass: {0}", config.ProxyBypass); // *.microsoft.com;*.corp.com;*.dev.microsoft.com;*.ms.com;*.local;<local>

        var w = System.Net.WebRequest.GetSystemWebProxy();
        var url = new System.Uri(reqUrl);
        if (w.IsBypassed(url)) return "DIRECT";
        return w.GetProxy(url).ToString();
    }
}
"@

if ($reqUrl.length -eq 0) {
    echo "Missing argument"
    echo "getSystemProxyForUrl.ps1 -- will determine the proxy to be used for the given url"
    echo "Example:"
    echo "    powershell .\getSystemProxyForUrl.ps1 http://microsoft.com"
    echo "Outputs proxy url to standard out"
    echo "or if no proxy is required, outputs the word DIRECT"
    exit
}

Add-Type -TypeDefinition $Source -Language CSharp  

([WinHttp]::GetProxyForUrl($reqUrl))

Затем вы можете запустить его из командной строки или командного файла, например:

powershell .\getSystemProxyForUrl.ps1 http://microsoft.com"

Если для http://microsoft.com требуется прокси, он будет отображаться в «стандартном выходе», в противном случае будет напечатано слово «DIRECT»

Из C #:

Обратите внимание, что раздел в @ "" @ - это весь код C #, поэтому тот, кто хочет сделать это из C #, просто извлекает этот код и передает URL-адрес WinHttp.GetProxyForUrl ()

От NodeJS:

Использовать модуль: https://www.npmjs.com/package/get-system-proxy-for-url

Установка:

$ npm i -S get-system-proxy-for-url
$ yarn add get-system-proxy-for-url

Пример кода:

var url = require('url');
var getSystemProxyForUrl = require('get-system-proxy-for-url');

getSystemProxyForUrl("http://google.com")
.then(function(proxy) {
    if (proxy === "DIRECT") {
        console.log("proxy not required");
    } else {
        var endpoint = url.parse(proxy);
        console.log(endpoint.href);
    }
});
2 голосов
/ 31 января 2011

Существует ряд собственных вызовов C ++, которые используются для извлечения этих данных, но если вы не можете вызвать произвольные функции, вам не повезло. Если вы можете прочитать реестр, вы можете прочитать большинство информации о прокси. См. HKLM и HKCU в разделе \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \, ключи ProxyEnable, ProxyServer и ProxyOverride.

1 голос
/ 03 января 2017

Используйте приведенный ниже URL в chrome, и вы сможете увидеть настройки прокси

chrome://net-internals/#proxy
0 голосов
/ 26 апреля 2019

Откройте regedit.exe и перейдите на HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings Если прокси включен, вы найдете адрес под ProxyServer

0 голосов
/ 25 января 2012
netsh diag show ieproxy

запускается из командной строки, сообщает, какой прокси-сервер вы используете

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...