j3iiifn’s blog

ネットワーク、インフラ、プログラミングについての備忘録

AndroidのChromeアプリで開いているタブのURLを全部取得する方法

通勤中にスマホで気になることをググったり、はてなブックマークTwitterで話題の記事を見たりするのが習慣なのだが、一度開いたページを閉じられない病にかかっている。 後で見返したいページはブクマして閉じればいいし、実際そうしようと努力しているのだが、それすら面倒くさくて常時100個以上のタブを開きっぱなしにしている。 ところが先日新しいスマホを買ったので、いよいよタブを整理する時が来てしまった。 スマホでポチポチするのは面倒なので、PCからAndroidChromeアプリで開いているタブを全部取得する方法を調べた。

結論を言うと、Chromeのリモートデバッグ機能で取得できる。 その機能からタブ一覧を取得するにはPCのChrome Dev Toolを使う方法と、ADBコマンドを使う方法がある。 下記のリンクで紹介されているのは後者の方法である。

How can I export the list of open Chrome tabs? - Android Enthusiasts Stack Exchange

上記URLの回答に書かれているコマンドを実行する。

adb forward tcp:9222 localabstract:chrome_devtools
wget -O tabs.json http://localhost:9222/json/list

すると、 tabs.jsonJSON形式でタブ情報が出力される。

[ {
   "description": "",
   "devtoolsFrontendUrl": "http://chrome-devtools-frontend.appspot.com/serve_rev/@cde02e463b24edb4a3547e35f9e462fe4c6bxxxx/inspector.html?ws=localhost:9222/devtools/page/20091",
   "id": "20091",
   "title": "GitHub - twindb/undrop-for-innodb: TwinDB data recovery toolkit for MySQL/InnoDB",
   "type": "page",
   "url": "https://github.com/twindb/undrop-for-innodb",
   "webSocketDebuggerUrl": "ws://localhost:9222/devtools/page/20091"
}, {
   "description": "",
   "devtoolsFrontendUrl": "http://chrome-devtools-frontend.appspot.com/serve_rev/@cde02e463b24edb4a3547e35f9e462fe4c6bxxxx/inspector.html?ws=localhost:9222/devtools/page/17473",
   "id": "17473",
   "title": "オブジェクトベースなUIデザインに取り組むための心構え|usagimaru ⌘ Satori Maru|note",
   "type": "page",
   "url": "https://note.mu/usagimaruma/n/nee69529402f6",
   "webSocketDebuggerUrl": "ws://localhost:9222/devtools/page/17473"
}, {
...

アプリ上で表示されるタブの順序と、このJSONの順序は無関係だった点は残念。