Ligne de commande

La référence complète de node src/cli.mjs - chaque option avec sa valeur par défaut, les sorties (NDJSON, CSV, rapport HTML), comparaison, segments, reprise, sitemap et extraction.

Usage

node src/cli.mjs <url> [options]
node src/cli.mjs --list urls.txt [options]

La CLI affiche le score et les problèmes dans votre langue, enregistre le crawl en NDJSON gzip (que l’interface ouvre avec Importer ou depuis l’historique), et avec --csv exporte pages.csv et issues.csv, avec --report écrit un rapport d’audit HTML personnalisé à imprimer en PDF. JSON, CSV et rapport sont chacun écrits en flux et indépendamment : l’échec de l’un ne bloque pas les autres, et le code de sortie est 1 si l’un a échoué.

Exemples

node src/cli.mjs https://www.example.com --max 2000 --csv --report --lang fr
node src/cli.mjs https://www.example.com --render --ua googlebotMobile --report --client "ACME" --author "Votre nom"
node src/cli.mjs --list urls.txt --lang de --csv
node src/cli.mjs --sitemap https://www.example.com/sitemap.xml --extract "prix=.price" --extract "sku=xpath://meta[@itemprop='sku']/@content" --csv
node src/cli.mjs https://www.example.com --report --compare crawls/precedent.jsonl.gz
node src/cli.mjs --resume crawls/.en-cours/www.example.com_2026-10-21T09-00-00.ndjson --csv
node src/cli.mjs https://www.example.com --max 20000 --segments segments.json --csv --report
node src/cli.mjs https://www.example.com --ga4-key ga4-key.json --ga4-property 123456789 --csv
node src/cli.mjs https://staging.example.com --auth user:pass --rate 2 --robots report --path-limit "/blog/=200" --extract "prix=.price" --remove-params "utm_*,gclid"
node src/cli.mjs --help

Options

Générées depuis node src/cli.mjs --help dans le dépôt (3.21.0) ; les valeurs par défaut viennent du code.

