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 devices
JavaScript를 사용하여 탭 목록을 검색 할 수 있도록선택한 devtools보기에서 두 번째 devtools보기를여십시오.
- 이 기능을 사용하려면 팝업 모드에서 devtools (패널 오른쪽 상단의 세로 줄임표 기호 사용)가 있어야합니다. 그렇지 않으면 Command + Option + J (MAC)
Ctrl
+Shift
+J
(WINDOWS)가 닫힙니다. 첫 번째 devtools 패널.
- 이 기능을 사용하려면 팝업 모드에서 devtools (패널 오른쪽 상단의 세로 줄임표 기호 사용)가 있어야합니다. 그렇지 않으면 Command + Option + J (MAC)
- ‘더보기’를 클릭하여 처음 몇 개의 항목에서 모든 탭으로 목록을 확장하십시오.
- 목록에 대해 스크립트를 작성하려면 다음 몇 줄의 코드를 사용하십시오 [두 번째 devtools 창의 콘솔에 입력]
- NB
/deep/
는#shadow-root
DOM 요소 를 입력하기위한 CSS 선택기입니다.
- NB
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 파일 탐색기 또는 루트 탐색기 가 권장됩니다.
-
장치의 루트 폴더 (보호 된 시스템 파티션)로 이동하여 → 선택
DATA
→을 선택com.android.chrome
합니다. -
현재 탭에 대한 정보를 찾을 수있는 곳이 몇 군데 있습니다.
- 검사의 첫 번째 폴더는
app_tabs
다음0
. 이 폴더에는tab_state
모든 현재 탭의 목록이 포함 된 파일이 있어야 합니다. - 이라는 폴더에있는 다른 파일도 있습니다
tab3
,tab4
현재 탭에 대한 정보를 포함하는 등,. - IMO에서는 인코딩이 다르기 때문에 이러한 파일 중 일부의 내용을 읽으려면 특수한 “텍스트 편집기 / SQL 편집기”가 필요합니다.
- 검사의 첫 번째 폴더는
-
다음으로 볼 곳은
/data/com.android.chrome/app_chrome/Default/
입니다. 이 폴더에는이라는 파일이History
있습니다. 상황에 따라 최근 방문한 사이트 목록이 여기에 있습니다. -
마지막으로로 이동합니다
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 에서 찾을 수 있습니다 .
답변
이 해결 방법은 Android 용 Chrome에서 연 모든 탭에 대한 개별 URL이 포함 된 텍스트 파일을 제공합니다.
-
이에 언급 한 바와 같이 대답 하여 마이클 , 당신은 현재의 탭이 들어있는 파일을 잡아해야합니다. 장치에서 루트 탐색기를 사용하여이 파일을 잡고 Windows에서 선택한 폴더로 이동하십시오.
/data/data/com.android.chrome/app_tabs/0/tab_state
-
때로는 파일에 스크립트를 망치는 이상한 화살표 문자가 있습니다. 스크립트를 실행하고 파일의 일부를 자르면 마지막 문자를 보면 아마도 이상한 화살표 문자 일 것입니다. 원본 파일에서 찾거나 교체하십시오. 일단 사라지면 스크립트가 정상적으로 실행됩니다. 다음과 같이 보입니다 :
-->
-
명령 행 프롬프트 ( “Run”또는 Win+로 이동하여을 R입력
cmd
)로 이동 한 다음sed.exe
(2 단계에서 설치 한 위치) 폴더가있는 폴더로 이동하십시오 . -
원본 파일 (
tab_state
)을 포함하는 동일한 폴더 로 이동하고 싶을 것입니다sed.exe
. 모든 것이 쉬워집니다. 일단 완료하면 다음 스크립트를 실행하십시오.sed -i "s/.\{6\}http/\r\n\r\nhttp/g" tab_state
-
이렇게하면 모든 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');
})
그러나 장치에 열린 탭이 너무 많으면 시도하지 마십시오.
tabs
50 개의 탭을 충전하여 열린 탭을 수동으로 동기화 하는 부분 (이 기능이 여전히 누락되어 있고 휴대 장치에서 열린 탭이 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