Terminaldeki açık firefox sekmelerinin çıkış URL'si


17

Şu anda açılan firefox sekmelerinin URL'lerini bir terminal komutuyla bulmak istiyorum. Herhangi bir olasılık var mı?

Bu şekilde onları bir metin dosyasına yazabilir ve onlara laterona bakabilirdim; ve güvenli kaynaklar (çoğu zaman açık sekmelerim var). Firefox için bir eklenti olduğunu biliyorum, ama kendi senaryomu yazmak daha rahat olurdu.

Yanıtlar:


8

Şu anda açık olan Firefox sekmelerinin açık URL'leri, dizinde bir sessionstore.jsyerde bulunan dosyada saklanır $HOME/.mozilla/firefox/XXXXXXXX.default.

Yani, böyle bir şeyden başlayabilirsiniz:

cat $HOME/.mozilla/firefox/*default/sessionstore.js | sed "s/{/\n/g" | egrep -o '"url".*"scroll"' | cut -d\" -f4

Kullanılması catbiz bu dosyayı görüntüleyebilir ve yardımıyla sed, egrepve cutbiz bu dosyadan açılan Firefox sekmeleri sadece URL'ler seçin.


İçindeki egrepdesen için çift tırnak işareti gerekiyor zsh. Bunun dışında güzel ipucu, teşekkürler :)
moon.musick

1
Bu komutun nasıl çalıştığını birkaç kelimeyle açıklamak ister misiniz? Aldığım gibi: sessionstore.js içeriği almak, \ n yerine \ n ile değiştirmek için bir operasyona boru ve http ile başlayan tüm satırları almak için bir operasyona boru? Bu doğru mu? \ "yerine mi?
aldorado

1
@aldorado bu içeriğini görüntüler sessionstore.jsdaha sonra tekrarlarını yerine, dosya "ile \nihtiva eden tek satır filtreler daha sonra, (a satır) ve httpya da https. Dosyayı görüntülemeyi deneyin ve neden yeni satırlara ihtiyacı olduğunu
anlayacaksınız

2
Dosyada sessionstore.jssadece açık sekmelerin adresleri yoktur. Başka birçok adres var.
Nicolas Barbulesco

1
Bu cevap sessionstore.jsFirefox dosyasını kullanır . Sorun şu ki, bu dosya ünlüce sekmeleri kaybediyor olmasıdır. Burada istediğim paralel bir çözüm, Firefox'a sekmelerinin ne olduğunu soruyor. AppleScript'te olduğu gibi.
Nicolas Barbulesco

5

Bu bilgiler $ HOME / .mozilla / firefox / * default / sessionstore.js dosyasında saklanır ve biçimi json'dur.

Aşağıdaki örnek PHP ile çalışmak için yapılmıştır. Tüm firefox pencerelerini, tüm sekmeleri yürür ve "girişler" içindeki son giriş olan ilgili bilgileri alır. Xpath'i ayrıştırmak için kullanabilirsek, şöyle bir şey olurdu: / windows / * / tabs / last () / url (xpath bilgim paslı).

Bu kodu bir terminale kopyalayıp yapıştırabilirsiniz:

cat $HOME/.mozilla/firefox/*default/sessionstore.js | php -r '
$json=json_decode(fgets(STDIN), TRUE);
foreach($json["windows"] as $w)
foreach($w["tabs"] as $t)
echo end($t["entries"])["url"]."\n";'

EDIT : perl ile (ama önce, sudo apt-get install libjson-pp-perl):

cat $HOME/.mozilla/firefox/*default/sessionstore.js | perl -e '
use JSON qw( decode_json );
my $json = decode_json(<STDIN>);
foreach my $w ( @{$json->{"windows"}} ) {
    foreach my $t ( @{$w->{"tabs"}} ) {
        print $t->{"entries"}[-1]->{"url"}."\n";
    }
}'

Bu cevap sessionstore.jsFirefox dosyasını kullanır . Sorun şu ki, bu dosya ünlüce sekmeleri kaybediyor olmasıdır. Burada istediğim paralel bir çözüm, Firefox'a sekmelerinin ne olduğunu soruyor. AppleScript'te olduğu gibi.
Nicolas Barbulesco

Ne demek "sekmeleri kaybeder"? Şu anda 5 sekmeli Firefox çalıştırıyorum ve bu komut dosyalarını çalıştırırken bu 5 sekmeyi görüyorum. Bu çözüm tüm pencereleri ve her pencerenin tüm sekmelerini yürür.
Hugo Vieira


Aldorado tarafından gönderilen soru: (...) şu anda açılmış olan firefox sekmelerinin (...) URL'lerini bulur. Firefox kapatıldıktan sonra kaydedilen sekmelerin listelenmesinden bahsediyorsunuz. Ayrıca, bu böcek o kadar meşhur görünmüyor ...
Hugo Vieira

1
recovery.js9 pencere ve 840 sekmeleri ile -dosya için her iki yöntemi de test ettik ve onlar bir cazibe gibi çalıştı! - hemen sonra boru çıkışı bir metin dosyasına ı ayarlamak zorunda karakter haritası için ISO-8859-15 arasında dosya için perl-yöntemle ...!
DJCrashdummy

0

Firefox'ta en ön / etkin sekmenin geçerli URL'sini şu şekilde çıkarabilirsiniz:

cat recovery.js | php -r '$json=json_decode(fgets(STDIN), TRUE); $tindex = $json["windows"][0]["selected"]-1; $eindex = $json["windows"][0]["tabs"][$tindex]["index"]-1; echo $json["windows"][0]["tabs"][$tindex]["entries"][$eindex]["url"];'

Açıklama: İlk olarak, etkin sekmenin dizinini bulur $tindex dizinini ve ardından bu sekmedeki etkin geçmiş girdisinin$eindex .

Firefox her 15 saniyede bir yedek oluşturur *default/sessionstore-backups/recovery.js.


1
Bunu geliştirmek için php5-cli yüklü olması gerekir geliştirmek için cevabınıza ekleyebilirsiniz. Sadece en önde olmayan sekmelerin URL'lerini almanın bir yolu var mı? OP'nin istediği gibi.
damien

Sorunun ve cevabımın uyumsuzluğunun farkındayım, ancak cevabımdaki bilgileri ararsanız Google sizi buraya yönlendirecektir.
Lenar Hoyt

0

Bash kullanarak aşağıdaki cevabı buldum. Sadece paket gerektirir: jq. İle kurulabilir: apt-get install jq

jq '.windows[].tabs[].entries[].url' ~/.mozilla/firefox/xkxwaf4z.default/sessionstore-backups/recovery.js

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.