OptionDescriptionPar défaut
--max NNombre maximal d’URL500
--depth NProfondeur maximale20
--concurrency NRequêtes simultanées5
--delay MSDélai entre deux requêtes par worker, en ms0
--ua NAMEAgent utilisateur : arachnide | googlebot | googlebotMobile | chromearachnide
--renderRendu JavaScript avec Chrome / Edge (navigateur installé)
--list FILEMode liste : ne crawler que les URL d’un fichier texte (une par ligne)
--externalVérifier les liens externes
--imagesVérifier le poids et le statut des images
--rate NURL par seconde au maximum (plafond global)
--robots MODErespect | report (ignorer mais signaler) | ignorerespect
--custom-robots FUtiliser ce fichier robots.txt à la place de celui du site
--per-depth NURL maximum par niveau de profondeur
--folder-depth NProfondeur de dossier maximale
--max-params NNombre maximal de paramètres d’URL
--max-redirects NRedirections suivies au maximum10
--path-limit P=NLimite par chemin d’URL, ex. "/blog/=200" (répétable)
--remove-params LSupprimer des paramètres d’URL, ex. "utm_*,gclid"
--auth USER:PASSAuthentification HTTP (sites de préproduction)
--header "K: V"En-tête HTTP personnalisé (répétable)
--extract N=SELExtraction personnalisée (répétable) : N=SEL (CSS, texte), N=/regex/, N=xpath:EXPR, N=attr:href:SEL, N=html:SEL, N=count:SEL ; une colonne par règle dans pages.csv
--sitemap URLMode liste depuis un sitemap ou un index de sitemaps : crawler exactement les URL listées
--keep-paramsGarder les paramètres d’URL tels quels (par défaut : triés, paramètres de suivi utm_*/gclid/fbclid… supprimés)
--robots-unavailable allow|disallowrobots.txt en 5xx ou injoignable : tout interdire (RFC 9309, par défaut) ou tout autoriserdisallow
--psi NPageSpeed Insights + Core Web Vitals (CrUX) pour les N pages les plus importantes
--psi-key KEYClé API Google (ou variable ARACHNIDE_PSI_KEY) · --psi-strategy mobile|desktop
--gsc-key FILESearch Console : fichier de clé JSON du compte de service
--gsc-property PPropriété Search Console (sc-domain:example.com), détectée automatiquement si omise
--gsc-days NPériode Search Console en jours90
--gsc-csv FILEImporter un export CSV « Pages » de Search Console à la place de l’API
--ga4-key FILEGoogle Analytics 4 : fichier de clé JSON du compte de service (celui de Search Console fonctionne s’il a accès)
--ga4-property IDID de propriété GA4 (123456789), détecté depuis le domaine si omis
--ga4-days NPériode GA4 en jours90
--ga4-csv FILEImporter un export CSV GA4 « Pages et écrans » (ou « Page de destination ») à la place de l’API
--alert-email A,BEnvoyer une alerte par e-mail si le crawl s’est dégradé par rapport au précédent (pour cron)
--alert-score-drop NSeuil d’alerte en points de score5
--ignore-robotsIgnorer le robots.txt (équivaut à --robots ignore)
--subdomainsCrawler aussi les sous-domaines
--no-sitemapNe pas lire les sitemaps XML
--include REGEXNe crawler que les URL correspondant à la regex (répétable : une regex par option)
--exclude REGEXIgnorer les URL correspondant à la regex (répétable)
--stay-in-folderNe pas sortir du dossier de l’URL de départ (https://x.com/blog/ → /blog/… seulement)
--search TEXTRecherche personnalisée dans le code source (/regex/ accepté)
--segments FILESegments (JSON exporté depuis l’application, ou [{ "name", "match", "rules": [{ "field", "op", "value" }] }]) : score, erreurs et moyennes par section, colonne segment dans le CSV, section dans le rapport
--segment-foldersUn segment par répertoire de premier niveau (automatique)
--segment IDRapport et CSV sur ce segment uniquement (ex. --segment blog)
--lang CODEen | fr | de | es | it | pt (libellés, CSV, rapport)
--csvExporter aussi pages.csv et issues.csv
--reportGénérer aussi un rapport d’audit HTML professionnel (à imprimer en PDF) · --report-title, --client, --author, --company, --contact, --website, --color "#5b8c1e"
--compare FILECrawl précédent pour montrer l’évolution dans le rapport
--out DIRDossier de sortie./crawls
--resume FILEReprendre un crawl interrompu depuis son journal (<out>/.en-cours/*.ndjson)
--no-journalNe pas écrire le journal de reprise pendant le crawl

Règles d’extraction

--extract NOM=RÈGLE, répétable, une colonne par règle dans pages.csv :

RègleSignification
prix=.priceSélecteur CSS, contenu texte
auteur=attr:content:meta[name=author]Sélecteur CSS, valeur d’attribut
menu=html:nav.mainSélecteur CSS, HTML interne
liens=count:a[href]Sélecteur CSS, nombre d’occurrences
sku=xpath://meta[@itemprop='sku']/@contentXPath (Chrome en mode rendu, jsdom sinon)
tel=/\+34 \d{3} \d{3} \d{3}/Expression régulière (délai de 2 secondes par page)

Sorties

Les fichiers sont écrits dans --out (par défaut ./crawls), nommés <hôte>_<date> :

  • <hôte>_<date>.jsonl.gz : le crawl complet (NDJSON, un objet JSON par ligne, gzip) ;
  • <hôte>_<date>_pages.csv et _issues.csv avec --csv (séparateur point-virgule, UTF-8 avec BOM, une colonne par extraction, une colonne Segment quand des segments sont définis) ;
  • <hôte>_<date>_report_<langue>.html avec --report ;
  • crawls/.en-cours/<hôte>_<date>.ndjson : le journal de reprise pendant le crawl (conservé après Ctrl+C, supprimé à la fin).

Appuyez sur Ctrl+C pour arrêter proprement un crawl ; la CLI affiche alors la commande --resume pour le reprendre plus tard.

Cron et alertes

--alert-email vous@example.com --alert-score-drop 5 compare le crawl au crawl précédent du même hôte dans le dossier de sortie et ne vous écrit que si quelque chose s’est dégradé (réglages SMTP de l’application, ou ARACHNIDE_SMTP_URL). Voir Données Google, crawls planifiés et alertes.

Autres commandes

CommandeRôle
npm startL’interface web sur http://localhost:4000 (PORT et HOST pour changer ; ARACHNIDE_NO_SCHEDULER=1 désactive les crawls planifiés)
npm run mcpLe serveur MCP en stdio (aussi arachnide-mcp comme binaire)
npm run schedulerLes crawls planifiés sans l’interface
npm run bench -- --pages 200000Le benchmark sur site synthétique
npm testLa suite de tests (Node 18, 20 et 22)
Version 3.21.0 Les tables de référence et le journal des versions sont générés depuis le dépôt d’Arachnide (commit f287355). Modifier cette page sur GitHub