Chrome拡張機能から特定のドメインのcookieの値を取得する
Chrome拡張機能のバックグラウンドスクリプトから特定のサイトのcookieの値を取得したくて、その方法について調べた。
といっても、👆の公式ドキュメント書かれてるとおり、 chrome.cookies
っていうAPIがChromeに用意されているので、それを使うだけなんだけど。
まず、マニフェストのパーミッションにcookie利用の旨と、取得対象のホストを指定する必要がある。でも、ドキュメントの例を参考にしてそのまま書くと Permission '*://*sample.com' is unknown or URL pattern is malformed.
というエラーになってしまうので注意が必要。
{ "name": "My extension", ... "permissions": [ "cookies", "*://*.sample.com" ], ... }
正しくは、以下のように、ドメインの後ろにスラッシュが必要だった。
{ "name": "My extension", ... "permissions": [ "cookies", "*://*.sample.com/" ], ... }
マニフェストを指定したら、あとはバックグラウンドスクリプトで chrome.cookies.get()
の第一引数にパラメータ、第二引数にコールバック関数を指定して実行するだけ。
function getUserID() { return new Promise((resolve, reject) => { chrome.cookies.get( { url: 'https://www.sample.com/', name: 'USERID', }, cookie => { return cookie ? resolve(cookie.value) : reject(new Error('no cookie')); } ); }); }
値をPromiseで返すようにしとけば、この関数を使う先で、cookieの値を取得したあとに何かしらの処理をするってするとき楽かなと思って👆みたいに書いた。
Chrome拡張、いろいろできておもしろい。