birdきょうのつぶやき@digitune.bsky.social

きょうのつぶやき@digitune.bsky.social

この話ちょっと補足すると、ChatGPTはDevToolsのApplication-Storage-Cookiesの利用とJS codeは提示してくれたものの、肝心の2つ目のDevToolsを開く必要があることは言わなかったしJS codeも動かないものだった。 (11:14 bskyから・詳細)

ただ、そこで提示されたアイデア、JS codeを読めばやりたいことはなんとなく分かったので、こちらでデバッグして動くようにしたのがmemoに書いた方法。実はこのプロセスって人間の開発者と一緒に何かを作っているときととても似ている。 (11:14 bskyから・詳細)

LLMは今のところ、妙に博識だが抜けてるところも多い同僚、といった印象だな。 (11:14 bskyから・詳細)

image 0HTML/JS部品としての「Share on Bluesky」ボタンをちゃちゃっと作ったので共有。ここに直接貼るにはびみょ~に文字数オーバーでした。 Share on Bluesky buttonを付ける - Digitune [memo] https://memo.digitune.org/2025/share_on_bsky/ (18:24 bskyから・詳細)

“onclick"で指定しているJS codeを使えばそのままbookmarkletとしても動きそう…ゴソゴソ…うん、動きますね。頭に"javascript:“を付けてbookmarkのURL欄にツッコめばOK。お楽しみあれ。 (18:29 bskyから・詳細)

birdShare on Bluesky buttonを付ける

よくあるweb pageをSNSへ共有するボタンのBluesky版をちゃちゃっとでっち上げたので共有。まだ公式からはパーツとしては公開されておらず、仕様のみが公開されている、という状況のようでした。

いちおうボタンを押すとその時開いていたpageのtitle、URLを含む形でbskyの新規postを開く、またボタンを押したときにpage上のtextを選択しているとそのtextも含んだ形で開く、という感じの仕様です。サイズは適当に調整してください。またChrome/Firefoxではそれなりに動きそうなことは確認しましたが、どれほどuniversalに動くのかは未検証です。あとbskyのintent起動時に指定出来るtextの最大長は300文字とのことですが1、その辺りも全然気にしていないのであんまりお行儀良くないです。

<input type="image" src="https://web-cdn.bsky.app/static/favicon-32x32.png" title="Share on Bluesky" width="28" height="28" onclick="(()=>{const e=encodeURIComponent,s=document.getSelection().toString();window.open('https://bsky.app/intent/compose?text='+e((s?`&quot;${s}&quot; `:'')+(document.title+' '+location.href+(s?`#:~:text=${e(s)}`:''))),'_blank')})()">

birdきょうのつぶやき@digitune.bsky.social

きょうのつぶやき@digitune.bsky.social

ふと、自分のメモページに置いていたSNSへシェアするボタンがまだTwitter/Xのままだったことに気がつき、しれっとbskyに置き換え完了。まだfrontendの公式部品は無さそうだったのでHugoのテンプレートを使っちゃいましたが、近いうちにJS部品に置き換えよう。 (22:29 bskyから・詳細)

birdきょうのつぶやき@digitune.bsky.social

きょうのつぶやき@digitune.bsky.social

image 0手もとのChromeに保存されている自分のcookieをJSON形式でまとめて書き出す方法を調べたら思ったより面倒だった&ChatGPTによる意外な回答が面白かったのでまとめました。ホントどこで知るんだろうこういうこと>LLM。 https://memo.digitune.org/2025/output_chrome_cookies_to_json/ (21:24 bskyから・詳細)

bskyからFacebookへのフィードが一月ほど止まっていたようだけど、無事直せた模様。よかったよかった。 (23:14 bskyから・詳細)

birdChromeのcookieをJSON形式で書き出す

自分の使っているChromeに保存されているcookieを、例えばPlaywrightのstorageStateとして読み込めるような形のJSONで書き出す方法を調べてみたら、簡単にできそうなのに意外に情報がなく手間取ったのでここに記録。最終的にはChatGPT君に教えてもらいましたが、かなりHackishな方法+教えられた通りのままでは動かなかったのでちょい頭を使いました。しかし君、どこでそんな方法を学んだんだい?w

