Skip to content

C6: Fingerprinter::analyze_warm dispatch (robots/well-known/favicon) #52

Description

@filipeforattini

Parent

#46

What to build

Fingerprinter::analyze_warm(host: &str, client: &ImpersonateClient) -> Vec<Detection> is a new async method that fires the Warm-tier sources for a host. It fetches https://{host}/robots.txt, /.well-known/security.txt, /.well-known/openid-configuration, and /favicon.ico in parallel via the supplied ImpersonateClient, computes the favicon MD5, and calls each registered Warm-tier source via the source's public classify_* / analyze_body helper.

Results merge into the WarmCache keyed by host:port with the configured TTL (default 24h). A subsequent call within TTL returns cached results without re-fetching. Fingerprinter::invalidate(host) continues to force a refresh.

Acceptance criteria

  • Fingerprinter::analyze_warm(host, &client) -> Vec<Detection> implemented
  • Fetches /robots.txt, /.well-known/security.txt, /.well-known/openid-configuration, /favicon.ico in parallel
  • Computes favicon MD5 and feeds to FaviconHashSource::classify_hash
  • Feeds robots.txt body to RobotsTxtSource::analyze_body
  • Feeds well-known probe results to WellKnownSource::classify
  • Results cached in WarmCache with host:port key, 24h TTL default
  • Cached entry returned on second call within TTL (no re-fetch)
  • Fingerprinter::invalidate(host) forces refresh
  • New integration test drives analyze_warm against wiremock-served files
  • Total time per Warm-tier run under 5s for a host that responds within budget
  • NDJSON regression byte-stable

Blocked by

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestneeds-triageAwaiting triagerustPull requests that update rust code

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions