열린 Chrome 탭 목록을 내보내려면 어떻게해야합니까? 기능이 Android 휴대 전화에서 열려있는 모든

Chrome의 동기화 기능이 Android 휴대 전화에서 열려있는 모든 탭을 선택하지 않습니다.

탭은 내가 액세스 할 수있는 파일에 저장되어 있습니까?

내 의도는 장치에서 공장 초기화를 실행할 수 있도록 탭 목록을 내보내는 것입니다.

안드로이드 4.3 실행



답변

Chrome 디버거의 원격 장치 기능을 사용하여 장치의 Chrome에 연결하고 탭에 액세스 할 수 있습니다. 보이는 탭 목록을 확장하여 전체 목록을 가져온 다음 표시된 URL (URL 포함)을 모두 클립 보드에 강조 표시하고 복사 하십시오 .
https://developers.google.com/web/tools/chrome-devtools/remote-debugging/

방금이 방법으로 ~ 400 개의 탭을 내보낼 수있었습니다.


답변

이 StackExchange에 가입하여 위에 Jeremy의 답변에 대한 감사를 표시 하고 탭 목록을 내보내는 데 사용한 몇 줄의 JS를 추가하십시오 (커서로 복사하는 것이 이상적이지 않기 때문에)

Jeremy가 말했듯이 Chrome devtools 아이콘 (패널의 오른쪽 상단) 에서 Remote devices아래 More tools를 선택하십시오 .

  • 휴대 전화에서 USB 디버깅 설정 ( Settings⇒ 아래 Developer options, 루트 필요 없음)
    • Developer options메뉴 를 활성화해야합니다. 기본적으로 사용자를 보호하기 위해 숨겨져 있습니다.
    • 내 휴대 전화에서 Settings⇒ 아래 빌드 번호를 여러 번 두 드려야했습니다.About Device
  • 이 작업이 완료되면 USB를 연결하고 MTP 연결을 허용하십시오
  • Chrome devtools 원격 기기 패널이 열리면 휴대 전화에서 USB 디버깅 허용을 요청합니다.
    • 당신은 항상 컴퓨터를 신뢰하도록 선택할 수 있습니다

이제 장치가 연결되었습니다.

  • Remote devicesJavaScript를 사용하여 탭 목록을 검색 할 수 있도록

    선택한 devtools보기에서 두 번째 devtools보기를여십시오.

    • 이 기능을 사용하려면 팝업 모드에서 devtools (패널 오른쪽 상단의 세로 줄임표 기호 사용)가 있어야합니다. 그렇지 않으면 Command + Option + J (MAC) Ctrl+ Shift+ J(WINDOWS)가 닫힙니다. 첫 번째 devtools 패널.
  • ‘더보기’를 클릭하여 처음 몇 개의 항목에서 모든 탭으로 목록을 확장하십시오.
  • 목록에 대해 스크립트를 작성하려면 다음 몇 줄의 코드를 사용하십시오 [두 번째 devtools 창의 콘솔에 입력]
    • NB /deep/#shadow-rootDOM 요소 를 입력하기위한 CSS 선택기입니다.

Android 용 Chrome에서 열린 모든 URL 목록을 내보내려면 목록을 마크 다운 형식의 텍스트 문자열로 만들어 클립 보드에 복사하기로했습니다.

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('.device-page-url .devtools-link').href}))
str = '';
for (i=0;i<tabs.length;i++){
  str += '['+tabs[i]['name']+']('+tabs[i]['url']+')\n'
}
copy(str)

그러면 클립 보드에 다음과 같은 목록이 나타납니다.

