[chrome拡張機能] chrome.cookies APIの使い方おぼえがき
[chrome拡張機能] chrome.cookies APIの使い方おぼえがき:
SUGOI!Cookies: gclid tester for Google Ads
https://chrome.google.com/webstore/detail/sugoicookies-gclid-tester/oidgodfancakeifokbiocnnlfoocmbpd?hl=ja
こんな拡張機能作ってみました。
幸せになる人:
・今までgclidテストを手打ちでやってた人
・今までわざわざF12 => Application => Cookiesで
Goolge広告やアナリティクスのクッキーを確認していた人
超ニッチです(笑)。せっかくなので、chrome.cookies APIに関してメモ。
Chrome API => https://developer.chrome.com/extensions/cookies
MDN => https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/cookies
なので、content.jsからは、
chrome.runtime.sendMessage で「このAPI呼んで!」と、
叫ぶ必要があります。例えば、下のような感じ。
background.jsではなく、content.jsでやりたいならdocument.cookieでやりましょう
https://developer.mozilla.org/ja/docs/Web/API/Document/cookie
以上です。最後までありがとうございました!
クッキー関係のプラグインを作りました
SUGOI!Cookies: gclid tester for Google Adshttps://chrome.google.com/webstore/detail/sugoicookies-gclid-tester/oidgodfancakeifokbiocnnlfoocmbpd?hl=ja
こんな拡張機能作ってみました。
幸せになる人:
・今までgclidテストを手打ちでやってた人
・今までわざわざF12 => Application => Cookiesで
Goolge広告やアナリティクスのクッキーを確認していた人
超ニッチです(笑)。せっかくなので、chrome.cookies APIに関してメモ。
前提
①: 公式のドキュメントはここです。
Chrome API => https://developer.chrome.com/extensions/cookiesMDN => https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/cookies
②: このAPIは、background.jsでしか呼べない。
なので、content.jsからは、chrome.runtime.sendMessage で「このAPI呼んで!」と、
叫ぶ必要があります。例えば、下のような感じ。
content.js
/** * to background.js */ const getCookies_ = () =>{ chrome.runtime.sendMessage({message:'getCookies', domain:document.domain}, function callback); };
background.js
/** * eventListener * chrome.cookies should be called in this file */ chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { const domain = request.domain; const msg = request.message; if(msg=='getCookies'){ chrome.cookies.get... } });
3: manifest.jsonで「このURLのクッキー触るよ」の宣言が必要
manifest.json
{ "permissions": [ "cookies", "*://*.google.com" ] }
API
onChanged : クッキーに変更が加えられてた時に呼ばれます
onChanged.addEventListener
/** * listen to change events to cookies */ chrome.cookies.onChanged.addListener((e)=>{ console.log(e.cause)); // @type{string} 'expired', 'explicit' or 'override' console.log(e.cookie)); /** @type{Object}*/ const cookie = e.cookie; cookie.url /** @type string*/ // manifest.jsonで該当URLのpermissionが必要です。 cookie.name /** @type string*/ // クッキーは"name=val"形式。name部分です。 cookie.value /** @type string*/ // "name=val" のval cookie.domain /** @type string*/ cookie.path /** @type string*/ cookie.secure /** @type boolean*/ cookie.httpOnly /** @type boolean*/ cookie.SameSiteStatus /** @type Enum "no_restriction", "lax", or "strict" */ cookie.expirationDate /** @type double*/ cookie.storeId /** @type string*/ console.log(e.removed)); // @type{boolean} 削除されたのか、作られたのか });
onChanged.removeEventListener: イベントリスナーの削除
/* * @private * @param {Object} event */ function doSomething_(event){ // do something }; chrome.cookies.onChanged.addListener(doSomething_); chrome.cookies.onChanged.removeListener(doSomething_);
getAll : 空オブジェクトを渡せば本当に全部のクッキーが。ドメイン渡せば、そのドメインのクッキーがリターン。
chrome.cookies.getAll({},((allCookies)=>{ doSomething_(allCookies); })); chrome.cookies.getAll({domain:'qiita.com'},((qiitaCookies)=>{ doSomething_(qiitaCookies); }));
get: url, nameを指定して、クッキーを1つゲット
chrome.cookies.get({url:'aurl', name:'aCookieName'}, ((aCookie)=>{ doSomething_(cookie); }));
remove: url, nameを指定して、クッキーを1つ削除
chrome.cookies.remove({url:'url', name:'cookieName'}, function callback);
set: クッキーを生成します。
/** * Objectの中にurlプロパティは必須です。 */ chrome.cookies.set(object details, function callback);
番外編
background.jsではなく、content.jsでやりたいならdocument.cookieでやりましょうhttps://developer.mozilla.org/ja/docs/Web/API/Document/cookie
//そのドメインのクッキーが、stringで入る let cookies = document.cookie; // Array.<string> - 'name=value'の配列 cookies = cookies.split(';'); // 新しいクッキーを生成 document.cookie = 'aNewName=aNewVal';
コメント
コメントを投稿