Google 크롬의 현재 탭에서 URL을 가져오는 방법이 있나요?

Google 크롬의 현재 탭에서 URL을 가져오는 방법이 있나요?

저는 Python 명령을 사용하여 Firefox에서 해당 작업을 수행했지만 최근에 뭔가 변경되어 더 이상 URL을 얻을 수 없습니다!

  • Firefox에서 작동했던 것:

    #!/bin/bash
    current_tab_num () {
        python2 <<< $'import json\nf = open("/home/username/.mozilla/firefox/xxxxx.default/sessionstore.js", "r")\njdata = json.loads(f.read())\nf.close()\nprint str(jdata["windows"][0]["selected"])'
    }
    current_tab_url () {
        sed -n "$(current_tab_num)p" <(python2 <<< $'import json\nf = open("/home/username/.mozilla/firefox/xxxxx.default/sessionstore.js", "r")\njdata = json.loads(f.read())\nf.close()\nfor win in jdata.get("windows"):\n\tfor tab in win.get("tabs"):\n\t\ti = tab.get("index") - 1\n\t\tprint tab.get("entries")[i].get("url")')
    }
    current_tab_url
    

누구든지 Firefox 및/또는 Chrome에서 이 작업을 수행하는 방법을 말해 줄 수 있습니까?

메모: 저는 Python을 이해하지 못합니다. 방금 해당 명령을 어딘가에서 찾아서 bash에서 사용했습니다!

답변1

나는 같은 문제가 있었고 그것을 해결하려고 노력하는 동안 거기까지 갔으므로 여기에 내 솔루션(매우 나빴음)을 게시하겠습니다.

나는 이 작업을 수행하기 위해 wmctrl(대신 xprop를 사용할 수 있음)과 xdotool을 사용합니다. 이전에는 제목 표시줄에 URL이 표시되도록 확장 프로그램을 사용했습니다. 그런 다음 xprop 또는 wmctrl을 통해 URL에 액세스할 수 있습니다. 실제로 "깨끗한" 것은 아니지만 두 방법 모두 꽤 잘 작동합니다.

id=$(wmctrl -l | grep -oP "(?<=)(0x\w+)(?=.*Chromium)") //Put here the regex for the browser you use
xdotool key --window $id "ctrl+l"
xdotool key --window $id "ctrl+c"

이제 클립보드에 URL이 생겼습니다. 그런 다음 xclip을 사용하여 URL 작업을 수행합니다.

누군가가 이를 찾으면 이에 대한 실제 해결책을 보고 싶습니다.

답변2

스크립트가 작동하기 때문에 실행 후에 발생하는 오류를 알려주실 수 있나요? 여기에도 동일한 질문이 있으며 다음을 사용하여 답변 php했습니다 perl.

터미널에 열려 있는 Firefox 탭의 출력 URL

Python의 주요 부분은 순수한 Python 스크립트이므로 동일한 작업을 수행하려면 시도해 보십시오.

    #!/usr/bin/python
    import json
    f = open("recovery.js","r")
    jdata = json.loads(f.read())
    f.close()

    number_of_selected_tab = jdata["windows"][0]["selected"]

    tab_number = 1
    for win in jdata.get("windows"):
        for tab in win.get("tabs"):
            if number_of_selected_tab == tab_number :
                tab_index = tab.get("index") - 1
                print tab.get("entries")[tab_index].get("url")
            tab_number = tab_number + 1

/home/username/.mozilla/firefox/xxxxx.default/sessionstore.js파일 을 recovery.js. 내 경우(Mozilla Firefox 44.0, openSUSE 13.1) 파일은 ~/.mozilla/firefox/*.default/sessionstore-backups/recovery.js. 그리고 마지막으로 두 개의 Firefox실행 인스턴스가 있으면 스크립트가 작동하지 않습니다.

관련 정보