Saya mencoba menggunakan wget untuk membuat mirror lokal dari sebuah situs web. Tetapi saya menemukan bahwa saya tidak mendapatkan semua halaman yang terhubung.
Inilah situs webnya
http://web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice/
Saya tidak ingin semua halaman yang dimulai dengan web.archive.org
, tetapi saya ingin semua halaman yang dimulai http://web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice/
.
Ketika saya gunakan wget -r
, dalam struktur file saya, saya menemukan
web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice/index.html,
tetapi saya tidak memiliki semua file yang merupakan bagian dari database ini, mis
web.archive.org/web/20110808041151/http://cst-www.nrl.navy.mil/lattice/struk/d0c.html.
Mungkin httrack akan lebih baik, tetapi saat ini itu terlalu banyak.
Jadi, dengan cara apa mungkinkah untuk mengambil salinan lokal dari situs web yang diarsipkan dari Internet Archive Wayback Machine?
linux
wget
httrack
webarchive
pengguna695322
sumber
sumber
20110722080716
snapshot, maka-np
opsi wget tidak akan membantu.Jawaban:
Meskipun bermanfaat, respons-respons sebelumnya gagal menyelesaikan pertanyaan yang mendasarinya secara ringkas, andal, dan berulang. Dalam posting ini, kami secara singkat merinci kesulitan dengan masing-masing dan kemudian menawarkan
httrack
solusi berbasis sederhana .Latar Belakang
Namun sebelum kita membahasnya , pertimbangkan membaca respons mpy yang ditulis dengan baik. Dalam pos yang diabaikan dengan menyedihkan, mpy dengan cermat mendokumentasikan skema pengarsipan Wayback Machine yang tidak jelas (dan benar-benar membingungkan).
Tidak mengejutkan, itu tidak cantik. Daripada mengarsipkan situs secara sehat ke dalam satu direktori, The Wayback Machine secara singkat menyebarkan satu situs di dua atau lebih direktori saudara yang teridentifikasi secara numerik. Mengatakan bahwa ini memperumit pencerminan akan menjadi pernyataan yang meremehkan.
Memahami perangkap mengerikan yang disajikan oleh skema ini adalah inti untuk memahami ketidakmampuan solusi sebelumnya. Mari kita lanjutkan, oke?
Solusi Sebelumnya 1: wget
Pertanyaan StackOverflow terkait "Memulihkan situs web lama dari waybackmachine" mungkin merupakan pelaku terburuk dalam hal ini, merekomendasikan
wget
untuk mirroring Wayback. Tentu saja, rekomendasi itu pada dasarnya tidak sehat.Dengan tidak adanya penulisan ulang URL eksternal yang kompleks (mis.,
Privoxy
),wget
Tidak dapat digunakan untuk mencerminkan situs yang diarsipkan Wayback dengan andal. Seperti detail mpy di bawah "Masalah 2 + Solusi," alat mirroring apa pun yang Anda pilih harus memungkinkan Anda untuk mengunduh secara non-transaktif hanya URL milik situs target. Secara default, sebagian besar alat mirroring mengunduh semua URL milik situs target dan situs yang ditautkan secara transitif dari situs itu - yang, dalam kasus terburuk, berarti "seluruh Internet."Contoh konkret ada dalam urutan. Saat mencerminkan domain contoh
kearescue.com
, alat pencerminan Anda harus :https://web.archive.org/web/*/http://kearescue.com
. Ini adalah aset yang disediakan oleh situs target (misalnya,https://web.archive.org/web/20140521010450js_/http_/kearescue.com/media/system/js/core.js
).https://web.archive.org/web/20140517180436js_/https_/connect.facebook.net/en_US/all.js
).Gagal mengecualikan URL tersebut biasanya menarik semua atau sebagian besar Internet yang diarsipkan pada saat situs diarsipkan, terutama untuk situs yang menanamkan aset yang dihosting secara eksternal (misalnya, video YouTube).
Itu akan buruk. Meskipun
wget
memang menyediakan--exclude-directories
opsi baris perintah yang menerima satu atau beberapa pola URL yang cocok untuk dikecualikan, ini bukan ekspresi reguler tujuan umum; mereka gumpalan sederhana yang*
sintaksinya cocok dengan nol atau lebih karakter tidak termasuk/
. Karena URL yang dikecualikan mengandung banyak/
karakter secara sewenang-wenang ,wget
tidak dapat digunakan untuk mengecualikan URL ini dan karenanya tidak dapat digunakan untuk mencerminkan situs yang diarsipkan dengan Wayback. Titik. Akhir dari kisah malang.Masalah ini telah menjadi catatan publik setidaknya sejak tahun 2009. Masalah ini belum diselesaikan. Lanjut!
Solusi Sebelumnya 2: Scrapbook
Prinz merekomendasikan
ScrapBook
, sebuah plugin Firefox. Plugin Firefox.Mungkin itu yang perlu Anda ketahui. Sementara
ScrapBook
'sFilter by String...
fungsi tidak alamat tersebut 'Masalah 2 + Solusi,' itu tidak mengatasi berikutnya 'Masalah 3 + Solusi' - yaitu, masalah duplikat asing.Masih dipertanyakan apakah
ScrapBook
bahkan cukup mengatasi masalah sebelumnya. Seperti yang diakui mpy :Solusi yang tidak dapat diandalkan dan terlalu sederhana adalah non-solusi. Lanjut!
Solusi Sebelumnya 3: wget + Privoksi
mpy kemudian memberikan solusi yang kuat untuk meningkatkan keduanya
wget
danPrivoxy
. Sementarawget
ini cukup sederhana untuk mengkonfigurasi,Privoxy
adalah sesuatu tetapi wajar. Atau sederhana.Karena rintangan teknis yang tidak dapat ditanggung untuk menginstal, mengkonfigurasi, dan menggunakan dengan benar
Privoxy
, kami belum mengkonfirmasi solusi mpy . Itu harus bekerja secara terukur, kuat. Mengingat adanya hambatan untuk masuk, solusi ini mungkin lebih sesuai untuk otomatisasi skala besar daripada rata-rata webmaster yang berusaha memulihkan situs skala kecil hingga menengah.Apakah
wget
+Privoxy
patut dilihat? Benar. Tetapi sebagian besar pengguna super mungkin dilayani lebih baik dengan solusi yang lebih sederhana dan lebih mudah diterapkan.Solusi Baru: httrack
Enter
httrack
, sebuah utilitas command-line yang mengimplementasikan superset dariwget
fungsionalitas mirroring.httrack
mendukung pengecualian URL berbasis pola dan restrukturisasi situs sederhana. Yang pertama memecahkan "Masalah 2 + Solusi" mpy ; yang terakhir, "Masalah 3 + Solusi."Dalam contoh abstrak di bawah ini, ganti:
${wayback_url}
oleh URL direktori tingkat atas yang mengarsipkan keseluruhan situs target Anda (mis.,'https://web.archive.org/web/20140517175612/http://kearescue.com'
).${domain_name}
dengan nama domain yang sama hadir dalam${wayback_url}
mengecualikan awalanhttp://
(misalnya,'kearescue.com'
).Kita mulai. Instal
httrack
, buka jendela terminal,cd
ke direktori lokal tempat Anda ingin situs Anda diunduh, dan jalankan perintah berikut:Setelah selesai, direktori saat ini harus berisi satu subdirektori untuk setiap jenis file yang dicerminkan dari URL itu. Ini biasanya termasuk setidaknya:
css
, mengandung semua stylesheet CSS cermin.html
, mengandung semua halaman HTML yang dipantulkan.js
, mengandung semua JavaScript yang dicerminkan.ico
, mengandung satu cermin favicon.Karena secara
httrack
internal menulis ulang semua konten yang diunduh untuk mencerminkan struktur ini, situs Anda sekarang dapat dijelajahi sebagaimana adanya tanpa modifikasi. Jika Anda menghentikan perintah di atas secara prematur dan ingin melanjutkan pengunduhan, tambahkan--continue
opsi ke perintah yang sama persis dan coba lagi.Itu dia. Tidak diperlukan liuk eksternal, penulisan ulang URL yang rawan kesalahan, atau server proxy berbasis aturan.
Selamat menikmati, sesama pengguna super.
sumber
Sayangnya tidak ada jawaban yang mampu memecahkan masalah membuat mirror lengkap dari situs web yang diarsipkan (tanpa menduplikasi setiap file puluhan kali). Jadi saya meretas pendekatan lain. Diretas adalah kata yang penting karena solusi saya bukan solusi umum atau sangat sederhana (baca: salin & tempel). Saya menggunakan Privoxy Proxy Server untuk menulis ulang file on-the-fly sambil mirroring dengan wget.
Tetapi pertama-tama, apa yang begitu sulit untuk dicerminkan dari Wayback Machine ?
Masalah 1 + Solusi
Toolback Wayback berguna untuk penggunaan interaktif, tetapi mungkin mengganggu wget. Jadi singkirkan dengan aturan filter privoxy
Masalah 2 + Solusi
Saya ingin menangkap seluruh situs, sehingga diperlukan kedalaman rekursi yang tidak terlalu kecil. Tapi saya tidak ingin merayapi seluruh server. Biasanya Anda menggunakan no-induk pilihan
-np
dari wget untuk tujuan itu. Tetapi itu tidak akan berhasil di sini, karena Anda ingin mendapatkannyatetapi juga
(perhatikan cap waktu yang diubah di jalur). Mengabaikan
-np
akan berakhir dengan merayap hingga(...)http://cst-www.nrl.navy.mil
, dan akhirnya mengambil seluruhnavi.mil
situs. Saya pasti tidak menginginkan itu! Jadi filter ini mencoba meniru-np
perilaku dengan mesin Wayback:Saya akan meninggalkannya sebagai latihan untuk menggali sintaksis. Apa yang dilakukan oleh filter ini adalah sebagai berikut: Ini mengganti semua URL Wayback
http://web.archive.org/web/20110801041529/http://www.nrl.navy.mil/
denganhttp://some.local.server/404
selama tidak mengandunghttp://cst-www.nrl.navy.mil/lattice/
.Anda harus menyesuaikan
http://some.local.server/404
. Ini untuk mengirim kesalahan 404 ke wget. Mungkin privoxy bisa melakukan itu dengan lebih elegan. Namun, cara termudah bagi saya adalah hanya menulis ulang tautan ke halaman yang tidak ada di server http lokal, jadi saya terjebak dengan ini.Dan, Anda juga perlu menyesuaikan kedua kejadian dari
http://cst-www.nrl.navy.mil/lattice/
untuk mencerminkan situs yang ingin cermin.Masalah 3 + Solusi
Dan akhirnya beberapa versi halaman yang diarsipkan mungkin menautkan ke halaman dalam snapshot lain. Dan itu untuk satu lagi. Dan seterusnya ... dan Anda akan mendapatkan banyak snapshot dari halaman yang sama - dan wget tidak akan pernah berhasil menyelesaikannya sampai ia mengambil semua snapshot. Aku benar-benar tidak menginginkan itu! Ini sangat membantu, bahwa mesin Wayback sangat cerdas. Anda dapat meminta file
bahkan jika itu tidak termasuk dalam
20110801041529
snapshot. Secara otomatis mengarahkan Anda ke yang benar:Jadi, filter privoxy lain untuk menulis ulang semua snapshot ke yang terbaru
Secara efektif setiap 14 digit angka yang disertakan
/.../
akan diganti dengan20120713212803
(sesuaikan dengan snapshot terbaru dari situs yang Anda inginkan). Ini mungkin menjadi masalah jika ada angka seperti itu dalam struktur situs yang tidak berasal dari mesin Wayback. Tidak sempurna, tetapi baik untuk situs Strukturtypen .Yang menyenangkan tentang itu adalah, bahwa wget mengabaikan lokasi baru itu diarahkan ke dan menyimpan file - dalam contoh di atas - sebagai
web.archive.org/web/20110801041529/http://cst-www.nrl.navy.mil/lattice/struk/a_f.html
.Menggunakan wget untuk mencerminkan situs yang diarsipkan
Jadi, akhirnya dengan filter privoksi ini (didefinisikan dalam
user.filter
) diaktifkanuser.action
melaluiAnda bisa menggunakan wget seperti biasa. Jangan lupa beri tahu wget untuk menggunakan proxy:
Saya menggunakan opsi ini, tetapi
-m
harus bekerja juga. Anda akan berakhir dengan foldersebagai mesin Wayback memisahkan gambar (
im_
), style sheet (cs_
) dll. Saya menggabungkan semuanya bersama dan menggunakan beberapa sihir sed untuk mengganti tautan relatif jelek (../../../../20120713212803js_/http:/cst-www.nrl.navy.mil/lattice
) yang sesuai. Tapi ini tidak terlalu penting.sumber
wget
Biasanya, saat mengunduh satu halaman HTML, dokumen yang diperlukan untuk menampilkannya dengan benar tidak diunduh. Menggunakan -r bersama-sama dengan l dapat membantu, tetapi karena Wget biasanya tidak membedakan antara dokumen eksternal dan inline, seseorang umumnya dibiarkan dengan "dokumen daun" yang kehilangan persyaratan mereka.
Misalnya, katakanlah dokumen 1.html berisi tag "" yang merujuk 1.gif dan tag "" yang menunjuk ke dokumen eksternal 2.html. Katakan bahwa 2.html serupa tetapi gambarnya 2.gif dan terhubung ke 3.html. Katakan ini berlanjut hingga beberapa angka tinggi yang sewenang-wenang.
-m
--mirror
Aktifkan opsi yang cocok untuk mirroring. Opsi ini mengaktifkan rekursi dan cap waktu, menetapkan kedalaman rekursi tak terbatas dan membuat daftar direktori FTP. Saat ini setara dengan -r -N -l inf --tidak-hapus-daftar.
Perhatikan bahwa Wget akan berperilaku seolah-olah telah ditentukan, tetapi hanya satu halaman dan syaratnya akan diunduh. Tautan dari halaman itu ke dokumen eksternal tidak akan diikuti. Sebenarnya, untuk mengunduh satu halaman dan semua persyaratannya (bahkan jika ada di situs web terpisah), dan memastikan lot ditampilkan dengan benar secara lokal, penulis ini suka menggunakan beberapa opsi selain -p:
wget -E -H -k -K -p http://<site>/<document>
SO
wget -E -H -k -K -p http://web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice
akan menjadi pakaian terbaik Anda untuk Anda. Tapi saya merekomendasikan alat lain,firefox
ekstensiscrapbook
buku kliping
ScrapBook adalah ekstensi Firefox, yang membantu Anda menyimpan halaman Web dan mengelola koleksi dengan mudah. Fitur utamanya adalah kemudahan, kecepatan, ketepatan, dan dukungan multi-bahasa. Fitur utama adalah:
* Simpan halaman Web
* Simpan cuplikan halaman Web
* Simpan situs Web
* Atur koleksi dengan cara yang sama seperti Penanda
* Pencarian teks lengkap dan pencarian pemfilteran cepat koleksi
* Pengeditan halaman web yang dikumpulkan
* Teks / HTML sunting fitur menyerupai Opera's Notes
Cara mirror situs
Instal scrapbook dan mulai ulang firefox
Restrict to Drirectory
/Domain
dari FilterTunggu hingga mirroring selesai. Setelah mirroring Anda dapat mengakses situs web secara offline dari
ScrapBook
menu.sumber
:)
Berhati-hatilah dengan perintah di bawah ini karena itu banyak sekali Angka 1 setelah tanda 'l' memberitahukannya untuk mengambil semua halaman untuk tautan di situs yang sedalam 1 tingkat. Jika Anda ingin laba-laba mengubah ini lebih dalam menjadi 2 tetapi mungkin tidak pernah berakhir karena bisa terjebak dalam satu lingkaran.
Saya tidak yakin bagian mana dari situs yang ingin Anda pertahankan dan bagian mana yang tidak Anda pedulikan tetapi Anda mungkin harus membuat daftar putih dan / atau memasukkan daftar hitam bagian-bagian berbeda dari situs untuk mendapatkan hanya apa yang Anda inginkan dan untuk mencegah diri Anda dari mengunduh semua archive.org atau internet.
Gunakan
-D www.examle.com,www.another.example.com
untuk daftar putih hanya domain yang Anda inginkan atau gunakan--exclude-domains www.examle.com,www.another.example.com
untuk daftar hitam apa yang tidak Anda inginkan.sumber
web.archive.org
tuan rumah. Saya ingin mencerminkan segala sesuatu yangwget -np
akan dicerminkan setelah situs asli masih online.-l
tidak membantu banyak, karena harus ditingkatkan menjadi 3 atau 4, sehingga mengakibatkan naiknya hirarki situs web terlalu banyak.Format URL untuk Internet Archive termasuk tanggal dan waktu situs diarsipkan. Untuk menghemat aset ruang yang belum berubah ditautkan kembali ke versi situs sebelumnya.
Misalnya dalam url ini http://web.archive.org/web/20000229123340/http://www.yahoo.com/ tanggal situs dirayapi adalah 29 Februari 2000 pada 12:33 dan 40 detik.
Jadi untuk mendapatkan Anda semua
http://web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice/
perlu mulai dari itu tetapi juga ambil semua aset yang ditautkan darihttp://web.archive.org/web/*/http://cst-www.nrl.navy.mil/lattice/
.sumber
Sudah ada alat yang melakukan itu dengan lebih baik:
Untuk mendapatkannya, Anda harus menginstal ruby. Lalu:
sumber