[How can I export the list of open Chrome tabs? - Android Enthusiasts Stack Exchange](https://android.stackexchange.com/questions/56635/how-can-i-export-the-list-of-open-chrome-tabs)
[Get Started with Remote Debugging Android Devices  |  Tools for Web Developers  |  Google Developers](https://developers.google.com/web/tools/chrome-devtools/remote-debugging/)
[How To Enable USB Debugging On Your Android Phone](https://www.groovypost.com/howto/mobile/how-to-enable-usb-debugging-android-phone/)
[Configure On-Device Developer Options | Android Studio](https://developer.android.com/studio/debug/dev-options.html)
...

최신 정보

어떤 이유로 나는 오류가있어 시간의 일부 는 가져 오지 못했습니다 말, href(A)의 속성 null(내가 그것을 알고있는 눈에 보이지 않는 노드의 검사 때) 항목을 선택합니다. 이 문제를 해결하려면 대신이 버전을 사용하십시오.

tabs = document.querySelectorAll('div /deep/ div /deep/ div /deep/ div /deep/ div /deep/ .device-page-list .vbox')
str = '';
for (i=0;i<tabs.length;i++){
  if (tabs[i].querySelector('.device-page-url .devtools-link') != null){
    str += '- ['+tabs[i].querySelector('.device-page-title').textContent + '](' + tabs[i].querySelector('.device-page-url .devtools-link').getAttribute('href') +')\n'
  } else {
    console.log(tabs[i])
  }
}
copy(str)

답변

브라우저가 다운 된 후 영구적으로 닫힌 탭을 복구하려고 할 때이 솔루션을 발견했습니다. 필요한 정보에 액세스하려면 장치가 루팅 되어 있어야 장치에 설치된 루트 파일에 액세스하여 파일 탐색기 앱을 실행할 수 있습니다. ES 파일 탐색기 또는 루트 탐색기 가 권장됩니다.

  1. 장치의 루트 폴더 (보호 된 시스템 파티션)로 이동하여 → 선택 DATA→을 선택 com.android.chrome합니다.

  2. 현재 탭에 대한 정보를 찾을 수있는 곳이 몇 군데 있습니다.

    1. 검사의 첫 번째 폴더는 app_tabs다음 0. 이 폴더에는 tab_state모든 현재 탭의 목록이 포함 된 파일이 있어야 합니다.
    2. 이라는 폴더에있는 다른 파일도 있습니다 tab3, tab4현재 탭에 대한 정보를 포함하는 등,.
    3. IMO에서는 인코딩이 다르기 때문에 이러한 파일 중 일부의 내용을 읽으려면 특수한 “텍스트 편집기 / SQL 편집기”가 필요합니다.
  3. 다음으로 볼 곳은 /data/com.android.chrome/app_chrome/Default/입니다. 이 폴더에는이라는 파일이 History있습니다. 상황에 따라 최근 방문한 사이트 목록이 여기에 있습니다.

  4. 마지막으로로 이동합니다 Sync Data folder. 여기에는 Google과 동기화되는 정보가 있습니다 (현재 다른 기기에서 동기화 한 모든 탭이 포함되어야 함).

    • 파일 SyncData.sqlite3에서 모든 Google 검색 기록을 확인할 수도 있습니다 (때로는 재미있는 기사 라고 볼 수 있음).
    • 이 파일을 읽으려면 PC에 Sqlite3 데이터 브라우저 프로그램 이 필요합니다. 응용 프로그램은 MS Excel 에서 열 수있는 유용성이 높 .CSV거나 .XLS파일 로 내보낼 수 있어야합니다 .

이것은 내가 생각하는 사람에게 도움이 될 수 있습니다.


답변

당신이있는 경우 안드로이드 명령 행 도구 개발 시스템에 설치를하고 안드로이드 장치에서 디버깅 USB를 활성화 한 다음, 다음을 수행 할 수 있습니다 :

  • adb forward tcp:9222 localabstract:chrome_devtools_remote개발 머신에서 실행 하십시오.

    Chrome 인스턴스는 추상 주소가chrome_devtools_remote“인 유닉스 도메인 소켓을 통해 디버깅 프로토콜에 대한 액세스 권한을 제공합니다 . 위의 adb 명령은 해당 소켓의 포트 9222로 요청을 전달합니다. (를 입력하면 Android 장치에서 모든 유닉스 도메인 소켓 목록을 얻을 수 있습니다 adb shell cat /proc/net/unix.)

  • 디버깅 프로토콜은 HTTP를 통해 크롬 인스턴스에 대한 JSON 데이터를 노출합니다. 열린 탭을 나열하는 JSON 파일은을 실행하여 얻을 수 있습니다 wget -O tabs.json http://localhost:9222/json/list.

    API의 다른 엔드 포인트는 https://github.com/buggerjs/bugger-daemon/blob/master/README.md#api 에서 찾을 수 있습니다 .

참조 여기에 USB 디버깅을 가능하게하고,에 대한 자세한 내용은 여기 그것이 작동하는 방법에 대한 개요.


답변

이 해결 방법은 Android 용 Chrome에서 연 모든 탭에 대한 개별 URL이 포함 된 텍스트 파일을 제공합니다.

  1. 이에 언급 한 바와 같이 대답 하여 마이클 , 당신은 현재의 탭이 들어있는 파일을 잡아해야합니다. 장치에서 루트 탐색기를 사용하여이 파일을 잡고 Windows에서 선택한 폴더로 이동하십시오./data/data/com.android.chrome/app_tabs/0/tab_state

  2. Windows 용 GNU 도구 설치

  3. 때로는 파일에 스크립트를 망치는 이상한 화살표 문자가 있습니다. 스크립트를 실행하고 파일의 일부를 자르면 마지막 문자를 보면 아마도 이상한 화살표 문자 일 것입니다. 원본 파일에서 찾거나 교체하십시오. 일단 사라지면 스크립트가 정상적으로 실행됩니다. 다음과 같이 보입니다 :-->

  4. 명령 행 프롬프트 ( “Run”또는 Win+로 이동하여을 R입력 cmd)로 이동 한 다음 sed.exe(2 단계에서 설치 한 위치) 폴더가있는 폴더로 이동하십시오 .

  5. 원본 파일 ( tab_state)을 포함하는 동일한 폴더 로 이동하고 싶을 것입니다 sed.exe. 모든 것이 쉬워집니다. 일단 완료하면 다음 스크립트를 실행하십시오.

    sed -i "s/.\{6\}http/\r\n\r\nhttp/g" tab_state
    
  6. 이렇게하면 모든 URL이 올바르게 형식화 된 파일이 수정됩니다. 파일을 텍스트 파일로 연 다음 내용을 복사하여 Word 문서 나 다른 위치에 붙여 넣습니다. 어떤 이유로 데이터를 복사하여 붙여 넣지 않으면 파일을 저장하면 모든 줄 바꿈 / 캐리지 리턴이 지워집니다. 문제가 해결되면 다시 시작하십시오. 모두 말하고 완료하면 이전에 열었던 모든 탭에 대한 링크 목록이 포함 된 파일이 있어야합니다.


답변

Louis Maddox 콘솔의 코드를이 코드로 바꿀 수 있습니다.이 코드 는 현재 작동합니다 Version 0.66.99 Chromium: 75.0.3770.100. 비고 : 원격 장치 창을 활성화하고를 누르면 원격 장치 창의 새 콘솔 창을 열 수 있습니다Ctrl+Shift+J

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')}))

str = ' ';

tabs.forEach(e => {
    str += '- ['+ e.name + '](' + e.url +')\n';
})
copy(str)

그런 다음 모든 탭을 텍스트 파일에 붙여 넣을 수 있습니다.

실제 장치의 모든 탭을 열려면 tabs.forEach-part를

tabs.forEach(e => {
    window.open(e.url, '_blank');
})

그러나 장치에 열린 탭이 너무 많으면 시도하지 마십시오.

tabs50 개의 탭을 충전하여 열린 탭을 수동으로 동기화 하는 부분 (이 기능이 여전히 누락되어 있고 휴대 장치에서 열린 탭이 650 개였습니다)을 추가 한 후에이 항목을 추가했습니다 .

i=0;
j=0;
tabs.forEach(e => {
  if(i<50){
    i++;
    window.open(e.url, '_blank');
  }
  j++;
})
console.log("Tabs overall:"+j);

그러면 장치에서 열린 브라우저 창으로 50 개의 탭이 일괄 적으로 열립니다. 또한 전체 탭 수를 보여줍니다. 다른 배치를 열려면 개발자 도구 및 원격 장치에 대한 나머지 ‘빈’탭을 닫지 마십시오. 으로 Ctrl + TAB당신이 탭을 전환 Ctrl +D을 즐겨 찾기에 추가하고 Ctrl+W활성 탭을 닫습니다. 그것이 내가 수동으로 한 방식입니다. 모든 사람의 삶을 편하게하기 위해이 코드에 대한 변경을 제안하십시오.


답변

Michael은 tab_state 파일을 식별했지만 파일을 디코딩해야합니다. 다음 스크립트가 나를 위해 일했습니다 (kitkat KSH_VERSION = ‘@ (#) MIRBSD KSH R43 2013/02/19’또는 xenial BASH_VERSION = ‘4.3.46 (1)-릴리즈’에서 Chrome 49.0.2623.105의 tab_state 파일). 인쇄 할 수없는 바이트와 모든 후속 바이트를 제거하는 URL 사이에서 마지막 URL을 먼저 인쇄하며, 필요한 경우 2 바이트 이상이 제거됩니다. 각 URL 다음에 공백을 인쇄 한 다음 제거 가능한 연속 인쇄 가능 바이트 (있는 경우), 쉼표, 제거 된 다른 바이트 수 (괄호 안에있는 바이트)를 인쇄합니다. URL을 인쇄하려면 주석 처리 된 echo 명령 만 사용하십시오.

tab_state=/data/data/com.android.chrome/app_tabs/0/tab_state
[[ $KSH_VERSION ]]||shopt -s extglob       #set if bash
(cat $tab_state;echo)|while read -r r;do b=
   while
      q=${r%http?(s)://*}          #chip off a URL
      [[ $q = *url= ]]&&{
         p=${r%http?(s)://*url=*}  #special case URL within URL
         [[ $p = "$r" ]]||q=$p;}
      h=${r:${#q}}                 #the chip
      h=${h%%[! -~]*}              #remove unprintable&following bytes
      u=$((${#r}-${#q}-${#h}))     #no of said bytes removed
      p=$((u<b?b-u:0))             #no of more bytes to remove
      [[ $h ]];do
         echo "${h::${#h}-p} ${h:${#h}-p},$u(${r:${#r}-u})"
      #  echo "${h::${#h}-p}"
         r=$q b=2
   done
done