首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查Pac脚本的响应

如何检查Pac脚本的响应
EN

Stack Overflow用户
提问于 2019-09-29 23:11:42
回答 1查看 1.7K关注 0票数 3

我需要在我的chrome扩展中获得pacScript的响应。pacScript将返回DIRECT字符串,以防我们不需要代理,而我想要检测到这一点。

代码语言:javascript
运行
复制
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获得实现,但肯定有更好的方法,因为这些都是浏览器功能,应该已经可以使用了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-06 14:47:13

你想要做的事情是不可能的。这是因为您请求的每个url都会对pac文件进行评估。因此,'pac response string‘不是一个可以在设置代理设置时返回的常量。

如果您正在尝试调试pac文件,则可以在返回设置之前在FindProxyForURL中执行alert('settings')。此警报会创建一个可通过chrome://net-internals/#events功能访问的日志条目。

如果您只想测试用户使用的是直接连接还是代理,您可以比较设置代理设置前后的外部ip地址。签出ipify.org,或者你甚至可以在你自己的web服务器上使用脚本。

下面是一些示例代码:

代码语言:javascript
运行
复制
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)
    })
});
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58156492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档