Un script bash pour arder un site, suivre les liens et récupérer les URL (avec filtrage intégré) dans un fichier texte généré.
Téléchargez le script et enregistrez sur l'emplacement souhaité sur votre machine.
Vous aurez besoin wget installé sur votre machine.
Pour vérifier s'il est déjà installé, essayez d'exécuter la commande wget par elle-même.
Si vous êtes sur un Mac ou en cours d'exécution Linux, il est probable que vous ayez déjà installé WGET; Cependant, si la commande wget ne fonctionne pas, elle peut ne pas être correctement ajoutée à votre variable de chemin.
Si vous exécutez des fenêtres:
Téléchargez le dernier binaire wget pour Windows à partir de https://eternallybored.org/misc/wget/
Le téléchargement est disponible sous forme de zip avec documentation, ou tout simplement comme EXE. Je recommanderais juste l'Exe.
Si vous avez téléchargé le zip, extraire tous (si les fenêtres intégrées à la zone zip donnent une erreur, utilisez 7-zip). De plus, si vous avez téléchargé la version 64 bits, renommez le fichier wget64.exe sur wget.exe
Déplacer wget.exe vers C:WindowsSystem32
Assurez-vous que la version de grep sur votre ordinateur prend en charge -E, --extended-regexp . Pour vérifier le soutien, exécutez grep --help et recherchez le drapeau. Pour vérifier la version installée, exécutez grep -V .
Ouvrez Git bash, terminal, etc. et définissez les autorisations d'exécution pour le script fetchurls.sh :
chmod +x /path/to/script/fetchurls.shEntrez ce qui suit pour exécuter le script:
./fetchurls.sh [OPTIONS]...Alternativement, vous pouvez exécuter avec l'une ou l'autre des éléments suivants:
sh ./fetchurls.sh [OPTIONS]...
# -- OR -- #
bash ./fetchurls.sh [OPTIONS]...Si vous ne transmettez aucune option, le script s'exécutera en mode interactif.
Si l'URL du domaine nécessite une authentification, vous devez passer le nom d'utilisateur et le mot de passe sous forme de drapeaux; Vous n'êtes pas invité à ces valeurs en mode interactif.
Vous pouvez transmettre des options (en tant que drapeaux) directement au script ou ne rien transmettre pour exécuter le script en mode interactif.
-d , --domainhttps://example.comL'URL du domaine entièrement qualifiée (avec protocole) que vous aimeriez ramper.
Assurez-vous de saisir le protocole correct (par exemple https ) et le sous-domaine pour l'URL ou le fichier généré peut être vide ou incomplet. Le script tentera automatiquement de suivre la première redirection HTTP, si elle est trouvée. Par exemple, si vous entrez le protocole incorrect ( http://... ) pour https://www.adamdehaven.com , le script suivra automatiquement la redirection et récupérera toutes les URL pour le protocole HTTPS correct.
Les URL du domaine seront araignées avec succès tant que l'URL cible (ou la première redirection) renvoie un statut de HTTP 200 OK .
-l , --location~/Desktop/c/Users/username/DesktopL'emplacement (répertoire) où vous souhaitez enregistrer les résultats générés.
Si le répertoire n'existe pas à l'emplacement spécifié, tant que le reste du chemin est valide, le nouveau répertoire sera automatiquement créé.
-f , --filenamedomain-topleveldomainexample-comLe nom souhaité du fichier généré, sans espaces ni extension de fichier.
-e , --exclude"css|js|map"Liste dirigée par des tuyaux d'extensions de fichiers pour exclure des résultats.
Pour empêcher l'exclusion de fichiers correspondant à la liste par défaut des extensions de fichiers, passez simplement une chaîne vide ""
-s , --sleep02Le nombre de secondes à attendre entre les récupérations.
-u , --usernamemarty_mcflySi l'URL du domaine nécessite une authentification, le nom d'utilisateur passe à la commande wget.
Si le nom d'utilisateur contient des caractères d'espace, vous devez passer à l'intérieur des citations. Cette valeur ne peut être définie qu'avec un drapeau; Il n'y a pas d'invite en mode interactif.
-p , --passwordthats_heavySi l'URL du domaine nécessite une authentification, le mot de passe passe à la commande wget.
Si le mot de passe contient des caractères d'espace, vous devez passer à l'intérieur des citations. Cette valeur ne peut être définie qu'avec un drapeau; Il n'y a pas d'invite en mode interactif.
-n , --non-interactivePermet au script de s'exécuter avec succès dans un shell non interactif.
Le script utilisera les paramètres par défaut --location et --filename à moins que les indicateurs respectifs ne soient définis explicitement.
-i , --ignore-robotsIgnore Robots.txt pour le domaine.
-w , --wgetAfficher les instructions d'installation de WGET. Les instructions d'installation peuvent varier en fonction de la configuration de votre ordinateur.
-v , -V , --versionAfficher les informations de version.
-t , --troubleshootingLes sorties ont reçu des indicateurs d'option avec leurs valeurs associées au moment de l'exécution pour le dépannage.
-h , -? , --helpAffichez le contenu d'aide.
Si vous ne passez pas l'indicateur - domaine, le script s'exécutera en mode interactif et vous serez invité aux options non définies.
Tout d'abord, vous serez invité à saisir l'URL complète (y compris le protocole HTTPS / HTTP) du site que vous souhaitez ramper:
Fetch a list of unique URLs for a domain.
Enter the full domain URL ( http://example.com )
Domain URL:Vous serez ensuite invité à saisir l'emplacement (répertoire) de l'endroit où vous souhaitez que les résultats générés soient enregistrés (par défaut sur le bureau sur Windows):
Save file to directory
Directory: /c/Users/username/DesktopEnsuite, vous serez invité à modifier / accepter le nom du fichier généré (appuyez simplement sur Entrée pour accepter le nom de fichier par défaut):
Save file as
Filename (no file extension, and no spaces): example-comEnfin, vous serez invité à modifier / accepter la liste par défaut des extensions de fichiers exclues (appuyez sur Entrée pour accepter la liste par défaut):
Exclude files with matching extensions
Excluded extensions: bmp | css | doc | docx | gif | jpeg | jpg | JPG | js | map | pdf | PDF | png | ppt | pptx | svg | ts | txt | xls | xlsx | xmlLe script rampera le site et compilera une liste d'URL valides dans un nouveau fichier texte. Une fois terminé, le script affichera un message et l'emplacement du fichier généré:
Fetching URLs for example.com
Finished with 1 result !
File Location:
/c/Users/username/Desktop/example-com.txtSi un fichier du même nom existe déjà à l'emplacement (par exemple, si vous exécutez auparavant le script pour la même URL), le fichier d'origine sera écrasé .
Le script, par défaut, filtre de nombreuses extensions de fichiers qui ne sont généralement pas nécessaires.
La liste des extensions de fichiers peut être transmise via l'indicateur --exclude ou fourni via le mode interactif.
.bmp.css.doc.docx.gif.jpeg.jpg.JPG.js.map.pdf.PDF.png.ppt.pptx.svg.ts.txt.xls.xlsx.xmlDe plus, des fichiers et répertoires de site spécifiques (y compris WordPress) sont également ignorés.
/wp-content/uploads//feed//category//tag//page//widgets.php//wp-json/xmlrpc Le script doit filtrer les types de fichiers et les répertoires les plus indésirables; Cependant, vous pouvez modifier les expressions régulières qui filtrent certaines pages, répertoires et types de fichiers en modifiant la fonction fetchUrlsForDomain() dans le fichier fetchurls.sh .
AVERTISSEMENT : Si vous n'êtes pas familier avec Grep ou des expressions régulières, vous pouvez facilement casser le script.