c'è un modo per ottenere l'URL dalla scheda corrente in Google Chrome?


13

Lo facevo su Firefox usando un comando Python, ma recentemente qualcosa è cambiato e non riesco più a trovare l'URL!

  • Cosa funzionava con 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

Qualcuno può dirmi come fare in Firefox e / o Chrome?

NOTA : non capisco Python, ho appena trovato quei comandi da qualche parte e li ho usati in bash!


Qualcosa come il selenio sarà più adatto a questo
cristi il

Risposte:


6

Ho avuto lo stesso problema e ci sono riuscito mentre cercavo di risolverlo, quindi posterò la mia soluzione (che è piuttosto male) qui.

Uso wmctrl (potresti usare xprop invece) e xdotool per fare questo. In precedenza, ho usato un'estensione per rendere visibile l'URL nella barra del titolo (è quindi possibile accedere all'URL tramite xprop o wmctrl). Entrambi i metodi funzionano abbastanza bene anche se non è "pulito".

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"

Ora hai l'URL negli appunti. Quindi uso xclip per lavorare con l'URL.

Mi piacerebbe vedere una vera soluzione a questo se qualcuno la trovasse.


3

Potresti dire l'errore, che si ottiene dopo l'esecuzione, perché lo script funziona per me. C'è la stessa domanda qui, ha risposto usando phpe perl:

URL di output delle schede firefox aperte nel terminale

Poiché la parte principale di Python, ecco uno script puramente Python, per fare la stessa cosa, provalo anche:

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

Ho sostituito il /home/username/.mozilla/firefox/xxxxx.default/sessionstore.jsfile con recovery.js. Nel mio caso (Mozilla Firefox 44.0, openSUSE 13.1) il file è ~/.mozilla/firefox/*.default/sessionstore-backups/recovery.js. E, ultimo ma non meno importante, lo script non funziona se hai due istanze di Firefoxesecuzione.


Qual è il file equivalente per Chrome?
gaurav parashar,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.