我需要在IE中找到代理设置才能设置RCUrl。这些设置无法在IE中显示(医院管理员已将整个框中的“灰色”)。据我所知,有一个函数可以显示IE的代理设置(WinHttpGetIEProxyConfigForCurrentUser)。因为我只知道R(统计)这个函数不可用 - 从这个函数获得输出的最简单方法是什么?可以在excel中调用吗?
//中号
答案 0 :(得分:2)
有许多本机C ++调用用于检索此数据,但如果您不能调用任意函数,那么您就不走运了。如果您可以阅读注册表,则可以阅读大多数代理信息。请参阅HKLM和HKCU下的\ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \密钥ProxyEnable,ProxyServer和ProxyOverride。
答案 1 :(得分:2)
这是不同的方法。从R开始,使用system2 shell来获取此信息。
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需要代理,它将显示在&#34;标准输出&#34;,否则会打印单词&#34; DIRECT&#34;
请注意,@&#34;中的部分&#34; @是所有C#代码,所以有人想从C#中执行此操作,只需提取该代码并将url传递给WinHttp.GetProxyForUrl()
使用模块: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 :(得分:1)
在Chrome中使用以下网址,您就可以看到代理设置
chrome://net-internals/#proxy
答案 3 :(得分:1)
netsh winhttp show proxy
-在Windows 10上也可以完美运行
答案 4 :(得分:0)
netsh diag show ieproxy
从命令行运行,让您知道您正在使用的代理服务器
答案 5 :(得分:0)
打开regedit.exe并转到HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
如果启用了代理,您将在ProxyServer