我需要在 C# 代码中解析 proxy.pac。通过 WebProxy 方法获取代理不是一种选择,因为我从文件中读取代理设置,而不是从当前系统中读取。
我尝试使用 Jint 和 ClearScript 在 C# 代码中使用嵌套的 JavaScript 引擎。但两者最终都未能读取我的 proxy.pac 中的“shExpMatch”方法。
该文件非常简单,适用于我当前的系统:
function FindProxyForURL(url, host) {
if (shExpMatch(host, "192.*")) {
return "DIRECT";
}
return "PROXY proxyServer:8080; PROXY proxyServer2:80";
}
该工具的旧实现是使用 Microsoft.JScript.Vsa.VsaEngine.CreateEngine(); 自 Visual Studio 2005(超过 10 年前!)以来已弃用,他们所做的只是:启动 JS 引擎,读取或下载并读取文件,结果 = engine.evaluate(script)。然后他们可以将这个结果对象与新的 url 和主机一起使用。
为什么这些 JS 引擎都不知道 shExpMatch 方法?