まずそもそもの前提として、

  • ChromeのDevToolsを使い、ApplicationStorageCookies を見れば、対象のdomainに関連するcookie全てが確認出来るが、ここから外へまとめて出力する手段は提供されていない
  • そもそも HTTPOnly flagの立ったcookieはcontent contextのJavaScriptからはaccessできない。Extensionのbackground.js側からはChrome Cookie APIを経由すればaccess出来るが機能拡張(Extension)を作る必要がある

という状況があります。DevToolsに特定domainのcookieをまとめてexportする機能があればあとはそれをconvertするだけで済んだんですが、おそらく悪用を恐れたのかそういった機能は今は提供されていませんでした。

ChatGPT君曰く、最初はDevToolsのsnippetを使えば出来るかも?なんて言っていたんですがここも所詮content contextのため全てのcookieを得ることは出来ず、そのままダラダラとAI君と何度かやりとりしていたところ、

  1. まず上で書いたように対象のsiteを表示しつつDevToolsを開き、Application/Storage/Cookiesへ行く
  2. そこでおもむろに再び Ctrl+Shift+I を押して「DevToolsのDevTools」を開く(!)
  3. その2つ目のDevToolsのconsoleで 下記のようなJavaScript codeを実行する
(() => {
  const cookies = [];
  document.querySelectorAll("table[class='data'] tbody tr").forEach(row => {
    const cells = row.querySelectorAll("td");
    cookies.push({
      name: cells[0]?.innerText,
      value: cells[1]?.innerText,
      domain: cells[2]?.innerText.startsWith(".") ? cells[2]?.innerText : `.${cells[2]?.innerText}`,
      path: cells[3]?.innerText || "/",
      expires: cells[4]?.innerText === "Session" ? -1 : new Date(cells[4]?.innerText).getTime() / 1000,
      httpOnly: cells[6]?.innerText === '✓',
      secure: cells[7]?.innerText === '✓',
      sameSite: cells[8]?.innerText || "None"
    });
  });

  const storageState = { cookies, origins: [] };
  console.log(JSON.stringify(storageState, null, 2));
})();

という、ちょっと驚くべき方法を教えてくれました。これ、DevTools上に表示されているcookieであればDevToolsのcontent contextから読める、というほとんど裏技的なテクニックを使った方法です。なおPlaywrightの storageState.json にはcookieの他にlocal storageに保存されているentryなども含まれますが、それらも上記と同じテクニックを用いて簡単に手元のbrowserのものをJSON化することが出来ました。マジかよ。

birdきょうのつぶやき@digitune.bsky.social

きょうのつぶやき@digitune.bsky.social

image 0そうなんだ。俄然観たくなってきた。 https://x.com/Lithium_R_18/status/1903614851135746367?t=Tt8_-UDVI1DyK6Fze3ys7Q&s=09 (11:07 bskyから・詳細)

image 1沖ツラこと「沖縄で好きになった子が方言すぎてツラすぎる」、最後までとても楽しく面白かった!とても沖縄に行きたくなったよ。今期の中でもかなり好きなアニメでした。超良かった~。 https://okitsura.com/ (22:38 bskyから・詳細)

birdきょうのつぶやき@digitune.bsky.social

きょうのつぶやき@digitune.bsky.social

image 0これだ。3Dモデルのすぐそばを回るカメラが「ダンシングアイ」っぽいと思ったんだよね。イメージが脳裏に刻まれすぎている… https://youtu.be/3uxhejwjMdA?si=QPxye3f4PIE5H2ai (00:25 bskyから・詳細)

今週末のAnime Japanではまた例年通り大量の新作公式PVが公開されるんだろうな。楽しみ。 (11:20 bskyから・詳細)

birdきょうのつぶやき@digitune.bsky.social

きょうのつぶやき@digitune.bsky.social

スイッチ2体験会、落選したー (11:26 bskyから・詳細)

image 0ヤバす。そういや比較的最近我が家でも、何かのアニメのEDが「ダンシングアイ」っぽいよね、という話を家族にして、全く通じなかったのでYouTubeで動画を見せ白い目で見られる、ということがあったのだった。 https://x.com/yoshinokentarou/status/1902604827382968546?t=KinHS64U-ECFSc2A8kSpSQ&s=09 (23:55 bskyから・詳細)

First | Prev | 1 | 2 | 3 | 4 | 5 | Next | Last