Riga di comando

Il riferimento completo di node src/cli.mjs - ogni opzione con il suo valore predefinito, gli output (NDJSON, CSV, report HTML), confronto, segmenti, ripresa, sitemap ed estrazione.

Uso

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

La CLI mostra il punteggio e i problemi nella tua lingua, salva il crawl come NDJSON gzip (che l’interfaccia apre con Importa o dalla cronologia), e con --csv esporta pages.csv e issues.csv, con --report scrive un report di audit HTML con il tuo brand che puoi stampare in PDF. JSON, CSV e report vengono scritti ciascuno in streaming e in modo indipendente: un errore non blocca gli altri, e il codice di uscita è 1 se uno di essi è fallito.

Esempi

node src/cli.mjs https://www.example.com --max 2000 --csv --report --lang en
node src/cli.mjs https://www.example.com --render --ua googlebotMobile --report --client "ACME" --author "Your name"
node src/cli.mjs --list urls.txt --lang de --csv
node src/cli.mjs --sitemap https://www.example.com/sitemap.xml --extract "price=.price" --extract "sku=xpath://meta[@itemprop='sku']/@content" --csv
node src/cli.mjs https://www.example.com --report --compare crawls/previous.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 "price=.price" --remove-params "utm_*,gclid"
node src/cli.mjs --help

Opzioni

Generate da node src/cli.mjs --help nel repository (3.21.0); i valori predefiniti provengono dal codice.

