URL เอาต์พุตของแท็บ firefox แบบเปิดในเทอร์มินัล


17

ฉันต้องการค้นหา URL ของแท็บ firefox ที่เปิดอยู่ในปัจจุบันด้วยคำสั่งเทอร์มินัล มีความเป็นไปได้ไหม?

วิธีนี้ฉันจะสามารถเขียนลงในแฟ้มข้อความและดูในภายหลังได้ และทรัพยากรที่ปลอดภัย (ฉันมักจะมีแท็บเปิดหลายแห่ง) ฉันรู้ว่ามี add-on สำหรับ firefox แต่ฉันจะเขียนสคริปต์ของตัวเองให้ฉันได้

คำตอบ:


8

URL ที่เปิดอยู่ในปัจจุบันของแท็บ Firefox ที่เปิดอยู่จะถูกเก็บไว้ในsessionstore.jsไฟล์ซึ่งอยู่ใน$HOME/.mozilla/firefox/XXXXXXXX.defaultไดเรกทอรี

ดังนั้นคุณสามารถเริ่มต้นจากสิ่งนี้:

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

ใช้catเราสามารถแสดงไฟล์นั้นและด้วยความช่วยเหลือของsed, egrepและcutเราเลือกเฉพาะ URL ที่ของเปิดแท็บ Firefox จากไฟล์ว่า


จำเป็นต้องใช้เครื่องหมายคำพูดคู่สำหรับegrepรูปแบบzshระบบ นอกจากนั้นเคล็ดลับดี ๆ ขอบคุณ :)
23416 moon moon

1
คุณต้องการอธิบายด้วยคำสองสามคำว่าคำสั่งนี้ทำงานอย่างไร ตามที่ฉันได้รับมันเป็นเหมือน: รับเนื้อหาของ sessionstore.js ไปป์ที่การดำเนินการเพื่อแทนที่ \ "ด้วย \ n และไปป์ที่การดำเนินการเพื่อรับบรรทัดทั้งหมดที่ขึ้นต้นด้วย http ใช่ถูกต้องอะไรคือการใช้ กำลังแทนที่ \ "
aldorado

1
@aldorado จะแสดงเนื้อหาของsessionstore.jsไฟล์แล้วแทนที่ปรากฏของ"ด้วย\n(ขึ้นบรรทัดใหม่) และจากนั้นกรองเอาเฉพาะสายที่มีหรือhttp httpsลองแสดงไฟล์แล้วคุณจะรู้ว่าทำไมมันถึงต้องมีการขึ้นบรรทัดใหม่ :)
27926 moon.musick

2
ในไฟล์sessionstore.jsมีไม่เพียง แต่ที่อยู่ของแท็บที่เปิดอยู่ มีที่อยู่อื่นอีกมากมาย
Nicolas Barbulesco

1
คำตอบนี้ใช้ไฟล์sessionstore.jsของ Firefox ปัญหาคือว่าไฟล์นี้เสียแท็บอย่างฉาวโฉ่ สิ่งที่ฉันต้องการคือโซลูชันขนานถาม Firefox ว่าแท็บของเขาคืออะไร เหมือนใน AppleScript
Nicolas Barbulesco

5

ข้อมูลนั้นจะถูกเก็บไว้ใน $ HOME / .mozilla / firefox / * default / sessionstore.js และรูปแบบของมันคือ json

ตัวอย่างต่อไปนี้จัดทำขึ้นเพื่อใช้งานกับ PHP มันเดินหน้าต่าง Firefox ทั้งหมดแท็บทั้งหมดและได้รับข้อมูลที่เกี่ยวข้องซึ่งเป็นรายการสุดท้ายใน "รายการ" หากเราสามารถใช้ xpath ในการแยกมันจะเป็นสิ่งที่ต้องการ: / windows / * / แท็บ / last () / url (ความรู้ xpath ของฉันเป็นสนิม)

คุณสามารถคัดลอก / วางรหัสนี้ไปยังเทอร์มินัล:

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";'

แก้ไข : ด้วย Perl (แต่ก่อนอื่น 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";
    }
}'

คำตอบนี้ใช้ไฟล์sessionstore.jsของ Firefox ปัญหาคือว่าไฟล์นี้เสียแท็บอย่างฉาวโฉ่ สิ่งที่ฉันต้องการคือโซลูชันขนานถาม Firefox ว่าแท็บของเขาคืออะไร เหมือนใน AppleScript
Nicolas Barbulesco

คุณหมายความว่าอย่างไร "เสียแท็บ"? ปัจจุบันฉันใช้ Firefox พร้อม 5 แท็บและฉันเห็น 5 แท็บเหล่านี้เมื่อเรียกใช้สคริปต์เหล่านี้ วิธีนี้จะนำ Windows ทั้งหมดและแท็บทั้งหมดของแต่ละหน้าต่าง
Hugo Vieira

ผมหมายถึงนี้
Nicolas Barbulesco

คำถามที่โพสต์โดย aldorado: (... ) ค้นหา URL ของแท็บ Firefox ที่เปิดอยู่ในปัจจุบัน (... ) คุณกำลังพูดถึงรายชื่อแท็บที่ถูกบันทึกหลังจากปิด firefox นอกจากนี้ข้อผิดพลาดนั้นดูเหมือนจะไม่เป็นที่รู้จักกันดี ...
Hugo Vieira

1
ฉันได้ทดสอบทั้งสองวิธีสำหรับrecovery.jsไฟล์กับ 9 windows และ 840 แท็บและพวกเขาทำงานเหมือนมีเสน่ห์! - หลังจากท่อออกเป็นไฟล์ข้อความฉันต้องตั้งตัวละครแผนที่เพื่อISO-8859-15สำหรับไฟล์ของวิธีperl ... !
DJCrashdummy

0

นี่คือวิธีที่คุณสามารถแยก URL ปัจจุบันของแท็บส่วนหน้า / ใช้งานใน Firefox:

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"];'

คำอธิบาย: ก่อนอื่นมันจะค้นหาดัชนีของแท็บที่ใช้งานอยู่$tindexและจากนั้นดัชนีของรายการประวัติที่ใช้งานในแท็บ$eindexนี้

ทุก 15 วินาที Firefox *default/sessionstore-backups/recovery.jsสร้างการสำรองข้อมูลใน


1
php5-cli จะต้องติดตั้งเพื่อให้ใช้งานได้คุณสามารถเพิ่มคำตอบของคุณเพื่อปรับปรุง มีวิธีที่จะคว้าแท็บทั้งหมดไม่เพียง แต่ด้านหน้ามากที่สุด? เหมือน OP ถาม
เมียน

ฉันตระหนักถึงความไม่ตรงกันของคำถามและคำตอบของฉันอย่างไรก็ตาม Google จะนำคุณไปที่นี่หากคุณค้นหาข้อมูลในคำตอบของฉัน
Lenar Hoyt

0

ใช้ bash ฉันพบคำตอบต่อไปนี้ ต้องใช้แพคเกจเท่านั้น: jq สามารถติดตั้งได้ด้วย: apt-get install jq

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.