ua-tracer by Paul Kinlan

ua-tracer

what does a user agent actually fetch, follow & run?

← all traces

Trace Vspz00H6

First seen: 2026-06-22 12:27:50.604 UTC
User-Agent: Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0

What this user agent did

Directly-referenced assets:

✓ fetched CSS ✓ fetched JS ✓ fetched image ✓ fetched font (HTML)

Document-level link hints:

✗ fetched favicon ✓ fetched apple-touch-icon ✓ fetched web manifest ✓ fetched preload ✗ fetched prefetch

Second-level follows (proves it parsed the linking file):

✓ followed CSS background-image ✓ followed CSS @font-face ✗ followed manifest icon ✗ followed CSS @import

Frames (does it descend into iframes?):

✗ fetched iframe document ✗ descended into iframe (loaded inner image)

Reporting (a report-only CSP is violated by inline styles; reports can arrive via HTTP headers with no JS, or via in-page beacons):

✗ sent a CSP/Reporting report (any path) ✗ delivered via report-uri/Report-To header (no JS) ✗ delivered via in-page beacon (securitypolicyviolation / ReportingObserver)

Social embed (Open Graph / Twitter card images):

✗ fetched og:image ✗ fetched twitter:image

JavaScript execution:

✓ EXECUTED classic JS ✓ EXECUTED ES module ✓ posted client timing

Server-side request waterfall

Every request the server received for this trace, in receive order. +ms is the delta from the homepage request.

