如何检查 Pac 脚本的响应
How to check response of Pac script
我需要在 chrome extension.A pacScript will return DIRECT
字符串中获取 pacScript 的响应,以防我们不需要代理,我想检测到。
var config = {
mode: "pac_script",
pacScript: {
url: "https://www.example.com/proxy.pac"
}
};
chrome.proxy.settings.set({value: config, scope: 'regular'},function() {
//how can i get the pac response string here
});
编辑:
我尝试使用 JQuery.getScript
从远程 pac 文件加载 FindProxyForURL
但现在像 isPlainHostName
这样的 pac 特定函数现在未定义。
我可以从 mozilla 获得实现,但必须有更好的方法,因为这些浏览器功能应该已经可用。
你想做的根本不可能。这是因为针对您请求的每个 url 都会评估一个 pac 文件。因此,'pac response string' 不是可以在设置代理设置时返回的常量。
如果您正在尝试调试 pac 文件,您可以在 FindProxyForURL
中 alert('settings')
返回设置之前。警报创建一个日志条目,可以通过 chrome://net-internals/#events
功能访问。
如果只想测试用户使用的是直连还是代理,可以对比设置代理设置前后的外网ip地址。检查 ipify.org 或者您甚至可以在自己的 Web 服务器上使用脚本。
下面是一些示例代码:
let originalIp = "";
async function getCurrentIp() {
var res = await fetch('http://api.ipify.org/');
return await res.text();
}
// Get ip before setting proxy
getCurrentIp().then(ip => {
originalIp = ip;
});
var config = {
mode: "pac_script",
pacScript: {
url: "https://www.example.com/proxy.pac"
}
};
chrome.proxy.settings.set({
value: config,
scope: 'regular'
}, function() {
// Get ip after setting proxy and compare it with original ip
getCurrentIp().then(ip => {
if (ip == originalIp)
console.log('DIRECT');
else
console.log('PROXY: ' + ip)
})
});
我需要在 chrome extension.A pacScript will return DIRECT
字符串中获取 pacScript 的响应,以防我们不需要代理,我想检测到。
var config = {
mode: "pac_script",
pacScript: {
url: "https://www.example.com/proxy.pac"
}
};
chrome.proxy.settings.set({value: config, scope: 'regular'},function() {
//how can i get the pac response string here
});
编辑:
我尝试使用 JQuery.getScript
从远程 pac 文件加载 FindProxyForURL
但现在像 isPlainHostName
这样的 pac 特定函数现在未定义。
我可以从 mozilla 获得实现,但必须有更好的方法,因为这些浏览器功能应该已经可用。
你想做的根本不可能。这是因为针对您请求的每个 url 都会评估一个 pac 文件。因此,'pac response string' 不是可以在设置代理设置时返回的常量。
如果您正在尝试调试 pac 文件,您可以在 FindProxyForURL
中 alert('settings')
返回设置之前。警报创建一个日志条目,可以通过 chrome://net-internals/#events
功能访问。
如果只想测试用户使用的是直连还是代理,可以对比设置代理设置前后的外网ip地址。检查 ipify.org 或者您甚至可以在自己的 Web 服务器上使用脚本。
下面是一些示例代码:
let originalIp = "";
async function getCurrentIp() {
var res = await fetch('http://api.ipify.org/');
return await res.text();
}
// Get ip before setting proxy
getCurrentIp().then(ip => {
originalIp = ip;
});
var config = {
mode: "pac_script",
pacScript: {
url: "https://www.example.com/proxy.pac"
}
};
chrome.proxy.settings.set({
value: config,
scope: 'regular'
}, function() {
// Get ip after setting proxy and compare it with original ip
getCurrentIp().then(ip => {
if (ip == originalIp)
console.log('DIRECT');
else
console.log('PROXY: ' + ip)
})
});