OpzioneDescrizionePredefinito
--max NNumero massimo di URL500
--depth NProfondità massima20
--concurrency NRichieste simultanee5
--delay MSPausa tra due richieste per worker, in ms0
--ua NAMEUser agent: arachnide | googlebot | googlebotMobile | chromearachnide
--renderRendering JavaScript con Chrome / Edge (browser installato)
--list FILEModalità elenco: scansiona solo gli URL di un file di testo (uno per riga)
--externalVerifica i link esterni
--imagesVerifica il peso e lo stato delle immagini
--rate NURL al secondo al massimo (limite globale)
--robots MODErespect | report (ignora ma segnala) | ignorerespect
--custom-robots FUsa questo file robots.txt al posto di quello del sito
--per-depth NURL massimi per livello di profondità
--folder-depth NProfondità massima delle cartelle
--max-params NNumero massimo di parametri URL
--max-redirects NReindirizzamenti massimi da seguire10
--path-limit P=NLimite per percorso URL, es. "/blog/=200" (ripetibile)
--remove-params LRimuovi parametri URL, es. "utm_*,gclid"
--auth USER:PASSAutenticazione HTTP (siti di staging)
--header "K: V"Header HTTP personalizzato (ripetibile)
--extract N=SELEstrazione personalizzata (ripetibile): N=SEL (CSS, testo), N=/regex/, N=xpath:EXPR, N=attr:href:SEL, N=html:SEL, N=count:SEL; una colonna per regola in pages.csv
--sitemap URLModalità elenco da una sitemap o da un indice di sitemap: scansiona esattamente gli URL elencati
--keep-paramsMantieni i parametri URL così come sono (per impostazione predefinita: ordinati, parametri di tracciamento utm_*/gclid/fbclid… rimossi)
--robots-unavailable allow|disallowrobots.txt in 5xx o irraggiungibile: vieta tutto (RFC 9309, predefinito) o consenti tuttodisallow
--psi NPageSpeed Insights + Core Web Vitals (CrUX) per le N pagine più importanti
--psi-key KEYChiave API di Google (o variabile ARACHNIDE_PSI_KEY) · --psi-strategy mobile|desktop
--gsc-key FILESearch Console: file di chiave JSON dell’account di servizio
--gsc-property PProprietà Search Console (sc-domain:example.com), rilevata automaticamente se omessa
--gsc-days NPeriodo Search Console in giorni90
--gsc-csv FILEImporta un’esportazione CSV «Pagine» di Search Console al posto dell’API
--ga4-key FILEGoogle Analytics 4: file di chiave JSON dell’account di servizio (quello di Search Console funziona se ha accesso)
--ga4-property IDID della proprietà GA4 (123456789), rilevato dal dominio se omesso
--ga4-days NPeriodo GA4 in giorni90
--ga4-csv FILEImporta un’esportazione CSV GA4 «Pagine e schermate» (o «Pagina di destinazione») al posto dell’API
--alert-email A,BInvia un avviso via email se il crawl è peggiorato rispetto al precedente (per i job cron)
--alert-score-drop NSoglia di avviso in punti di punteggio5
--ignore-robotsIgnora il robots.txt (equivale a --robots ignore)
--subdomainsScansiona anche i sottodomini
--no-sitemapNon leggere le sitemap XML
--include REGEXScansiona solo gli URL che corrispondono alla regex (ripetibile: una regex per opzione)
--exclude REGEXIgnora gli URL che corrispondono alla regex (ripetibile)
--stay-in-folderNon uscire dalla cartella dell’URL di partenza (https://x.com/blog/ → solo /blog/…)
--search TEXTRicerca personalizzata nel codice sorgente (/regex/ accettata)
--segments FILESegmenti (JSON esportato dall’app, oppure [{ "name", "match", "rules": [{ "field", "op", "value" }] }]): punteggio, errori e medie per sezione del sito, colonna segmento nel CSV, sezione nel report
--segment-foldersUn segmento per directory di primo livello (automatico)
--segment IDReport e CSV solo su questo segmento (es. --segment blog)
--lang CODEen | fr | de | es | it | pt (etichette, CSV, report)
--csvEsporta anche pages.csv e issues.csv
--reportGenera anche un report di audit HTML professionale (da stampare in PDF) · --report-title, --client, --author, --company, --contact, --website, --color "#5b8c1e"
--compare FILECrawl precedente per mostrare l’evoluzione nel report
--out DIRCartella di output./crawls
--resume FILERiprendi un crawl interrotto dal suo diario (<out>/.en-cours/*.ndjson)
--no-journalNon scrivere il diario di ripresa durante il crawl

Regole di estrazione

--extract NAME=RULE, ripetibile, una colonna per regola in pages.csv:

RegolaSignificato
price=.priceSelettore CSS, contenuto testuale
author=attr:content:meta[name=author]Selettore CSS, valore di un attributo
menu=html:nav.mainSelettore CSS, HTML interno
links=count:a[href]Selettore CSS, numero di corrispondenze
sku=xpath://meta[@itemprop='sku']/@contentXPath (Chrome in modalità rendering, jsdom altrimenti)
phone=/\+34 \d{3} \d{3} \d{3}/Espressione regolare (timeout di 2 secondi per pagina)

Output

I file vengono scritti in --out (predefinito ./crawls), con nome <host>_<date>:

  • <host>_<date>.jsonl.gz: il crawl completo (NDJSON, un oggetto JSON per riga, gzip);
  • <host>_<date>_pages.csv e _issues.csv con --csv (separatore punto e virgola, UTF-8 con BOM, una colonna per estrazione, una colonna Segmento quando sono definiti dei segmenti);
  • <host>_<date>_report_<lang>.html con --report;
  • crawls/.en-cours/<host>_<date>.ndjson: il diario di ripresa mentre un crawl è in esecuzione (conservato dopo Ctrl+C, eliminato al completamento).

Premi Ctrl+C per interrompere un crawl in modo pulito; la CLI mostra allora il comando --resume per riprenderlo più tardi.

Cron e avvisi

--alert-email you@example.com --alert-score-drop 5 confronta il crawl con il crawl precedente dello stesso host nella cartella di output e ti scrive un’email solo se qualcosa è peggiorato (impostazioni SMTP dall’app, oppure ARACHNIDE_SMTP_URL). Vedi Dati Google, crawl pianificati e avvisi.

Altri comandi

ComandoScopo
npm startL’interfaccia web su http://localhost:4000 (PORT e HOST per cambiarli; ARACHNIDE_NO_SCHEDULER=1 disattiva i crawl pianificati)
npm run mcpIl server MCP via stdio (anche arachnide-mcp come bin)
npm run schedulerI crawl pianificati senza l’interfaccia
npm run bench -- --pages 200000Il benchmark sul sito sintetico
npm testLa suite di test (Node 18, 20 e 22)
Versione 3.21.0 Le tabelle di riferimento e il changelog sono generati dal repository di Arachnide (commit f287355). Modifica questa pagina su GitHub