Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome extension 仅在带有Chrome扩展名的匿名模式下更改用户代理标题_Google Chrome Extension_User Agent_Incognito Mode - Fatal编程技术网

Google chrome extension 仅在带有Chrome扩展名的匿名模式下更改用户代理标题

Google chrome extension 仅在带有Chrome扩展名的匿名模式下更改用户代理标题,google-chrome-extension,user-agent,incognito-mode,Google Chrome Extension,User Agent,Incognito Mode,我试图让我的分机只在匿名模式下工作。我似乎无法通过在manifest.json中添加“incognito”:“split”,并在background.js中添加一个if语句来查找chrome.extension.inIncognitoContext,从而使其正常工作 编辑: 好的,所以我要做的是在隐姓埋名的情况下更改我的用户代理头。我这样做的基础是: 它适用于上述链接,但我似乎无法让它在匿名模式下适用于所有网站。这也不会被释放,我确实有允许在隐姓埋名按钮检查 manifest.json {

我试图让我的分机只在匿名模式下工作。我似乎无法通过在manifest.json中添加
“incognito”:“split”
,并在background.js中添加一个if语句来查找
chrome.extension.inIncognitoContext
,从而使其正常工作

编辑:

好的,所以我要做的是在隐姓埋名的情况下更改我的用户代理头。我这样做的基础是:

它适用于上述链接,但我似乎无法让它在匿名模式下适用于所有网站。这也不会被释放,我确实有允许在隐姓埋名按钮检查

manifest.json

{
  "name": "Incognito Chrome Extension",
  "version": "0.1",
  "description": "This is an incognito chrome extension.",
  "incognito": "split",
  "permissions": ["webRequest", "webRequestBlocking",
                   "http://localhost:3000/",
                   "http://*/*",
                   "https://*/*"
                  ],
  "background": {
    "scripts": ["background.js"]
  },
  "manifest_version": 2
}
Background.js

var ALLOW_COOKIES = [""];
if(chrome.extension.inIncognitoContext){
    function changeRefer(details) {
    foundReferer = false;
    foundUA = false;

    var reqHeaders = details.requestHeaders.filter(function(header) {
      // block cookies by default
      if (header.name !== "Cookie") {
        return header;
      } 

      allowHeader = ALLOW_COOKIES.map(function(url) {
        if (details.url.includes(url)) {
          return true;
        }
        return false;
      });
      if (allowHeader.reduce(function(a, b) { return a || b}, false)) { return header; }

    }).map(function(header) {

      if (header.name === "Referer") {
        header.value = "https://www.google.com/";
        foundReferer = true;
      }
      if (header.name === "User-Agent") {
        header.value = "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko";
        foundUA = true;
      }
      return header;
    });

    // append referer
    if (!foundReferer) {
      reqHeaders.push({
        "name": "Referer",
        "value": "https://www.google.com/"
      });
    }
    if (!foundUA) {
      reqHeaders.push({
        "name": "User-Agent",
        "value": "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko"
      });
    }
    console.log(reqHeaders);
    return {requestHeaders: reqHeaders};
  }

  function blockCookies(details) {
    for (var i = 0; i < details.responseHeaders.length; ++i) {
      if (details.responseHeaders[i].name === "Set-Cookie") {
        details.responseHeaders.splice(i, 1);
      }
    }
    return {responseHeaders: details.responseHeaders};
  }

  chrome.webRequest.onBeforeSendHeaders.addListener(changeRefer, {
    urls: ["<all_urls>"],
    types: ["main_frame"],
  }, ["requestHeaders", "blocking"]);

  chrome.webRequest.onHeadersReceived.addListener(blockCookies, {
    urls: ["<all_urls>"],
    types: ["main_frame"],
  }, ["responseHeaders", "blocking"]);
}
var ALLOW_COOKIES=[“”];
if(chrome.extension.InInIncognitoContext){
功能更改参考(详细信息){
foundReferer=false;
foundUA=假;
var reqHeaders=details.requestHeaders.filter(函数(标题){
//默认情况下阻止cookie
if(header.name!=“Cookie”){
返回头;
} 
allowHeader=允许COOKIES.map(函数(url){
if(details.url.includes(url)){
返回true;
}
返回false;
});
if(alloweader.reduce(函数(a,b){return a | | b},false)){return header;}
}).map(函数(标题){
如果(header.name==“Referer”){
header.value=”https://www.google.com/";
foundReferer=true;
}
if(header.name==“用户代理”){
header.value=“Mozilla/5.0(Windows NT 6.3;Trident/7.0;rv:11.0)像Gecko”;
foundUA=真;
}
返回头;
});
//附加引用器
如果(!foundReferer){
推送({
“姓名”:“推荐人”,
“值”:https://www.google.com/"
});
}
如果(!foundUA){
推送({
“名称”:“用户代理”,
“值”:“Mozilla/5.0(Windows NT 6.3;Trident/7.0;rv:11.0)与Gecko一样”
});
}
console.log(reqHeaders);
返回{requestHeaders:reqHeaders};
}
功能块cookies(详细信息){
对于(变量i=0;i
我想您关心的是额外冗余的后台页面处理

添加清单文件,并在非匿名模式下关闭扩展名的后台页面:

//背景页或事件页:
如果(!chrome.extension.InInIncognitoContext){
window.close();
}
内容脚本仍将在非匿名页面中运行。要解决这个问题,只需在检查扩展是否在匿名模式下运行后退出代码(类似于上面的检查)


注意:如果扩展将被发布并且仅在隐姓埋名模式下有用,请考虑检查是否启用了匿名模式,并在禁用时提供指示。参见,例如

嗯,这也不起作用。你能查一下我最新的问题吗?这可能与它处于隐姓埋名模式无关。@默认情况下禁用JackRothrock隐姓埋名。你启用了隐姓埋名模式吗?是的。当我把它从隐姓埋名中移除时——通过移除if——它似乎通过禁用cookie起作用,但似乎没有改变为用户代理标题。它在处理单个站点时有效,但在http(s)上无效://*/*@JackRothrock您是如何测试它的?devtools的“网络”选项卡不显示按扩展进行的修改。请注意,更改标题不会更改
navigator.userAgent
的值。哦,很有趣。是的,我只是在使用dev工具,在localhost:3000上查看请求头,这实际上改变了req头,同时注意到站点上禁用了cookie。嗯,soooo我不知道是否已经知道了,但是互联网是美丽的。我刚找到你的一篇老帖子,谢谢你,哈哈。明天我会更深入地研究这个问题