Функция синхронизации в Chrome не отображает все вкладки, открытые на моем телефоне Android.
Хранятся ли вкладки в файле, к которому я могу получить доступ?
Мое намерение состоит в том, чтобы экспортировать список вкладок, чтобы я мог выполнить сброс к заводским настройкам на устройстве.
Работает Android 4.3
chrome-for-android
Majjo
источник
источник
Ответы:
Вы можете использовать функцию «Удаленные устройства» в отладчике Chrome для подключения к Chrome на устройстве и доступа к вкладкам. Просто разверните список видимых вкладок, чтобы получить полный список, а затем выделите и скопируйте все отображаемое (включая URL) в буфер обмена: https://developers.google.com/web/tools/chrome-devtools/remote-debugging/
Мне просто удалось экспортировать ~ 400 вкладок таким образом.
источник
Просто присоединился к этому StackExchange, чтобы выразить признательность за ответ Джереми выше, а также добавить несколько строк JS, которые я использовал для экспорта списка вкладок (поскольку копирование с помощью курсора не является идеальным!)
По словам Джереми, выберите
Remote devices
подMore tools
на Chrome DevTools⋮
значок (справа вверху панели):Settings
⇒Developer options
, рут не требуется)Developer options
меню, оно скрыто по умолчанию для защиты пользователейSettings
⇒About Device
Теперь устройство подключено,
Remote devices
чтобы иметь возможность получать список вкладок с помощью JavaScriptCtrl
+Shift
+J
(WINDOWS) просто закроются. первая панель devtools./deep/
- это селектор CSS для ввода#shadow-root
элементов DOMЧтобы экспортировать список всех URL-адресов, открытых в Chrome для Android, я решил просто превратить этот список в текстовую строку с форматом уценки и скопировать его в буфер обмена.
После этого в буфере обмена появится список, похожий на этот:
Обновить
По какой - то причине , я получаю сообщение об ошибке некоторое время , заявив , что не удалось получить
href
атрибутnull
элемента (когда я проверить его это невидимый узел, кто знает). Чтобы обойти это, используйте эту версию вместо:источник
tabs = Array.from(document.querySelectorAll('div /deep/ div /deep/ div /deep/ div /deep/ div /deep/ .device-page-list .vbox'), s => ({name: s.querySelector('.device-page-title').textContent, url: s.querySelector('.devtools-link')._href}))
теперь будет работатьtabs = Array.from(document.querySelector('div /deep/ div /deep/ div /deep/ div /deep/ div /deep/ div /deep/ div.vbox.flex-auto').shadowRoot.querySelectorAll('.devices-view .device-page-list .vbox'), s => ({name: s.querySelector('.device-page-title').textContent, url: s.querySelector('.device-page-url .devtools-link').getAttribute('href')}))
(Я не мог получить доступ к последнему корню теней с помощью селектора, но.shadowRoot
вместо этого мне пришлось использовать свойство его основного элемента. Не совсем понятно, почему, но эй, без поддержкиЯ столкнулся с этим решением, когда искал восстановление вкладок, которые были навсегда закрыты после сбоя моего браузера. Чтобы получить доступ к необходимой информации, ваше устройство должно быть рутировано, чтобы вы могли запустить приложение проводника файлов с доступом к корневым файлам, установленным на вашем устройстве. ES File Explorer или Root Explorer - мои рекомендации.
Перейдите в корневую папку вашего устройства (защищенный системный раздел) → выберите
DATA
→ выберитеcom.android.chrome
.Есть несколько мест, где вы можете найти информацию о ваших текущих вкладках.
app_tabs
, затем0
. В этой папке должен быть файл с именем,tab_state
который содержит список всех ваших текущих вкладок.tab3
,tab4
и т.д. , которые содержат информацию о текущих вкладках.Следующее место, чтобы посмотреть
/data/com.android.chrome/app_chrome/Default/
. В этой папке вы найдете файл с именемHistory
. В зависимости от вашей ситуации, вы можете найти хороший список последних посещений сайта здесь.Наконец, перейдите к
Sync Data folder
. Здесь вы найдете информацию, которая синхронизируется с Google (и она должна включать все вкладки, которые вы синхронизировали в настоящее время на других устройствах).SyncData.sqlite3
вы также найдете историю всех ваших поисков в Google (которые я иногда нахожу интересным чтением)..CSV
или.XLS
файл, который вы можете открыть в MS Excel .Это может быть полезно для кого-то, кого я предполагаю.
источник
Если на компьютере разработчика установлены средства командной строки Android и на вашем Android-устройстве включена отладка по USB, вы можете сделать следующее:
Выполните
adb forward tcp:9222 localabstract:chrome_devtools_remote
на своей машине разработки.Экземпляры Chrome предоставляют доступ к протоколу отладки через сокет домена unix с абстрактным адресом "
chrome_devtools_remote
" - приведенная выше команда adb перенаправляет запросы на порт 9222 на этот сокет. (Вы можете получить список всех сокетов домена unix на устройстве Android, набравadb shell cat /proc/net/unix
.)Протокол отладки предоставляет данные JSON об экземпляре Chrome через HTTP. Файл JSON со списком открытых вкладок можно получить, выполнив
wget -O tabs.json http://localhost:9222/json/list
.(Другие конечные точки API можно найти по адресу https://github.com/buggerjs/bugger-daemon/blob/master/README.md#api .)
Смотрите здесь для получения более подробной информации о включении отладки USB, и здесь для обзора того, как это работает
источник
Этот обходной путь даст вам текстовый файл с отдельными URL-адресами для всех вкладок, открытых в Chrome для Android.
Как уже упоминалось в этом ответе по Майкл , вы должны захватить файл, содержащий текущие вкладки. С помощью корневого обозревателя на устройстве, захватите этот файл и переместите его в папку по вашему выбору в Windows:
/data/data/com.android.chrome/app_tabs/0/tab_state
Установите GNU Tools для Windows
Иногда в файле есть странный символ стрелки, который портит скрипт. Если вы запустите скрипт, и он усекает часть файла, посмотрите на последний символ, и он, вероятно, будет тем странным символом стрелки. Найти / заменить его в исходном файле. Как только он исчезнет, скрипт будет работать нормально. Это выглядит так:
-->
Перейдите в командную строку (перейдите к «Выполнить» или Win+ Rи введите
cmd
) и перейдите к папке, в которой содержитсяsed.exe
(где бы вы ни установили его на шаге 2.)Возможно, вы захотите переместить исходный файл (
tab_state
) в ту же папку, содержащуюsed.exe
. Это сделает все проще. Как только вы это сделаете, запустите этот скрипт:Это изменит файл со всеми URL, отформатированными правильно. Откройте файл в виде текстового файла, а затем скопируйте и вставьте содержимое в документ Word или в другое место. По какой-то причине, если вы не копируете и не вставляете данные, при сохранении файла удаляются все разрывы строк / возврат каретки. Если что-то испортилось, просто начните сначала и сделайте это снова. Когда все это сказано и сделано, у вас должен быть файл, содержащий список ссылок на все вкладки, которые вы открывали ранее.
источник
Инструкция для Храбрых! Вы можете заменить код в консоли Луи Мэддокса на этот, он работает на сегодняшний день
Brave Version 1.0.0 Chromium: 78.0.3904.97 (Official Build) (64-bit)
. Примечание. Вы можете открыть новое окно консоли окна удаленных устройств, если активировать окно удаленного устройства и нажатьCtrl+Shift+J
Затем вы можете вставить все свои вкладки в текстовый файл.
Если вы хотите открыть все вкладки на вашем устройстве, замените
tabs.forEach
-part наНе пытайтесь делать это с большим количеством открытых вкладок на вашем устройстве.
Я добавил это после
tabs
части, чтобы вручную синхронизировать открытые вкладки (храбрый все еще отсутствует эта функция, и у меня было 650 открытых вкладок на моем мобильном устройстве) за плату в 50 вкладок:Это откроет пакет из 50 вкладок с вашего устройства в открывшемся окне браузера. Он также показывает общее количество вкладок. Не закрывайте оставшуюся «пустую» вкладку для этих инструментов разработчика и удаленного устройства, если вы хотите открыть другой пакет. При этом
Ctrl + TAB
вы переключаетесь между вкладками,Ctrl +D
чтобы добавить их в закладки иCtrl+W
закрыть активную вкладку. Именно так я и сделал это вручную, не стесняйтесь вносить изменения в этот код, чтобы облегчить жизнь всем.источник
Майкл идентифицировал файл tab_state, осталось его декодировать. Следующий скрипт работал для меня (в kitkat KSH_VERSION = '@ (#) MIRBSD KSH R43 2013/02/19' или xenial BASH_VERSION = '4.3.46 (1) -release' в файле tab_state из Chrome 49.0.2623.105), сначала он печатает последний URL, между URL-адресами он удаляет непечатаемый байт и все последующие байты, а также больше, если необходимо, поэтому удаляются как минимум 2 байта. После каждого URL-адреса печатается пробел, затем удаляются непрерывные печатаемые байты, если таковые имеются, затем запятая, а затем количество удаляемых других байтов (& указанные байты в скобках). Чтобы напечатать URL-адреса, используйте вместо этого только комментированную команду echo.
источник
Вы должны быть пользователем root или Chrome, чтобы читать
/data/data/com.android.chrome/app_tabs/0/tab_state0
Вы можете использовать этот грязный эксплойт на уязвимых устройствах, чтобы стать Chrome и получить
tab_state0
от подключенного устройства:Получив доступ
tab_state0
, извлеките URL-адреса:источник
В Windows, чтобы извлечь
tab_state0
из архива TitaniumBackup (который работает на рутированных телефонах)Чтобы получить список вкладок от
tab_state0
На Windows я бы установить https://scoop.sh/ тогда
scoop install busybox 7zip
источник
Самый последний ответ от simonsan не работает над моей текущей сборкой Chrome
75.0.3770.100
. У меня нетvbox
класса, который используется в каждом опубликованном скрипте, поэтому мне удалось написать код, который работает сейчас:Я нашел пост Луи Мэддокса и скриншоты очень полезными для расшифровки его сценария, так что вот мой с обновленным деревом.
В любом случае решения, предложенные для преодоления ограничения в 100 символов, у меня не сработали, поэтому я решил отредактировать
inspect.js
исходный код, выполнив следующие действия:C:\Program Files (x86)\Google\Chrome\Application\75.0.3770.100
(где75.0.3770.100
имя сборки) сделайте копиюresources.pak
в папке «Документы», перетащите копию и поместите ееunpack.bat
в распакованную папку.\document\resources_unpaked\
взять11208.js
и открыть его.100
есть эти строкиpak_index.ini
его наpak.bat
. Теперьresource.pak
в\documents\
обновлен с изменениями.resource.pak
потому что вы никогда не знаете, закройте Chrome и замените оригинал обновленной версией.Теперь скрипт покажет до 300 символов для URL.
источник