gpt4 book ai didi

javascript - 在 Chrome 扩展程序中使用 PAC 文件重定向 HTTPS 请求似乎失败

转载 作者:行者123 更新时间:2023-11-28 00:36:39 26 4
gpt4 key购买 nike

我正在为自己和我的同事设置一个 Chrome 扩展程序(版本 40)

它的功能之一是自动将浏览器中收到的请求重定向到我们的临时服务器 IP 地址。这使我们能够避免像当前那样编辑主机文件以在登台和生产之间切换。每一分钟都很重要..

无论如何,当使用 HTTP 请求的代理配置时,我设置的以下脚本可以完美运行。但是,当尝试在使用 https 请求 url 的网站上运行它时,它会失败并出现以下错误。

net::ERR_TUNNEL_CONNECTION_FAILED

这是我迄今为止设置的代码的主要要点。

PAC File :https://awesomeurl.com/proxy.pac

function FindProxyForURL(url, host) {
var domains = ["url1", "url2", "url3", "url4"], // fake company urls
base = ".awesomecompany.com",
ii;

// our local URLs from the domains below example.com don"t need a proxy:

for(ii=0; ii<domains.length; ii++) {
if(shExpMatch(host, domains[ii] + base)) {
return "PROXY 11.111.111.111"; // Fake IP Address
}
}
return "DIRECT";
}

这是生成 Chrome 设置的脚本。持久性是在其他地方完成的。

/**
* Checks which value has been selected and generates the proxy config that will
* be used for the the chrome settings and persisted.
*
* @param {string} mode The mode requested by the user
* @return {ProxyConfig} the proxy configuration reprensented by the user's selections
* @public
*
*/
function generateProxyConfig(mode) {
switch(mode) {
case proxyValues.NORMAL:
return { mode: 'system' }

case 'production':
return {
mode: 'pac_script',
pacScript: {
url: 'https://awesomeurl.com/proxy.pac',
mandatory: true
}
}
}
}

function applyChanges ( mode, cb ) {
config = generateProxyConfig( mode );

chrome.proxy.settings.set({
value: config,
scope: 'regular'
}, cb );
}

applyChanges('production', function() {console.log('Why doesn't this work for https') })

我发现的唯一一个远程相关的资源 was this one 。这似乎意味着,对于 iOS,由于安全隐患,PAC 文件不能用于重定向 HTTPS 流量。

我想我想看看这是否与 Chrome 相同。请提供任何已知的潜在解决方法。

最佳答案

好吧 - 这是这个问题的一个潜在解决方案,只是不是一个非常优雅的解决方案。

我能够使用webRequest Xan 建议的 API 。

首先,我将以下权限添加到manifest.json 文件中。

"permissions": [
"tabs",
"activeTab",
"http://*/*",
"https://*/*",
"proxy",
"webRequest", // new
"webRequestBlocking" // new
],

然后在一个新文件中,该文件在加载脚本后立即运行。我能够使用以下内容。

// Let's play around with redirecting all https requests to http
'use strict';

console.info('awesome is here')
var domains = ["url1", "url2", "url3", "url4"],
base = ".awesomecompany.com";

chrome.webRequest.onBeforeRequest.addListener(
function(details) {
console.log(details);
return {redirectUrl: details.url.replace('https', 'http')};
}, {urls: domains.map(function(domain) {var url = 'https://' + domain + base + '/*'; return url;})},["blocking"]
);

所以基本上我将所有 URL 重定向到 http 并且它正在工作。

这种黑客让我内心感觉非常糟糕 - 但我已经花了太多时间寻找解决方案。

关于javascript - 在 Chrome 扩展程序中使用 PAC 文件重定向 HTTPS 请求似乎失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28413626/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com