Czy istnieje sposób na uzyskanie adresu URL z bieżącej karty w Google-Chrome?

13

Robiłem to w Firefoxie za pomocą polecenia Python, ale ostatnio coś się zmieniło i nie mogę już uzyskać adresu URL!

  • Co kiedyś działało z 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

Czy ktoś może mi powiedzieć, jak to zrobić w Firefoksie i / lub Chrome?

UWAGA : Nie rozumiem Pythona, właśnie gdzieś znalazłem te polecenia i użyłem ich w bash!

Jonasz
źródło
Coś takiego jak selen będzie bardziej odpowiednie do tego
cristi

Odpowiedzi:

6

Miałem ten sam problem i próbowałem go rozwiązać, więc opublikuję tutaj moje rozwiązanie (które jest dość złe).

Używam do tego wmctrl (możesz zamiast tego użyć xprop) i xdotool. Wcześniej korzystałem z rozszerzenia, aby adres URL był widoczny na pasku tytułu (możesz uzyskać dostęp do adresu URL za pośrednictwem xprop lub wmctrl). Obie metody działają całkiem dobrze, choć nie są tak naprawdę „czyste”.

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"

Masz teraz adres URL w schowku. Następnie używam xclip do pracy z adresem URL.

Chciałbym zobaczyć prawdziwe rozwiązanie tego problemu, jeśli ktoś je znajdzie.

reyan
źródło
3

Czy możesz powiedzieć błąd, który pojawia się po wykonaniu, ponieważ skrypt działa dla mnie. Tutaj jest to samo pytanie, na które udzielono odpowiedzi za pomocą phpi perl:

Wyjściowy adres URL otwartych kart Firefoxa w terminalu

Ponieważ główna część Pythona, tutaj jest skrypt czysto pythonowy, aby zrobić to samo, spróbuj również:

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

/home/username/.mozilla/firefox/xxxxx.default/sessionstore.jsPlik zastąpiłem recovery.js. W moim przypadku (Mozilla Firefox 44.0, openSUSE 13.1) plik to ~/.mozilla/firefox/*.default/sessionstore-backups/recovery.js. I na koniec, skrypt nie działa, jeśli masz dwa wystąpienia Firefoxdziałania.

Nikiforov Alexander
źródło
Co to jest równoważny plik dla Chrome?
gaurav parashar