シークレットモードでは、自分の拡張機能を動作させようとしています。私はそれを"incognito": "split"
を私のmanifest.jsonに追加して、background.jsのifステートメントをchrome.extension.inIncognitoContext
を探して追加することで、動作させることはできません。Chrome拡張機能を使用して、シークレットモードでのみユーザーエージェントのヘッダーを変更します。
編集:
わかりましたので、私がやろうとしていることだけでシークレットモードでの実行をしながら、私のユーザーエージェントのヘッダーを変更しています。私はこれに基づいてこれをやっています:http://elaineou.com/2016/02/19/how-to-use-chrome-extensions-to-bypass-paywalls/
上記のリンクで動作しますが、シークレットモードではすべてのウェブサイトで動作するようには見えません。これも公開されず、シークレットボタンで許可が許可されています。
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"]);
}
うーん、それもうまくいきませんでした。更新された質問を確認できますか?これはシークレットモードでは関係ありません。 –
@JackRothrockシークレット機能はデフォルトでは無効になっています。シークレットモードを有効にしましたか? –
うん。私がシークレットから取り除くと、ifを削除することによって、クッキーを無効にすることによって動作するように見えますが、ユーザーエージェントの見出しに変更されないようです。 http:// */* –