Website evidence · pilot dataset
Does apnews.com fingerprint you?
Fingerprinting indicators observed.
The latest measured scans include canvas drawing and readback by the same script. Some activity was recorded on a challenge page. This is a fingerprinting indicator, not proof of tracking intent or transmission.
All 5 source records are included in the JSON. Scan timestamps and versions are shown as recorded. The tabs show the latest usable homepage measurement for each setup. Later failed attempts remain in the history. Scan scope and methodology ↗
Inside the scan
← All websitesVisitor setup
Draw + readback
4 of 5 signal families observed
- Measurement
- Measured
- Page context
- Challenge page
- Scan time
- 2026-10-22T13:41:43.528194Z
- Browser / scanner
- 156.0.8078.4 / 0.4
Captured titleJust a moment...
CanvasDraws text and reads canvas output.
Observed requires a text-drawing API and a canvas readback API. Guide ↗
canvas.getContext1 callsFrame: https://apnews.com/
- Inline caller recorded
canvas.getContext3 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
- Inline caller recorded
https://challenges.cloudflare.com/[redacted-challenge]
canvas.toDataURL1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
canvas2d.fillText2 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
canvas2d.getImageData2 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
canvas2d.strokeText1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
WebGLQueries the graphics environment.
Observed requires at least three distinct WebGL probing APIs. Guide ↗
webgl2renderingcontext.getExtension5 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
webgl2renderingcontext.getParameter38 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
webgl2renderingcontext.getShaderPrecisionFormat1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
webgl2renderingcontext.getSupportedExtensions2 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
webgl2renderingcontext.readPixels1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
webglrenderingcontext.getExtension5 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
webglrenderingcontext.getParameter36 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
webglrenderingcontext.getShaderPrecisionFormat14 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
webglrenderingcontext.getSupportedExtensions2 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
webglrenderingcontext.readPixels3 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
AudioRenders or reads audio samples.
Observed requires offline rendering, buffer reads, or analyser reads. Guide ↗
audio.createDynamicsCompressor2 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
audio.createOscillator2 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
audiobuffer.getChannelData4 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
offlineaudio.startRendering3 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
FontsMeasures text repeatedly.
Observed requires at least ten text-measurement calls. Guide ↗
fonts.check1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
DeviceReads browser and display properties.
Observed requires at least three distinct browser, screen, or window properties. Guide ↗
navigator.deviceMemory1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
navigator.doNotTrack1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
navigator.getBattery1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
navigator.hardwareConcurrency1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
navigator.language3 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
navigator.languages2 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
navigator.maxTouchPoints1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
navigator.mimeTypes1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
navigator.platform1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
navigator.plugins3 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
navigator.userAgent1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
navigator.webdriver1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
window.devicePixelRatio1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
Scripts with both text drawing and canvas readback 1
These source URLs appear in both call groups. Aggregated logs do not preserve the full execution sequence or establish the purpose of the collection.
https://challenges.cloudflare.com/[redacted-challenge]
Providers, script signatures, and DNS 0 provider labels
Provider labels and static signatures are scanner observations. A library-name match does not establish that its code executed.
Static script signatures
https://challenges.cloudflare.com/[redacted-challenge]reCAPTCHA · 0 API patterns
Network and worker observations 24 requests
- Captured scripts
- 5
- Instrumented frames
- 2
- Google Ads observed
- No
- Transmission evidence
- Not validated
Legacy transmission hints are excluded. A request after an API call does not establish that the extracted value was sent.
Third-party hosts
challenges.cloudflare.comhagen.challenges.cloudflare.com
Other recorded API calls 4
document.cookie.read1 callsdocument.cookie.read2 callswebrtc.RTCPeerConnection1 callswebrtc.RTCPeerConnection1 calls
Source record and integrity
- Original source
results/headful/apnews-com-20261022T134143.json- Original file SHA-256
e8143d0f2b7a41918f892356f6ead35b88f6cbcf6ca89141ad10ba4bc4d3ff0b
Run ID: headful-e8143d0f2b7a. The JSON contains sanitized observations, not the original private scan payload.
Other scan attempts (2)
Visitor setup
Navigation failed
Navigation failed
- Measurement
- Navigation failed
- Page context
- Page not measured
- Scan time
- 2026-10-21T22:26:21.058467Z
- Browser / scanner
- 156.0.8078.4 / 0.3
Navigation or page loading failed in this browser setup. The record does not establish why it failed.
Source record and integrity
- Original source
results/headful/apnews-com-20261021T222621.json- Original file SHA-256
aaa146e6771c91c77ddd4da7875ce2ca3f97c28f80dc34ed15d30950673924ad
Run ID: headful-aaa146e6771c. The JSON contains sanitized observations, not the original private scan payload.
Visitor setup
Scanner error
Scanner error
- Measurement
- Scanner error
- Page context
- Page not measured
- Scan time
- 2026-10-22T13:41:42.916753Z
- Browser / scanner
- 156.0.8078.4 / 0.4
The scanner crashed while collecting this page. No usable API results were saved for this setup. A fresh scan is needed; this is not a site-blocking verdict.
Source record and integrity
- Original source
results/headful/apnews-com-20261022T134142.json- Original file SHA-256
3be9804dce76d9ba6f20a7fdd5ed1115db64c04b5dfbcd755e37ab21c6f1569a
Run ID: headful-3be9804dce76. The JSON contains sanitized observations, not the original private scan payload.
Research setup
Draw + readback
4 of 5 signal families observed
- Measurement
- Measured
- Page context
- Challenge page
- Scan time
- 2026-10-22T17:33:25.326163Z
- Browser / scanner
- 156.0.8078.4 / 0.4
Captured titleJust a moment...
CanvasDraws text and reads canvas output.
Observed requires a text-drawing API and a canvas readback API. Guide ↗
canvas.getContext1 callsFrame: https://apnews.com/
- Inline caller recorded
canvas.getContext3 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
- Inline caller recorded
https://challenges.cloudflare.com/[redacted-challenge]
canvas.toDataURL1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
canvas2d.fillText2 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
canvas2d.getImageData2 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
canvas2d.strokeText1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
WebGLQueries the graphics environment.
Observed requires at least three distinct WebGL probing APIs. Guide ↗
webgl2renderingcontext.getExtension5 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
webgl2renderingcontext.getParameter38 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
webgl2renderingcontext.getShaderPrecisionFormat1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
webgl2renderingcontext.getSupportedExtensions2 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
webgl2renderingcontext.readPixels1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
webglrenderingcontext.getExtension5 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
webglrenderingcontext.getParameter36 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
webglrenderingcontext.getShaderPrecisionFormat14 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
webglrenderingcontext.getSupportedExtensions2 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
webglrenderingcontext.readPixels3 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
AudioRenders or reads audio samples.
Observed requires offline rendering, buffer reads, or analyser reads. Guide ↗
audio.createDynamicsCompressor2 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
audio.createOscillator2 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
audiobuffer.getChannelData4 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
offlineaudio.startRendering3 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
FontsMeasures text repeatedly.
Observed requires at least ten text-measurement calls. Guide ↗
fonts.check1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
DeviceReads browser and display properties.
Observed requires at least three distinct browser, screen, or window properties. Guide ↗
navigator.deviceMemory1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
navigator.doNotTrack1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
navigator.getBattery1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
navigator.hardwareConcurrency1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
navigator.language3 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
navigator.languages2 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
navigator.maxTouchPoints1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
navigator.mimeTypes1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
navigator.platform1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
navigator.plugins3 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
navigator.userAgent1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
navigator.webdriver1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
window.devicePixelRatio1 callsFrame: https://challenges.cloudflare.com/[redacted-challenge]
https://challenges.cloudflare.com/[redacted-challenge]
Scripts with both text drawing and canvas readback 1
These source URLs appear in both call groups. Aggregated logs do not preserve the full execution sequence or establish the purpose of the collection.
https://challenges.cloudflare.com/[redacted-challenge]
Providers, script signatures, and DNS 0 provider labels
Provider labels and static signatures are scanner observations. A library-name match does not establish that its code executed.
Static script signatures
https://challenges.cloudflare.com/[redacted-challenge]reCAPTCHA · 0 API patterns
Network and worker observations 18 requests
- Captured scripts
- 4
- Instrumented frames
- 2
- Google Ads observed
- No
- Transmission evidence
- Not validated
Legacy transmission hints are excluded. A request after an API call does not establish that the extracted value was sent.
Third-party hosts
challenges.cloudflare.comhagen.challenges.cloudflare.com
Other recorded API calls 4
document.cookie.read1 callsdocument.cookie.read2 callswebrtc.RTCPeerConnection1 callswebrtc.RTCPeerConnection1 calls
Source record and integrity
- Original source
results/headless/apnews-com-20261022T173325.json- Original file SHA-256
49ba102ba6f28eaa053665231c82d6b6540a707c634fcf91ef55feac7cd90659
Run ID: research-49ba102ba6f2. The JSON contains sanitized observations, not the original private scan payload.
Other scan attempts (1)
Research setup
Navigation failed
Navigation failed
- Measurement
- Navigation failed
- Page context
- Page not measured
- Scan time
- 2026-10-21T20:49:18.704998Z
- Browser / scanner
- 156.0.8078.4 / 0.3
Navigation or page loading failed in this browser setup. The record does not establish why it failed.
Source record and integrity
- Original source
results/headless/apnews-com-20261021T204918.json- Original file SHA-256
f951e921d8b8207df42d2e143b995048f4ec174004bb783334265a2be1c0ac1c
Run ID: research-f951e921d8b8. The JSON contains sanitized observations, not the original private scan payload.
Queries, request bodies, cookies, extracted values, raw errors, and session payloads are excluded before publication. The source digest identifies the original private record.
Read the sanitized JSON →