¿hay alguna manera de obtener la URL de la pestaña actual en google-chrome?


13

Solía ​​hacerlo en Firefox usando un comando de Python, pero recientemente algo cambió y ya no puedo obtener la URL.

  • Lo que solía funcionar 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

¿Alguien puede decirme cómo hacer esto en Firefox y / o Chrome?

NOTA : No entiendo python, ¡acabo de encontrar esos comandos en alguna parte y los usé en bash!


Algo como el selenio será más adecuado para esto
cristi

Respuestas:


6

Tuve el mismo problema y lo resolví mientras intentaba resolverlo, así que publicaré mi solución (que es bastante mala) aquí.

Yo uso wmctrl (podría usar xprop en su lugar) y xdotool para hacer esto. Anteriormente, utilizaba una extensión para hacer visible la URL en la barra de título (luego puede acceder a la URL a través de xprop o wmctrl). Ambos métodos funcionan bastante bien, aunque en realidad no es "limpio".

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"

Ahora tiene la URL en su portapapeles. Luego uso xclip para trabajar con la URL.

Me encantaría ver una solución real para esto si alguien encuentra una.


3

¿Podría decir el error que obtiene después de la ejecución, porque el script funciona para mí? Aquí hay la misma pregunta, respondida usando phpy perl:

URL de salida de pestañas abiertas de Firefox en la terminal

Como la parte principal de Python, aquí hay un script puramente de Python, para hacer lo mismo, pruébalo también:

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

Reemplacé el /home/username/.mozilla/firefox/xxxxx.default/sessionstore.jsarchivo con recovery.js. En mi caso (Mozilla Firefox 44.0, openSUSE 13.1) el archivo es ~/.mozilla/firefox/*.default/sessionstore-backups/recovery.js. Y por último, pero no menos importante, el script no funciona si tiene dos instancias de Firefoxejecución.


¿Cuál es el archivo equivalente para Chrome?
gaurav parashar
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.