Funkcja synchronizacji Chrome nie wyświetla wszystkich kart otwartych na moim telefonie z Androidem.
Czy zakładki są przechowywane w pliku, do którego mam dostęp?
Moim zamiarem jest wyeksportowanie listy kart, aby móc przywrócić ustawienia fabryczne na urządzeniu.
Z systemem Android 4.3
chrome-for-android
Majjo
źródło
źródło
Odpowiedzi:
Możesz użyć funkcji Urządzenia zdalne w debugerze Chrome, aby połączyć się z Chrome na urządzeniu i uzyskać dostęp do kart. Po prostu rozwiń listę widocznych kart, aby uzyskać pełną listę, a następnie zaznacz i skopiuj wszystko pokazane (w tym adresy URL) do schowka: https://developers.google.com/web/tools/chrome-devtools/remote-debugging/
Właśnie udało mi się wyeksportować ~ 400 zakładek w ten sposób.
źródło
Właśnie dołączyłem do StackExchange, aby wyrazić uznanie dla odpowiedzi Jeremy'ego powyżej, a także dodać kilka wierszy JS, których użyłem do wyeksportowania listy zakładek (ponieważ kopiowanie kursorem nie jest idealne!)
Jak powiedział Jeremy, wybrać
Remote devices
podMore tools
Chrome DevTools⋮
ikonę (w prawym górnym rogu panelu):Settings
⇒Developer options
, root nie jest wymagany)Developer options
menu, domyślnie jest ukryte, aby chronić użytkownikówSettings
⇒About Device
Teraz urządzenie jest podłączone,
Remote devices
aby móc pobrać listę zakładek za pomocą JavaScriptCtrl
+Shift
+J
(WINDOWS) po prostu zamknie się pierwszy panel devtools./deep/
to selektor CSS do wprowadzania#shadow-root
elementów DOMAby wyeksportować listę wszystkich adresów URL otwartych w Chrome na Androida, postanowiłem po prostu przekształcić listę w ciąg tekstowy sformatowany metodą przeceny i skopiować ją do schowka
W schowku pojawi się lista wyglądająca następująco:
Aktualizacja
Z jakiegoś powodu czasami
href
pojawia się błąd , mówiąc, że nie udało mu się uzyskać atrybutunull
elementu (kiedy go sprawdzam, jest to niewidzialny węzeł, który wie). Aby obejść ten problem, użyj tej wersji:źródło
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}))
będzie działać teraztabs = 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')}))
(Nie mogłem uzyskać dostępu do końcowego cienia roota za pomocą selektora, ale.shadowRoot
zamiast tego musiałem użyć właściwości jego elementu macierzystego. Nie jestem pewien, dlaczego, ale hej, nieobsługiwaneNatknąłem się na to rozwiązanie, gdy chciałem odzyskać karty, które zostały zamknięte na stałe po awarii jednego z przeglądarek. Aby uzyskać dostęp do wymaganych informacji, urządzenie musi być zrootowane, aby można było uruchomić aplikację eksploratora plików z dostępem do plików głównych zainstalowanych na urządzeniu. ES File Explorer lub Root Explorer to moje rekomendacje.
Przejdź do folderu głównego urządzenia (chronionej partycji systemowej) → wybierz
DATA
→ wybierzcom.android.chrome
.Istnieje kilka miejsc, w których można znaleźć informacje o bieżących kartach.
app_tabs
, a następnie0
. W tym folderze powinien znajdować się plik o nazwie,tab_state
który zawiera listę wszystkich twoich bieżących kart.tab3
,tab4
itp, które zawierają informacje o aktualnych kartach.Następne miejsce do zobaczenia
/data/com.android.chrome/app_chrome/Default/
. W tym folderze znajdziesz plik o nazwieHistory
. W zależności od sytuacji możesz znaleźć tutaj dobrą listę ostatnich wizyt w witrynie.Na koniec przejdź do
Sync Data folder
. Tutaj znajdziesz informacje, które są synchronizowane z Google (i powinny obejmować wszystkie karty, które synchronizowałeś na innych urządzeniach).SyncData.sqlite3
się również historia wszystkich wyszukiwań w Google (które czasami uważam za interesujące czytanie)..CSV
lub.XLS
pliku, który można otworzyć w MS Excel .Może to być pomocne dla kogoś, kogo zakładam.
źródło
Jeśli masz narzędzia wiersza polecenia systemu Android zainstalowane na komputerze programistycznym i masz włączone debugowanie USB na urządzeniu z Androidem, możesz wykonać następujące czynności:
Wykonaj
adb forward tcp:9222 localabstract:chrome_devtools_remote
na swoim komputerze programistycznym.Instancje Chrome ujawniają dostęp do protokołu debugowania przez gniazdo domeny unix z abstrakcyjnym adresem „
chrome_devtools_remote
” - powyższe polecenie adb przekazuje żądania do portu 9222, do tego gniazda. (Możesz uzyskać listę wszystkich gniazd domeny unix na urządzeniu z Androidem, piszącadb shell cat /proc/net/unix
.)Protokół debugowania udostępnia dane JSON dotyczące instancji chrome przez HTTP. Plik JSON zawierający listę otwartych kart można uzyskać, wykonując
wget -O tabs.json http://localhost:9222/json/list
.(Inne punkty końcowe interfejsu API można znaleźć na stronie https://github.com/buggerjs/bugger-daemon/blob/master/README.md#api .)
Zobacz tutaj, aby uzyskać więcej informacji na temat włączania debugowania USB, a tutaj, aby zobaczyć, jak to działa.
źródło
To obejście da Ci plik tekstowy z indywidualnymi adresami URL dla wszystkich kart otwartych w Chrome na Androida.
Jak wspomniano w tym odpowiedzi przez Michała , trzeba chwycić plik zawierający aktualne karty. Korzystając z Eksploratora root na urządzeniu, pobierz ten plik i przenieś go do wybranego folderu w systemie Windows:
/data/data/com.android.chrome/app_tabs/0/tab_state
Zainstaluj GNU Tools dla Windows
Czasami w pliku znajduje się dziwna strzałka, która psuje skrypt. Jeśli uruchomisz skrypt i skróci on część pliku, spójrz na ostatni znak i prawdopodobnie będzie to ten dziwny znak strzałki. Znajdź / zamień go w oryginalnym pliku. Po zniknięciu skrypt będzie działał poprawnie. To wygląda tak:
-->
Przejdź do wiersza polecenia (przejdź do „Uruchom” lub Win+ Ri wpisz
cmd
) i przejdź do folderu zawierającegosed.exe
(gdziekolwiek zainstalowałeś go w kroku 2.)Prawdopodobnie będziesz chciał przenieść oryginalny plik (
tab_state
) do tego samego folderu zawierającegosed.exe
. Ułatwi to wszystko. Gdy to zrobisz, uruchom ten skrypt:Spowoduje to modyfikację pliku z poprawnie sformatowanymi wszystkimi adresami URL. Otwórz plik jako plik tekstowy, a następnie skopiuj i wklej zawartość do dokumentu programu Word lub innej lokalizacji. Z jakiegoś powodu, jeśli nie skopiujesz i nie wkleisz danych, zapisując plik, usuwa on wszystkie podziały wierszy / znaki powrotu karetki. Jeśli wszystko się popsuło, po prostu zacznij od nowa i zrób to ponownie. Kiedy wszystko zostanie już powiedziane i zrobione, powinieneś mieć plik zawierający listę linków do wszystkich otwartych wcześniej kart.
źródło
Możesz zastąpić kod w konsoli od Louisa Maddoxa tym, który działa od dzisiaj
Version 0.66.99 Chromium: 75.0.3770.100
. Uwaga: Możesz otworzyć nowe okno konsoli okna urządzeń zdalnych, jeśli aktywujesz okno urządzenia zdalnego i naciśnieszCtrl+Shift+J
Następnie możesz wkleić wszystkie swoje karty w pliku tekstowym.
Jeśli chcesz otworzyć wszystkie zakładki na swoim urządzeniu, zamień
tabs.forEach
-part naNie próbuj tego jednak ze zbyt dużą liczbą otwartych kart na urządzeniu.
Dodałem to po
tabs
części, aby ręcznie zsynchronizować otwarte karty (odważny wciąż brakuje tej funkcji i miałem 650 otwartych kart na moim urządzeniu mobilnym) pod obciążeniem 50 kart:Spowoduje to otwarcie partii 50 kart z urządzenia do otwartego okna przeglądarki. Pokazuje także ogólną liczbę kart. Nie zamykaj pozostałej „pustej” karty dla narzędzi programistycznych i urządzenia zdalnego, jeśli chcesz otworzyć inną partię. Po
Ctrl + TAB
przełączeniu kart,Ctrl +D
dodaniu ich do zakładek iCtrl+W
zamknięciu aktywnej karty. W ten sposób zrobiłem to ręcznie, możesz zaproponować zmiany w tym kodzie, aby ułatwić wszystkim życie.źródło
Michael zidentyfikował plik tab_state, pozostaje go zdekodować. Poniższy skrypt działał dla mnie (w kitkat KSH_VERSION = '@ (#) MIRBSD KSH R43 2013/02/19' lub xenial BASH_VERSION = '4.3.46 (1) -release' na pliku tab_state z przeglądarki Chrome 49.0.2623.105), najpierw wypisuje ostatni adres URL, między adresami URL usuwa bajt niezadrukowany i wszystkie kolejne bajty, a w razie potrzeby dodaje więcej, aby usunąć co najmniej 2 bajty. Po każdym adresie URL drukuje spację, a następnie usuwane ciągłe bajty do wydrukowania, jeśli takie istnieją, następnie przecinek, a następnie liczbę innych usuniętych bajtów (i wspomniane bajty w nawiasach). Aby wydrukować adresy URL, użyj zamiast tego komendy echo z komentarzem.
źródło
Aby czytać, musisz być rootem lub Chrome
/data/data/com.android.chrome/app_tabs/0/tab_state0
Możesz wykorzystać ten exploit dirtycow na wrażliwych urządzeniach, aby stać się Chrome i uzyskać
tab_state0
z podłączonego urządzenia:Po uzyskaniu dostępu
tab_state0
wyodrębnij adresy URL:źródło
Najnowsza odpowiedź simonsana nie działa na mojej obecnej wersji Chrome
75.0.3770.100
. Nie mamvbox
klasy, która jest używana w każdym opublikowanym skrypcie, więc udało mi się napisać kod, który teraz działa:Uważam, że post i zrzuty ekranu Louisa Maddoxa są bardzo przydatne do odszyfrowania jego skryptu, więc oto moje ze zaktualizowanym drzewem.
W każdym razie rozwiązania zaproponowane w celu pokonania limitu 100 znaków nie działały dla mnie, dlatego zdecydowałem się na edycję
inspect.js
ze źródła, wykonując następujące kroki:C:\Program Files (x86)\Google\Chrome\Application\75.0.3770.100
(gdzie75.0.3770.100
jest nazwa kompilacji) wykonaj kopięresources.pak
w folderze Dokumenty, przeciągnij kopię i upuść jąunpack.bat
w rozpakowanym folderze.\document\resources_unpaked\
podjąć11208.js
i otwórz go.100
znajdują się te liniepak_index.ini
i upuść go napak.bat
. terazresource.pak
w\documents\
został zaktualizowany o zmiany.resource.pak
ponieważ nigdy nie wiadomo, zamknij Chrome i zastąp wersję oryginalną zaktualizowaną wersją.Teraz skrypt wyświetli do 300 znaków dla adresów URL.
źródło
W
tab_state0
systemie Windows, aby wyodrębnić z archiwum TitaniumBackup (działającego na zrootowanych telefonach)Aby uzyskać listę kart z
tab_state0
W systemie Windows zainstalowałbym wtedy https://scoop.sh/
scoop install busybox 7zip
źródło
Nie jest to odpowiedź, której szukasz, ale:
Utwórz konto zastępcze w Google
Zaloguj się na urządzeniu z Androidem i włącz synchronizację
Zaloguj się na pulpicie i włącz synchronizację
Zainstaluj rozszerzenie Session Buddy na pulpicie
Eksportuj zakładki
źródło