Skip to content

C9: Real catalog hashes from live capture #54

Description

@filipeforattini

Parent

#46

What to build

Replace the PLACEHOLDER_* hash strings in fingerprint::introspect::catalog with real measured JA3 / JA4 / h2_settings_fp values for each impersonate::Profile (Chrome131Stable, Chrome132Stable, Chrome149Stable). A one-shot recording test (#[ignore] by default, run with --ignored to refresh) drives SelfFingerprint::capture_live against a known stable endpoint (e.g. https://tls.peet.ws/api/all) for each profile and prints the measured hashes; the test author copies the values into catalog.rs.

A checked-in golden file under tests/fixtures/ records the canonical hash set so future captures can diff against expected values. The non-ignored unit tests in catalog.rs assert the new entries exist and don't match the legacy PLACEHOLDER_* literals.

Acceptance criteria

  • fingerprint::introspect::catalog::lookup_by_name returns measured JA3 / JA4 / h2_fp hashes for Chrome131Stable, Chrome132Stable, Chrome149Stable
  • No catalog entry contains the string "PLACEHOLDER_"
  • Recording test (#[ignore] fn record_catalog_hashes) implemented + documented in a CONTRIBUTING.md note (or inline doc comment)
  • Golden file tests/fixtures/profile_catalog_golden.json checked in
  • diff_against returns true (clean drift) when run with the measured values
  • cargo test --all-features --lib fingerprint::introspect::catalog: all tests pass
  • 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