Gibt es eine Möglichkeit, die URL von der aktuellen Registerkarte in Google Chrome abzurufen?

13

Ich habe das auf Firefox mit einem Python-Befehl gemacht, aber kürzlich hat sich etwas geändert und ich kann die URL nicht mehr bekommen!

  • Was früher mit Firefox gearbeitet hat:

    #!/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 man das in Firefox und / oder Chrom macht?

HINWEIS : Ich verstehe Python nicht. Ich habe diese Befehle nur irgendwo gefunden und sie in bash verwendet!

Jona
quelle
Etwas wie Selen ist dafür besser geeignet
Cristi

Antworten:

6

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

Ich benutze wmctrl (Sie könnten stattdessen xprop verwenden) und xdotool, um dies zu tun. Bisher 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, obwohl sie nicht wirklich "sauber" sind.

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 benutze dann xclip, um mit der URL zu arbeiten.

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

reyan
quelle
3

Könnten Sie den Fehler mitteilen, den Sie nach der Ausführung erhalten, weil das Skript für mich funktioniert. Es gibt hier die gleiche Frage, die mit phpund beantwortet wurdeperl :

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

Da der Hauptteil von Python hier ein reines Python-Skript ist, probieren Sie es auch aus, um dasselbe zu tun:

    #!/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 die /home/username/.mozilla/firefox/xxxxx.default/sessionstore.jsDatei 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 last but not least funktioniert das Skript nicht, wenn zwei Instanzen Firefoxausgeführt werden.

Nikiforov Alexander
quelle
Was ist die entsprechende Datei für Chrome?
Gaurav Parashar