Site Scanner Docs
Praktische documentatie voor Site Scanner
Deze handleiding helpt je van eerste scan naar een stabiele workflow met scopes, resultaten, regels en performance-instellingen. Eerst het dagelijkse gebruik, daarna pas de technische diepgang.
Belangrijk: open Site Scanner via de browser-extensie. Open je de interface los zonder extensiecontext, dan kan de UI wel laden maar werken scanacties niet.
Start hier
De snelste route naar bruikbare output:
- Open Site Scanner via de extensie.
- Ga naar Scan.
- Vul een URL in en kies eerst domain als scope.
- Laat Scope Filter bij je eerste run leeg.
- Klik op Scan en volg done/total en eventuele failed URLs.
- Open daarna de tab Issues, kies een rule en bekijk 1 of 2 representatieve URL-details.
- Pas pas daarna settings of rules aan.
Wat Site Scanner is
Site Scanner is een browser-gedreven website analyse-tool. Je gebruikt hem om één URL of een hele site-scope te scannen, gegevens van echte pagina’s te verzamelen en daarop regels uit te voeren voor technische kwaliteit, toegankelijkheid, consistentie en SEO-gerelateerde patronen.
Wat je krijgt
- scans op een start-URL of scope
- extractor-data zoals HTTP, headers, URL, links en assets
- regeluitkomsten per pagina
- vergelijking met andere scans via
others - resultaten die bruikbaar zijn voor triage
Belangrijke begrippen
- Scan Run: één gescande URL
- Scan Session: meerdere runs binnen dezelfde context
- Scope: welke ontdekte URLs mee mogen
- Scope Filter: extra boolean logica op kandidaten
- Rule Category: bundeling van gedeelde definitions, columns en rules
De interface in één oogopslag
Bovenin zie je de header met apptitel en acties zoals Logout. In extensiecontext kunnen ook Reload UI en Reload Extension zichtbaar zijn. Voor dagelijks werk gebruik je vooral vier tabs.
Scan
Je dagelijkse werkplek voor scans, voortgang, failures, samenvattingen, URL-rows en detailmodals.
Rules
Voor categories beheren, regels schrijven, parseren, vergelijken met defaults en opslaan.
Settings
Voor crawl- en performancegedrag, recalculation mode, headless mode, taal en custom translations.
Develop
Voor snelle single-URL inspectie en het debuggen van rule-aannames op ruwe extractor-data.
Scannen, scopes en scope filters
Je scan start altijd met drie keuzes: URL, Scope en eventueel Scope Filter. Die drie bepalen samen hoeveel URLs ontdekt en gescand worden.
- url: alleen de genormaliseerde start-URL, zonder crawl
- domain: alleen dezelfde hostname
- domainAndSubdomains: hostname plus subdomeinen
- any: alle hosts toegestaan, dus alleen verstandig met een filter
Gebruik een scope filter om discovered URLs verder te beperken. Dat filter werkt met dezelfde boolean expressiestijl als rule conditions.
regex("^https?://[^/]+/blog/", link.url)
not regex("/wp-admin|/wp-login", link.url)
Werk bij grotere sites in passes: eerst kort ontdekken, dan filter aanscherpen en pas daarna dieper scannen. Dat is sneller, stabieler en beter te debuggen.
- Maximum crawl depth: 0 t/m 30
- Thread count: 1 t/m 12
- Veiligheidslimiet: 5000 opgenomen URLs per scoped scan
Resultaten lezen zonder te verdrinken in ruis
Na een scan zie je in de Scan-tab twee hoofdpanelen. Links staat de Rule Summary, rechts de URL Rows. Gebruik die samen, niet los van elkaar.
Links: Rule Summary
- rule id
- categorie
- severity
- issue count
Kies hier eerst een rule of de tab Issues om de ruis snel omlaag te brengen.
Rechts: URL Rows
- URL
- triggered rules
- scantijd
- dynamische rule columns
Gebruik zoek-, sorteer- en kolomfilters om patronen per template, sectie of probleemtype terug te vinden.
Klik altijd door naar een URL-detailmodal als een rule belangrijk lijkt. Daar zie je metadata, triggered rules, kolommen en extractor-weergaven zoals HTTP, headers, URL-parts, assets en link graph.
- Open Issues.
- Sorteer op hoogste issue count.
- Kies één rule.
- Open 2 of 3 representatieve URLs.
- Zoek terugkerende patronen in columns en selectors.
Instellingen en performance
Voor stabiele scans zijn settings minstens zo belangrijk als rules. Begin met conservatieve waarden en schaal pas op als je machine en site dat aankunnen.
- Render Delay: extra wachttijd na laden, handig voor JS-zware pagina’s
- Max Wait: maximale wachttijd per scanrequest
- Number of Scan Threads: parallelle URL-scans in scoped mode
- Maximum Crawl Depth: hoe diep de crawler mag gaan
- Others Update Mode: realtime of na afloop herrekenen
- Headless Scan Mode: minder focus-stealing tijdens werk
Aanbevolen startsituatie
- Kleine sites: threads 4 tot 8, depth 4 tot 8
- Middelgrote sites: threads 4 tot 6, depth 6 tot 10, filter sterk aanbevolen
- Grote sites: threads 2 tot 4, depth stapsgewijs ophogen, filter in de praktijk verplicht
Voelen resultaten traag of instabiel, verlaag dan eerst threads en depth, en maak je scope filter scherper. Kies afterScan wanneer een voorspelbare afronding belangrijker is dan tussentijdse updates.
Werken met rules
Rules zijn georganiseerd in categorieën. Elke categorie heeft drie bewerkbare delen: gedeelde definitions, gedeelde columns en de rules zelf. De Base-categorie is speciaal: die staat altijd aan en is bedoeld voor gedeelde logica.
De veiligste workflow is altijd: parse eerst, save daarna. Parseren valideert syntax en types in memory; opslaan maakt de wijziging pas persistent.
- Maak een nieuwe category of werk in een aparte draft-category.
- Voeg één kleine rule toe.
- Parse en los diagnostics op.
- Save de category.
- Run een kleine scoped scan.
- Controleer of columns en messages echt bruikbaar zijn voor triage.
Basisvorm van een rule
id: missing-h1
severity: warning
let h1Count = count(css("h1"))
column h1Count = h1Count
when: h1Count == 0
message.title: Missing H1
message.body: No H1 was found on {{ finalUrl }}.
message.hint: Add exactly one visible H1 heading.
Gebruik let voor herbruikbare tussenwaarden en column voor output die helpt bij triage. Maak rules niet alleen binair; goede columns besparen later veel handmatig uitzoekwerk.
Data en functies die je vaak nodig hebt
In rules werk je meestal vanuit deze runtime-symbolen: http, headers, url, link_graph, assets, requestedUrl, finalUrl en others. Voor DOM-checks start je als gebruiker met css("selector") en niet met directe interne dom.*-toegang.
http: redirect- en responsehopsheaders: responseheadersurl: onderdelen zoals hostname, pathname en queryParamslink_graph: linktelling en URL-verzamelingenassets: scripts, stylesheets, images en mediaothers: andere runs in dezelfde sessie
Functies die je bijna altijd gebruikt zijn css, text, attr, style, metrics, selector, count, filter, any, all, regex, lower, join en px.
let tooSmallButtons = filter(css("button"), b, metrics(b).width < 44 or metrics(b).height < 44)
let samePath = filter(others, o, o.url_input.pathname == url.pathname)
Best practices voor betere scans en betere rules
- Werk in meerdere passes in plaats van één enorme crawl.
- Gebruik scope filters als primaire performanceknop.
- Ontwerp rules voor triage, niet alleen voor alerts.
- Bereken dure expressies één keer in een
let. - Houd CSS-selectors zo specifiek mogelijk.
- Gebruik
othersgericht voor duplicaten, outliers en cross-page checks. - Houd rule ids stabiel zodra rapportage of historiek erop leunt.
Voor teams werkt het goed om rollen te scheiden: iemand beheert scanprofielen, iemand bewaakt rule-kwaliteit, en iemand controleert de impact van fixes in reruns.
Troubleshooting
De meeste problemen vallen in vier groepen: parserfouten, typefouten, runtimefouten en performanceproblemen.
- Parser errors: meestal ontbreekt
id,whenof is een regel syntactisch ongeldig. - Type-checker errors: vaak een typo in een identifier of een functie met verkeerde argumenten.
- Runtime errors: meestal een onbekende functie of een ambigu typepad.
- NaN of rare arithmetic: meestal een niet-numerieke operand in een berekening.
- others lijkt leeg: de huidige run zit nooit in
others; je hebt dus meerdere runs nodig. o.url.pathnamewerkt niet: gebruiko.url_input.pathname.
Snelle debugvolgorde: houd de rule eerst klein, parse schoon, controleer types, voeg tijdelijke columns toe en breid daarna pas uit.
