est-il possible d'obtenir l'url de l'onglet actuel dans google-chrome?

13

J'avais l'habitude de le faire sur Firefox en utilisant une commande python, mais récemment quelque chose a changé et je ne peux plus obtenir l'URL!

  • Ce qui fonctionnait avec 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

Quelqu'un peut-il me dire comment faire cela dans Firefox et / ou Chrome?

REMARQUE : je ne comprends pas python, je viens de trouver ces commandes quelque part et de les utiliser dans bash!

Jonas
la source
Quelque chose comme le sélénium conviendra mieux à cela
cristi

Réponses:

6

J'ai eu le même problème et je suis passé par là en essayant de le résoudre, donc je posterai ma solution (ce qui est assez mauvais) ici.

J'utilise wmctrl (vous pouvez utiliser xprop à la place) et xdotool pour ce faire. Auparavant, j'utilisais une extension pour rendre l'URL visible dans la barre de titre (vous pouvez ensuite accéder à l'URL via xprop ou wmctrl). Les deux méthodes fonctionnent plutôt bien mais ce n'est pas vraiment "propre".

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"

Vous avez maintenant l'URL dans votre presse-papiers. J'utilise ensuite xclip pour travailler avec l'URL.

J'aimerais voir une vraie solution à cela si quelqu'un en trouve une.

reyan
la source
3

Pourriez-vous dire l'erreur que vous obtenez après l'exécution, car le script fonctionne pour moi. Il y a la même question ici, répondue en utilisant phpet perl:

URL de sortie des onglets Firefox ouverts dans le terminal

Depuis la partie principale de python, voici un script purement python, pour faire la même chose, essayez-le également:

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

J'ai remplacé le /home/username/.mozilla/firefox/xxxxx.default/sessionstore.jsfichier par recovery.js. Dans mon cas (Mozilla Firefox 44.0, openSUSE 13.1), le fichier est ~/.mozilla/firefox/*.default/sessionstore-backups/recovery.js. Et enfin et surtout, le script ne fonctionne pas si vous avez deux instances en Firefoxcours d' exécution.

Nikiforov Alexander
la source
Quel est le fichier équivalent pour Chrome?
gaurav parashar