apakah ada cara untuk mendapatkan url dari tab saat ini di google-chrome?

13

Saya biasa melakukan itu di firefox menggunakan perintah python, tetapi baru-baru ini ada yang berubah dan saya tidak bisa mendapatkan URL lagi!

  • Apa yang digunakan untuk bekerja dengan 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

Adakah yang bisa memberi tahu saya cara melakukan ini di firefox dan / atau chrome?

CATATAN : Saya tidak mengerti python, saya baru saja menemukan perintah itu di suatu tempat dan menggunakannya dalam bash!

Jonah
sumber
Sesuatu seperti selenium akan lebih cocok untuk ini
cristi

Jawaban:

6

Saya memiliki masalah yang sama dan berhasil melewati sana saat mencoba menyelesaikannya, jadi saya akan memposting solusi saya (yang sangat buruk) di sini.

Saya menggunakan wmctrl (Anda bisa menggunakan xprop sebagai gantinya) dan xdotool untuk melakukan ini. Sebelumnya, saya menggunakan ekstensi untuk membuat URL terlihat di bilah judul (Anda kemudian dapat mengakses url melalui xprop atau wmctrl). Kedua metode ini bekerja dengan cukup baik meskipun sebenarnya tidak "bersih".

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"

Anda sekarang memiliki url di clipboard Anda. Saya kemudian menggunakan xclip untuk bekerja dengan URL.

Saya ingin melihat solusi nyata untuk ini jika ada yang menemukannya.

Reyan
sumber
3

Bisakah Anda memberi tahu kesalahan, yang Anda dapatkan setelah eksekusi, karena skrip berfungsi untuk saya. Ada pertanyaan yang sama di sini, dijawab menggunakan phpdan perl:

Keluaran URL tab firefox terbuka di terminal

Karena bagian utama dalam python, di sini adalah skrip python murni, untuk melakukan hal yang sama, cobalah juga:

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

Saya mengganti /home/username/.mozilla/firefox/xxxxx.default/sessionstore.jsfile dengan recovery.js. Dalam kasus saya (Mozilla Firefox 44.0, openSUSE 13.1) file tersebut ~/.mozilla/firefox/*.default/sessionstore-backups/recovery.js. Terakhir, skrip tidak berfungsi jika Anda menjalankan dua contoh Firefox.

Nikiforov Alexander
sumber
Apa file yang setara untuk Chrome?
gaurav parashar