Gibt es eine Möglichkeit, die URL vom aktuellen Tab in Google Chrome abzurufen?

Gibt es eine Möglichkeit, die URL vom aktuellen Tab in Google Chrome abzurufen?

Früher habe ich das in Firefox mit einem Python-Befehl gemacht, aber vor Kurzem hat sich etwas geändert und ich kann die URL nicht mehr abrufen!

  • Was früher mit Firefox funktionierte:

    #!/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
    

Kann mir jemand sagen, wie das in Firefox und/oder Chrome geht?

NOTIZ: Ich verstehe Python nicht, ich habe diese Befehle einfach irgendwo gefunden und sie in Bash verwendet!

Antwort1

Ich hatte das gleiche Problem und bin beim Versuch, es zu lösen, dort durchgekommen, daher werde ich meine Lösung (die ziemlich schlecht ist) hier posten.

Ich verwende hierfür wmctrl (Sie könnten stattdessen auch xprop verwenden) und xdotool. Zuvor habe ich eine Erweiterung verwendet, um die URL in der Titelleiste sichtbar zu machen (Sie können dann über xprop oder wmctrl auf die URL zugreifen). Beide Methoden funktionieren ziemlich gut, sind aber nicht wirklich „sauber“.

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"

Sie haben jetzt die URL in Ihrer Zwischenablage. Ich verwende dann xclip, um mit der URL zu arbeiten.

Ich würde gerne eine echte Lösung dafür sehen, falls jemand eine findet.

Antwort2

Können Sie den Fehler nennen, den Sie nach der Ausführung erhalten, da das Skript bei mir funktioniert? Hier gibt es die gleiche Frage, beantwortet mit phpund perl:

Ausgabe-URL der geöffneten Firefox-Tabs im Terminal

Da der Hauptteil in Python ist, finden Sie hier ein reines Python-Skript. Um dasselbe zu tun, probieren Sie es auch aus:

    #!/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

Ich habe /home/username/.mozilla/firefox/xxxxx.default/sessionstore.jsdie Datei durch ersetzt recovery.js. In meinem Fall (Mozilla Firefox 44.0, openSUSE 13.1) ist die Datei ~/.mozilla/firefox/*.default/sessionstore-backups/recovery.js. Und zu guter Letzt funktioniert das Skript nicht, wenn Sie zwei Instanzen von Firefoxausführen.

verwandte Informationen