Getting all tabs from Chrome on Android

I damaged the screen on my Pixel 3a XL and it's now increasingly bleeding meaning hour after hour I see less of the image. See illustration I found online; I still haven't fully lost the screen, but it's getting there. Touch still mostly works (except for the top portion of the screen), but enough to unlock the phone. I'm in Ireland and preliminary price for official repair from Google is EUR167 with tax.

scrcpy, installable from Debian unstable, proved to be useful to connect to the phone. I've previously set up developer mode, and I saw enough of the screen to confirm adb connection; now I see and click on the screen on the Linux machine.

One of the things that's not backed up to the cloud and is terribly bad with syncing is the list of open tabs in Chrome (I'm only seeing about 15 tabs in "Tabs from other devices" on my desktop). There's no bookmarking of all tabs (crbug/488106 and crbug/1026222).

While Chrome's developer tools can be used to connect to the device and see the list of open tabs, using adb to forward localabstract:chrome_devtools_remote is better.

$ adb forward tcp:9222 localabstract:chrome_devtools_remote

This way, the relevant API can be accessed over HTTP on port 9222. (You can even visit the service's home page in your browser.)

$ curl http://localhost:9222/json/list > 2020-10-pixel3axl-chrome-tabs.json

You can confirm if the tabs have been fetched using less, or counting the entries in JSON with jq:

$ jq '. | length' 2020-10-pixel3axl-chrome-tabs.json 

You can also use jq to get just the URLs one at a time:

$ jq  -r '.[].url' 2020-10-pixel3axl-chrome-tabs.json 

Unfortunately, the tabs are not ordered correctly. Still, I'd rather have all tabs in wrong order than just a subset in the correct order.


Leave a Reply

Your email address will not be published. Required fields are marked *


What is 4 + 8 ?
Please leave these two fields as-is:
IMPORTANT! To be able to proceed, you need to solve the following simple math (so we know that you are a human) :-)

This site uses Akismet to reduce spam. Learn how your comment data is processed.