J'essaie d'utiliser wget pour créer un miroir local d'un site Web. Mais je constate que je ne reçois pas toutes les pages de liens.
Voici le site
http://web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice/
Je ne veux pas toutes les pages qui commencent web.archive.org
, mais je veux toutes les pages qui commencent http://web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice/
.
Lorsque j'utilise wget -r
, dans ma structure de fichiers, je trouve
web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice/index.html,
mais je n'ai pas tous les fichiers qui font partie de cette base de données, par exemple
web.archive.org/web/20110808041151/http://cst-www.nrl.navy.mil/lattice/struk/d0c.html.
Peut-être que httrack ferait mieux, mais en ce moment, c'est trop.
Alors, par quel moyen est-il possible de récupérer une copie locale d'un site Web archivé à partir de l' Internet Archive Wayback Machine?
linux
wget
httrack
webarchive
user695322
la source
la source
20110722080716
instantané, donc l'-np
option de wget n'aidera pas.Réponses:
Bien qu'elles soient utiles, les réponses antérieures ne parviennent pas à résoudre de manière concise, fiable et répétable la question sous-jacente. Dans cet article, nous détaillons brièvement les difficultés de chacun et proposons ensuite une
httrack
solution modeste .Contexte
Avant d'en arriver là, cependant, réfléchissez à la réponse bien écrite de mpy . Dans h [is | er] article malheureusement négligé, mpy documente rigoureusement le schéma d'archivage obscur (et honnêtement obscur) de Wayback Machine.
Sans surprise, ce n'est pas joli. Plutôt que d'archiver sainement des sites dans un seul répertoire, The Wayback Machine répartit de manière éphémère un seul site sur deux ou plusieurs répertoires frères identifiés numériquement. Dire que cela complique la mise en miroir serait un euphémisme substantiel.
Comprendre les horribles pièges présentés par ce schéma est essentiel pour comprendre l'insuffisance des solutions antérieures. Continuons, d'accord?
Solution antérieure 1: wget
La question connexe de StackOverflow "Récupérer l'ancien site Web hors waybackmachine" est probablement le pire contrevenant à cet égard, recommandant la
wget
mise en miroir Wayback. Naturellement, cette recommandation est fondamentalement fausse.En l'absence de réécriture d'URL externes complexes (par exemple,
Privoxy
),wget
ne peut pas être utilisé pour mettre en miroir de manière fiable des sites archivés Wayback. En tant que détails mpy sous "Problème 2 + Solution", quel que soit l'outil de mise en miroir que vous choisissez, vous devez autoriser le téléchargement non transitoire uniquement des URL appartenant au site cible. Par défaut, la plupart des outils de mise en miroir téléchargent de manière transitoire toutes les URL appartenant à la fois au site cible et aux sites liés à partir de ce site - ce qui, dans le pire des cas, signifie «Internet tout entier».Un exemple concret s'impose. Lors de la mise en miroir de l'exemple de domaine
kearescue.com
, votre outil de mise en miroir doit :https://web.archive.org/web/*/http://kearescue.com
. Ce sont des actifs fournis par le site cible (par exemple,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
).Le fait de ne pas exclure de telles URL entraîne généralement la totalité ou la majeure partie de l'Internet archivé au moment de l'archivage du site, en particulier pour les sites intégrant des ressources hébergées en externe (par exemple, des vidéos YouTube).
Ce serait mauvais. Bien
wget
qu'il fournisse une--exclude-directories
option de ligne de commande acceptant un ou plusieurs modèles correspondant aux URL à exclure, il ne s'agit pas d' expressions régulières à usage général; ce sont des globes simplistes dont la*
syntaxe correspond à zéro ou plusieurs caractères à l' exclusion/
. Étant donné que les URL à exclure contiennent arbitrairement de nombreux/
caractères,wget
elles ne peuvent pas être utilisées pour exclure ces URL et ne peuvent donc pas être utilisées pour mettre en miroir des sites archivés par Wayback. Période. Fin d'une histoire malheureuse.Ce problème est dans le domaine public depuis au moins 2009. Il doit encore être résolu. Prochain!
Solution antérieure 2: Scrapbook
Prinz recommande
ScrapBook
, un plugin Firefox. Un plugin Firefox.C'était probablement tout ce que vous deviez savoir. Alors que
ScrapBook
de »Filter by String...
la fonctionnalité ne adresse mentionnée ci - dessus le « problème 2 + Solution, » il ne pas aborder la suite « Problème 3 + Solution » - à savoir le problème des doublons étrangers.On peut se demander si,
ScrapBook
même de manière adéquate, il résout l'ancien problème. Comme l' admet MPY :Les solutions peu fiables et trop simplistes sont des non-solutions. Prochain!
Solution antérieure 3: wget + Privoxy
mpy fournit alors une solution robuste exploitant à la fois
wget
etPrivoxy
. Bien qu'ilwget
soit raisonnablement simple à configurer, ilPrivoxy
est tout sauf raisonnable. Ou simple.En raison de l 'obstacle technique impondérable d' installer, de configurer et d 'utiliser correctement
Privoxy
, nous n'avons pas encore confirmé la solution de mpy . Il devrait fonctionner de manière évolutive et robuste. Compte tenu des barrières à l'entrée, cette solution est probablement plus appropriée à l'automatisation à grande échelle que le webmaster moyen tentant de récupérer des sites de petite à moyenne échelle.Est-ce que
wget
+Privoxy
vaut le détour? Absolument. Mais la plupart des superutilisateurs pourraient être mieux desservis par des solutions plus simples et plus facilement applicables.Nouvelle solution: httrack
Enter
httrack
, un utilitaire de ligne de commande implémentant un surensemble dewget
fonctionnalités de mise en miroir de.httrack
prend en charge l'exclusion d'URL basée sur les modèles et la restructuration simplifiée du site. Le premier résout le "Problème 2 + Solution" de mpy ; ce dernier, «Problème 3 + Solution».Dans l'exemple abstrait ci-dessous, remplacez:
${wayback_url}
par l'URL du répertoire de niveau supérieur archivant l'intégralité de votre site cible (par exemple,'https://web.archive.org/web/20140517175612/http://kearescue.com'
).${domain_name}
par le même nom de domaine présent en${wayback_url}
excluant le préfixehttp://
(par exemple,'kearescue.com'
).Et c'est parti. Installez
httrack
, ouvrez une fenêtre de terminal,cd
dans le répertoire local dans lequel vous souhaitez que votre site soit téléchargé, et exécutez la commande suivante:Une fois terminé, le répertoire actuel doit contenir un sous-répertoire pour chaque type de fichier mis en miroir à partir de cette URL. Cela comprend généralement au moins:
css
, contenant toutes les feuilles de style CSS en miroir.html
, contenant toutes les pages HTML en miroir.js
, contenant tout le JavaScript en miroir.ico
, contenant un favicon en miroir.Comme
httrack
tout le contenu téléchargé est réécrit en interne pour refléter cette structure, votre site devrait maintenant être consultable tel quel sans modification. Si vous avez interrompu prématurément la commande ci-dessus et souhaitez continuer le téléchargement, ajoutez l'--continue
option à la même commande exacte et réessayez.C'est ça. Aucune contorsion externe, réécriture d'URL sujette aux erreurs ou serveurs proxy basés sur des règles requis.
Profitez-en, chers super-utilisateurs.
la source
Malheureusement, aucune des réponses n'a pu résoudre le problème de la création d'un miroir complet à partir d'un site Web archivé (sans dupliquer chaque fichier des dizaines de fois). J'ai donc piraté ensemble une autre approche. Hacké est le mot important car ma solution n'est ni une solution générale ni très simple (lire: copier-coller). J'ai utilisé le serveur proxy Privoxy pour réécrire les fichiers à la volée lors de la mise en miroir avec wget.
Mais d'abord, qu'est-ce qui est si difficile à mettre en miroir depuis la Wayback Machine ?
Problème 1 + Solution
La barre d'outils Wayback est pratique pour une utilisation interactive, mais peut interférer avec wget. Alors débarrassez-vous-en avec une règle de filtre privoxy
Problème 2 + Solution
Je voulais capturer l'ensemble du site, j'avais donc besoin d'une profondeur de récursion pas trop petite. Mais je ne veux pas que wget explore tout le serveur. Habituellement, vous utilisez l' option sans parent
-np
de wget à cette fin. Mais cela ne fonctionnera pas ici, car vous voulez obtenirmais aussi
(remarquez l'horodatage modifié dans les chemins). Omettre
-np
finira par ramper jusqu'à(...)http://cst-www.nrl.navy.mil
et enfin récupérer tout lenavi.mil
site. Je ne veux vraiment pas ça! Donc, ce filtre essaie d'émuler le-np
comportement avec la machine Wayback:Je vais le laisser comme un exercice pour creuser dans la syntaxe. Ce que fait ce filtre est le suivant: Il remplace toutes les URL Wayback comme
http://web.archive.org/web/20110801041529/http://www.nrl.navy.mil/
parhttp://some.local.server/404
tant qu'elles ne contiennent pashttp://cst-www.nrl.navy.mil/lattice/
.Vous devez vous ajuster
http://some.local.server/404
. Il s'agit d'envoyer une erreur 404 à wget. Privoxy peut probablement faire cela plus élégant. Cependant, le moyen le plus simple pour moi était simplement de réécrire le lien vers une page inexistante sur un serveur http local, donc je suis resté avec cela.Et, vous devez également ajuster les deux occurrences de
http://cst-www.nrl.navy.mil/lattice/
pour refléter le site que vous souhaitez mettre en miroir.Problème 3 + Solution
Et enfin, une version archivée d'une page peut créer un lien vers une page dans un autre instantané. Et cela pour encore un autre. Et ainsi de suite ... et vous vous retrouverez avec beaucoup d'instantanés de la même page - et wget n'arrivera jamais à terminer tant qu'il n'aura pas récupéré tous les instantanés. Je ne veux vraiment pas ça non plus! Ici, cela aide beaucoup, que la machine Wayback soit très intelligente. Vous pouvez demander un fichier
même s'il n'est pas inclus dans l'
20110801041529
instantané. Il vous redirige automatiquement vers la bonne:Donc, un autre filtre privoxy pour réécrire tous les instantanés sur le plus récent
En fait, chaque numéro à 14 chiffres inclus dans
/.../
est remplacé par20120713212803
(ajustez-le à l'instantané le plus récent de votre site souhaité). Cela peut être un problème s'il existe de tels numéros dans la structure du site qui ne proviennent pas de la machine Wayback. Pas parfait, mais bien pour le site Strukturtypen .La bonne chose à ce sujet est que wget ignore le nouvel emplacement vers lequel il est redirigé et enregistre le fichier - dans l'exemple ci-dessus - sous
web.archive.org/web/20110801041529/http://cst-www.nrl.navy.mil/lattice/struk/a_f.html
.Utilisation de wget pour mettre en miroir un site archivé
Donc, enfin, avec ces filtres privoxy (définis dans
user.filter
) activés dansuser.action
viavous pouvez utiliser wget comme d'habitude. N'oubliez pas de dire à wget d'utiliser le proxy:
J'ai utilisé ces options, mais cela
-m
devrait aussi fonctionner. Vous vous retrouverez avec les dossierscomme la machine Wayback sépare les images (
im_
), les feuilles de style (cs_
) etc. J'ai tout fusionné et utilisé de la magie sed pour remplacer les liens relatifs laids (../../../../20120713212803js_/http:/cst-www.nrl.navy.mil/lattice
) en conséquence. Mais ce n'est pas vraiment nécessaire.la source
wget
Normalement, lors du téléchargement d'une seule page HTML, tous les documents requis qui peuvent être nécessaires pour l'afficher correctement ne sont pas téléchargés. L'utilisation de -r avec -l peut aider, mais comme Wget ne fait généralement pas de distinction entre les documents externes et les documents en ligne, on se retrouve généralement avec des "documents feuilles" qui manquent de leurs exigences.
Par exemple, supposons que le document 1.html contient une balise "" faisant référence à 1.gif et une balise "" pointant vers le document externe 2.html. Disons que 2.html est similaire mais que son image est 2.gif et qu'il est lié à 3.html. Disons que cela continue jusqu'à un nombre arbitrairement élevé.
-m
--mirror
Activez les options adaptées à la mise en miroir. Cette option active la récursivité et l'horodatage, définit une profondeur de récursivité infinie et conserve les listes de répertoires FTP. Il est actuellement équivalent à -r -N -l inf --no-remove-listing.
Notez que Wget se comportera comme si -r avait été spécifié, mais seule cette page unique et ses éléments requis seront téléchargés. Les liens de cette page vers des documents externes ne seront pas suivis. En fait, pour télécharger une seule page et toutes ses exigences (même si elles existent sur des sites Web séparés), et s'assurer que le lot s'affiche correctement localement, cet auteur aime utiliser quelques options en plus de -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
sera votre meilleur costume pour vous. Mais je recommande un autre outil, unefirefox
extensionscrapbook
album
ScrapBook est une extension Firefox qui vous aide à enregistrer des pages Web et à gérer facilement les collections. Les principales caractéristiques sont la légèreté, la vitesse, la précision et la prise en charge multilingue. Les principales fonctionnalités sont:
* Enregistrer la page Web
* Enregistrer l'extrait de page Web
* Enregistrer le site Web
* Organiser la collection de la même manière que les signets
* Recherche en texte intégral et recherche de filtrage rapide de la collection
* Édition de la page Web collectée
* Texte / HTML fonction d'édition ressemblant aux notes d'Opera
Comment mettre en miroir un site
Installer un album et redémarrer Firefox
Restrict to Drirectory
/ àDomain
partir du filtreAttendez que la mise en miroir soit terminée. Après la mise en miroir, vous pouvez accéder au site Web hors ligne à partir du
ScrapBook
menu.la source
:)
Soyez prudent avec la commande ci-dessous car elle prend beaucoup. Le 1 après le «l» lui dit de saisir toutes les pages pour les liens sur le site qui ont 1 niveau de profondeur. Si vous voulez qu'il aille plus profondément, changez-le en 2, mais cela pourrait ne jamais se terminer car il pourrait être pris dans une boucle.
Je ne sais pas quelles parties du site vous souhaitez conserver et quelles parties ne vous intéressent pas, mais vous devriez probablement lister et / ou mettre sur liste noire les différentes parties du site pour obtenir uniquement ce que vous voulez et vous empêcher de télécharger tout archive.org ou Internet.
Utilisez
-D www.examle.com,www.another.example.com
pour mettre en liste blanche uniquement les domaines que vous voulez ou utilisez--exclude-domains www.examle.com,www.another.example.com
pour mettre sur liste noire ce que vous ne voulez pas.la source
web.archive.org
hôte. Je veux refléter tout cewget -np
qui se serait reflété une fois que le site d'origine était encore en ligne.-l
n'aide pas beaucoup non plus, car il doit être augmenté à 3 ou 4, ce qui entraîne trop de hiérarchisation du site Web.Le format des URL des archives Internet comprend la date et l'heure d'archivage du site. Pour économiser de l'espace, les ressources qui n'ont pas changé sont liées à une version précédente d'un site.
Par exemple, dans cette URL http://web.archive.org/web/20000229123340/http://www.yahoo.com/ la date à laquelle le site a été exploré était le 29 février 2000 à 12h33 et 40 secondes.
Donc, pour obtenir tout cela,
http://web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice/
vous devez commencer par cela, mais également récupérer tous les actifs liéshttp://web.archive.org/web/*/http://cst-www.nrl.navy.mil/lattice/
.la source
Il existe déjà un outil qui le fait mieux:
Pour l'obtenir, vous devez avoir installé ruby. Puis:
la source