ReceivedΔKindMethodUser-Agent
2026-06-22 12:27:50.604 UTC +0 ms homepage GET Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0
request headers (15)
{
  "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
  "accept-encoding": "gzip, deflate, br, zstd",
  "accept-language": "en-US",
  "host": "ua-tracer.paulkinlan-ea.deno.net",
  "priority": "u=0, i",
  "sec-fetch-dest": "document",
  "sec-fetch-mode": "navigate",
  "sec-fetch-site": "none",
  "sec-fetch-user": "?1",
  "te": "trailers",
  "traceparent": "00-1468a2651053da84818823b95df31ecc-ab896ef66886aead-01",
  "tracestate": "",
  "upgrade-insecure-requests": "1",
  "user-agent": "Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0",
  "via": "HTTP/2 ord.vultr.prod.deno-cluster.net"
}
2026-06-22 12:27:51.341 UTC +737 ms font (HTML) GET Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0
request headers (14)
{
  "accept": "application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8",
  "accept-encoding": "gzip, deflate, br, zstd",
  "accept-language": "en-US",
  "host": "ua-tracer.paulkinlan-ea.deno.net",
  "priority": "u=2",
  "referer": "https://ua-tracer.paulkinlan-ea.deno.net/",
  "sec-fetch-dest": "font",
  "sec-fetch-mode": "cors",
  "sec-fetch-site": "same-origin",
  "te": "trailers",
  "traceparent": "00-0d5580aecb8df44b380ad119a6975101-1e6484dd4ba70828-01",
  "tracestate": "",
  "user-agent": "Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0",
  "via": "HTTP/2 ord.vultr.prod.deno-cluster.net"
}
2026-06-22 12:27:51.341 UTC +737 ms CSS GET Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0
request headers (14)
{
  "accept": "text/css,*/*;q=0.1",
  "accept-encoding": "gzip, deflate, br, zstd",
  "accept-language": "en-US",
  "host": "ua-tracer.paulkinlan-ea.deno.net",
  "priority": "u=2",
  "referer": "https://ua-tracer.paulkinlan-ea.deno.net/",
  "sec-fetch-dest": "style",
  "sec-fetch-mode": "no-cors",
  "sec-fetch-site": "same-origin",
  "te": "trailers",
  "traceparent": "00-10d79cfc06f3a1aef0e7dd0f33d2d9cf-0731e2917149bb60-01",
  "tracestate": "",
  "user-agent": "Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0",
  "via": "HTTP/2 ord.vultr.prod.deno-cluster.net"
}
2026-06-22 12:27:51.349 UTC +745 ms preload (image) GET Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0
request headers (14)
{
  "accept": "image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5",
  "accept-encoding": "gzip, deflate, br, zstd",
  "accept-language": "en-US",
  "host": "ua-tracer.paulkinlan-ea.deno.net",
  "priority": "u=5, i",
  "referer": "https://ua-tracer.paulkinlan-ea.deno.net/",
  "sec-fetch-dest": "image",
  "sec-fetch-mode": "no-cors",
  "sec-fetch-site": "same-origin",
  "te": "trailers",
  "traceparent": "00-21f734078439e5747b25d39ca3b0f6f6-60315b2dfe0f59bf-01",
  "tracestate": "",
  "user-agent": "Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0",
  "via": "HTTP/2 ord.vultr.prod.deno-cluster.net"
}
2026-06-22 12:27:51.392 UTC +788 ms image GET Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0
request headers (14)
{
  "accept": "image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5",
  "accept-encoding": "gzip, deflate, br, zstd",
  "accept-language": "en-US",
  "host": "ua-tracer.paulkinlan-ea.deno.net",
  "priority": "u=5, i",
  "referer": "https://ua-tracer.paulkinlan-ea.deno.net/",
  "sec-fetch-dest": "image",
  "sec-fetch-mode": "no-cors",
  "sec-fetch-site": "same-origin",
  "te": "trailers",
  "traceparent": "00-f64d624f73091ca6b8c2a80f67c11f0d-025629cebd6e6546-01",
  "tracestate": "",
  "user-agent": "Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0",
  "via": "HTTP/2 ord.vultr.prod.deno-cluster.net"
}
2026-06-22 12:27:51.394 UTC +790 ms ES module GET Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0
request headers (13)
{
  "accept": "*/*",
  "accept-encoding": "gzip, deflate, br, zstd",
  "accept-language": "en-US",
  "host": "ua-tracer.paulkinlan-ea.deno.net",
  "referer": "https://ua-tracer.paulkinlan-ea.deno.net/",
  "sec-fetch-dest": "script",
  "sec-fetch-mode": "cors",
  "sec-fetch-site": "same-origin",
  "te": "trailers",
  "traceparent": "00-5d8369b9fa24072cda6140ca35ef33b4-72a4546f4cfc4573-01",
  "tracestate": "",
  "user-agent": "Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0",
  "via": "HTTP/2 ord.vultr.prod.deno-cluster.net"
}
2026-06-22 12:27:51.394 UTC +790 ms JS GET Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0
request headers (13)
{
  "accept": "*/*",
  "accept-encoding": "gzip, deflate, br, zstd",
  "accept-language": "en-US",
  "host": "ua-tracer.paulkinlan-ea.deno.net",
  "referer": "https://ua-tracer.paulkinlan-ea.deno.net/",
  "sec-fetch-dest": "script",
  "sec-fetch-mode": "no-cors",
  "sec-fetch-site": "same-origin",
  "te": "trailers",
  "traceparent": "00-e4c06d2d37cbb99a98dfbcd82ae12039-a2f00414c099c7ae-01",
  "tracestate": "",
  "user-agent": "Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0",
  "via": "HTTP/2 ord.vultr.prod.deno-cluster.net"
}
2026-06-22 12:27:51.760 UTC +1156 ms CSS background-image GET Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0
request headers (14)
{
  "accept": "image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5",
  "accept-encoding": "gzip, deflate, br, zstd",
  "accept-language": "en-US",
  "host": "ua-tracer.paulkinlan-ea.deno.net",
  "priority": "u=4, i",
  "referer": "https://ua-tracer.paulkinlan-ea.deno.net/r/Vspz00H6/style.css",
  "sec-fetch-dest": "image",
  "sec-fetch-mode": "no-cors",
  "sec-fetch-site": "same-origin",
  "te": "trailers",
  "traceparent": "00-8b6be297d7dc77e8f53928e2901e8ae2-3b750236f5386acb-01",
  "tracestate": "",
  "user-agent": "Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0",
  "via": "HTTP/2 ord.vultr.prod.deno-cluster.net"
}
2026-06-22 12:27:51.864 UTC +1260 ms CSS @font-face GET Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0
request headers (13)
{
  "accept": "application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8",
  "accept-encoding": "identity",
  "accept-language": "en-US",
  "host": "ua-tracer.paulkinlan-ea.deno.net",
  "referer": "https://ua-tracer.paulkinlan-ea.deno.net/r/Vspz00H6/style.css",
  "sec-fetch-dest": "font",
  "sec-fetch-mode": "cors",
  "sec-fetch-site": "same-origin",
  "te": "trailers",
  "traceparent": "00-a5dec148c26da41d4303059f3683f091-22450a7261100c1a-01",
  "tracestate": "",
  "user-agent": "Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0",
  "via": "HTTP/2 ord.vultr.prod.deno-cluster.net"
}
2026-06-22 12:27:52.096 UTC +1492 ms JS executed beacon GET Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0
request headers (14)
{
  "accept": "image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5",
  "accept-encoding": "gzip, deflate, br, zstd",
  "accept-language": "en-US",
  "host": "ua-tracer.paulkinlan-ea.deno.net",
  "priority": "u=5, i",
  "referer": "https://ua-tracer.paulkinlan-ea.deno.net/",
  "sec-fetch-dest": "image",
  "sec-fetch-mode": "no-cors",
  "sec-fetch-site": "same-origin",
  "te": "trailers",
  "traceparent": "00-6580aca2dd7298a89f37a07eeee665d9-50a69732b0034b02-01",
  "tracestate": "",
  "user-agent": "Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0",
  "via": "HTTP/2 ord.vultr.prod.deno-cluster.net"
}
2026-06-22 12:27:52.188 UTC +1584 ms ES module executed GET Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0
request headers (14)
{
  "accept": "image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5",
  "accept-encoding": "gzip, deflate, br, zstd",
  "accept-language": "en-US",
  "host": "ua-tracer.paulkinlan-ea.deno.net",
  "priority": "u=5, i",
  "referer": "https://ua-tracer.paulkinlan-ea.deno.net/",
  "sec-fetch-dest": "image",
  "sec-fetch-mode": "no-cors",
  "sec-fetch-site": "same-origin",
  "te": "trailers",
  "traceparent": "00-8b06763fbd0217ef364277d4b6ebce13-044f24c9b8a3f75f-01",
  "tracestate": "",
  "user-agent": "Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0",
  "via": "HTTP/2 ord.vultr.prod.deno-cluster.net"
}
2026-06-22 12:27:52.192 UTC +1588 ms web app manifest GET Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0
request headers (14)
{
  "accept": "*/*",
  "accept-encoding": "gzip, deflate, br, zstd",
  "accept-language": "en-US",
  "host": "ua-tracer.paulkinlan-ea.deno.net",
  "priority": "u=4",
  "referer": "https://ua-tracer.paulkinlan-ea.deno.net/",
  "sec-fetch-dest": "manifest",
  "sec-fetch-mode": "cors",
  "sec-fetch-site": "same-origin",
  "te": "trailers",
  "traceparent": "00-64fa5c239c42d4b11b1e2c5b956c9ebb-55e348be6c462315-01",
  "tracestate": "",
  "user-agent": "Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0",
  "via": "HTTP/2 ord.vultr.prod.deno-cluster.net"
}
2026-06-22 12:27:52.380 UTC +1776 ms apple-touch-icon GET Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0
request headers (15)
{
  "accept": "*/*",
  "accept-encoding": "gzip, deflate, br, zstd",
  "accept-language": "en-US",
  "host": "ua-tracer.paulkinlan-ea.deno.net",
  "priority": "u=4",
  "sec-fetch-dest": "empty",
  "sec-fetch-mode": "no-cors",
  "sec-fetch-site": "none",
  "te": "trailers",
  "traceparent": "00-b276d8d28e81b6c62646b6bcbfcbfac7-e348c9486e0c4028-01",
  "tracestate": "",
  "user-agent": "Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0",
  "via": "HTTP/2 ord.vultr.prod.deno-cluster.net",
  "x-deno-userspace-traceparent": "00-b276d8d28e81b6c62646b6bcbfcbfac7-f55db041e82cfc56-01",
  "x-deno-userspace-tracestate": ""
}
2026-06-22 12:27:53.451 UTC +2847 ms client timing POST POST Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0
request headers (17)
{
  "accept": "*/*",
  "accept-encoding": "gzip, deflate, br, zstd",
  "accept-language": "en-US",
  "content-length": "2013",
  "content-type": "application/json",
  "host": "ua-tracer.paulkinlan-ea.deno.net",
  "origin": "https://ua-tracer.paulkinlan-ea.deno.net",
  "priority": "u=6",
  "referer": "https://ua-tracer.paulkinlan-ea.deno.net/",
  "sec-fetch-dest": "empty",
  "sec-fetch-mode": "cors",
  "sec-fetch-site": "same-origin",
  "te": "trailers",
  "traceparent": "00-34f69075831e968a65846fa1b132e81c-44a392dd30ff1a9c-01",
  "tracestate": "",
  "user-agent": "Mozilla/5.0 (Android 16; Mobile; rv:152.0) Gecko/152.0 Firefox/152.0",
  "via": "HTTP/2 ord.vultr.prod.deno-cluster.net"
}

Client-side resource waterfall

Reported by performance.getEntriesByType('resource') after JS ran in the UA. This proves a real browser-grade engine, not just a downloader.

ResourceInitiatorStartDurationTimeline
style.css link 1005ms 382ms
font.woff2 other 1006ms 677ms
preload.png link 1007ms 543ms
photo.png img 1075ms 963ms
main.js script 1076ms 697ms
module.js script 1076ms 783ms
css-bg.png css 1443ms 505ms
css-font.woff2 other 1553ms 816ms
js-ran.gif?t=1782131274490 img 1781ms 404ms
module-ran.gif?t=1782131274576 img 1868ms 635ms
manifest.json fetch 1882ms 372ms