Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9138

Puppeteerで3rd-party cookieを保存・利用する

$
0
0

Puppeteerで3rd-party cookieを保存・利用したい場合の処理についてまとめました。ログイン処理がクロスサイトになっているWebページをPuppeteerで利用する場合など、下記の知識が必要になることがあります。

cookieのセーブ

cookieを保存するファイルをtmpdirに作る方針のコードです。別のパスに保存する場合はよしなに変更してください。

constos=require('os');constpath=require('path');constfs=require('fs').promises;/*(中略)*/try{constclient=awaitpage.target().createCDPSession();constallBrowserCookies=(awaitclient.send('Network.getAllCookies')).cookies;constcookiePath=path.join(os.tmpdir(),'cookies.json');awaitfs.writeFile(cookiePath,JSON.stringify(allBrowserCookies,null,2));}catch(err){// do nothingconsole.log(err)}

このコードのポイントはCDP (Chrome DevTools Protocol)のメソッドを呼び出してcookieを取り出している部分です。page.cookies()だと現在のURLに紐付いているcookieしか返してくれないので、3rd-party cookieが必要な場合は使えません。

cookieの読み込み・利用

cookieの読み込みは特に注意点はありません。

下記コードではファイルが見つからなかったときのエラーを無視していますが、仕事のコードならもう少し真面目にエラー処理を書いた方がいいと思います。

constos=require('os');constpath=require('path');constfs=require('fs').promises;/*(中略)*/try{constcookiePath=path.join(os.tmpdir(),'cookies-dmarcket.json');constcookiesString=awaitfs.readFile(cookiePath);constcookies=JSON.parse(cookiesString);awaitthis.page.setCookie(...cookies);}catch(err){// do nothingconsole.log(err)}

元ネタ


Viewing all articles
Browse latest Browse all 9138

Trending Articles