Description
Audit link su pagina HTML — classifica ogni link in internal (same-origin) / external (cross-domain) / anchor (#frag) / mailto: / tel: / javascript: / data: con dedup canonical URL. Opzionalmente esegue HEAD probe parallelo per identificare link rotti (status >= 400 / DNS fail / timeout / TLS error) con severity classification (404 critical / 5xx warning / 3xx info). Differenza con i sibling: action_link_audit = inventory + probe link su pagina (HTML in → links classified + broken list). Per scoring SEO complessivo che incorpora link health usa action_seo_audit (link ratio nei criteri). Per redirect chain audit del singolo link (multi-hop) usa action_redirect_chain. Per estrazione plain text dei link senza probe usa action_html_select. Probing intelligente: HEAD-first (zero bytes downloaded), fallback automatico a GET no-body se server ritorna 405 Method Not Allowed (alcuni vendor mal- configurati). Concorrenza bounded (default 5, max 20) per non DoS-are il proprio server target durante audit. Cap link probati 200 default (config fino a 1000) — un sito con 10k link in 1 pagina e\` un anti-pattern + audit preferisce campionare random invece di tutto. Classification SEO-relevant: rel="nofollow" / rel="sponsored" / rel="ugc" tag separately (Google li tratta diverso per link juice). target="_blank" detect (UX warning: senza rel="noopener" e\` vulnerabile a reverse tabnabbing). Anchor link with same-page target detection. mailto/tel come "non-web" skip probe ma counted separately. Output: `{ summary: { total, internal, external, anchor, mailto, tel, nofollow, broken }, links: [{ href, text, type, rel, target, status, redirected, latencyMs }], broken: [{ href, status, reason }], stats: { probedCount, probedDurationMs } }`. broken list pronta per email digest settimanale a content manager. Use case Cappella-Sistina-grade: (1) **audit settimanale broken links** su sito aziendale 100 pagine — cron loop fetch + link_audit con probe → aggregate broken list → email content team con responsabilita\` per fix; (2) **post-migrazione check** — confronto link inventory pre vs post migration, alert su link che hanno cambiato URL senza redirect; (3) **monitor affiliate/sponsored link** — il partner advertiser cambia URL senza notifica, detect 404 → revenue impact; (4) **rel="noopener" security audit** — target="_blank" senza noopener = XS-Leaks vulnerability, fix automatico in CMS via webhook. Safety budget: SSRF guard, concorrenza max 20, timeout 8s per probe, hard cap 200 link probati (config 1000), audit log con linksTotal + broken count per detect site degradation trends.
