pixellint

Yandex watch counters put the tag ID in the path

The noscript fallback is /watch/{id}. The ID is the tag from the Metrica interface. /collect is vendor/yandex-metrica.

What this pack matches

Hosts
mc.yandex.ru, mc.yandex.com
Paths
/watch/
Vendor docs
github.com/yandex/metrica-tag/blob/47a80d0f0f8278fbb32309b5444b801eda99556e/src/middleware/params/params.ts

Rules

Codes are stable. A finding in CI, MCP, or the playground lands on the same id.

Field Required What it checks Rule ids Source
counter_id required It is the numeric Metrica tag ID. Yandex documents the counter as `/watch/{counter_id}`. Evidence: vendor documented. Fix: Put the tag ID from the Metrica interface in the path as `/watch/{id}`. vendor.yandex-watch.param.counter_id.missing
vendor.yandex-watch.param.counter_id.empty
vendor.yandex-watch.param.counter_id.invalid
docs
browser-info optional Nonempty browser-info gates the optional runtime defaults. It is a profile hint, not proof of producer identity, a closed flag grammar or a required noscript field. Presence diagnostic severity: warning. docs
page-url optional Pinned prepareUrl uses String.slice with a 2048 UTF-16-unit cap, or 512 on IE. The broad 2048 cap uses exact code-unit counting but cannot enforce the lower IE cap without browser context. Custom schemes and empty values remain open. Applies when {"kind":"present","param":"browser-info"}. Presence diagnostic severity: warning. Maximum decoded UTF-16 code units: 2048. vendor.yandex-watch.param.page-url.invalid docs
charset optional Optional default-producer advice: senderWatchInfo emits utf-8. This does not establish receiver-wide encoding law, field requiredness or restrictions on custom middleware. Applies when {"kind":"present","param":"browser-info"}. Presence diagnostic severity: warning. vendor.yandex-watch.param.charset.empty
vendor.yandex-watch.param.charset.invalid
docs
site-info optional Optional serialized JSON visit parameters can arrive in URL or form fallback fields. All JSON root types and arbitrary custom members remain open. Blank, macro and cross-carrier ambiguity follow existing input behavior. Presence diagnostic severity: warning. docs
root optional Decode JSON syntax only. No root type, custom-member schema, null ban or scalar format is imposed. Decoded body source: site-info. Encoding: json. Decoding diagnostic severity: warning. Applies when {"kind":"present","param":"browser-info"}. Presence diagnostic severity: warning. docs

Validate a payload

pixellint validate url "$ARTIFACT" --rulepack vendor/yandex-watch

Try this failing payload in the playground. An example with a validation finding.

https://mc.yandex.ru/watch/

cargo install pixellint · npm install pixellint