Inside the VPN Tunnel: One Advertising Identifier Reached Two Auction Systems

Encrypted VPN tunnel carrying browser signals to separate advertising recipients

An original FreePolicyTools case study of cookie refusal, DNS filtering and browser blocking — with 480 main workflow assignments across 20 selected websites, three actual collection days, and a separate California replication.

A VPN was connected. The browser profile was fresh. Yet, during visits to TechCrunch with NetShield off and no browser blocker, the same advertising identifier appeared in uploads to two advertising auction systems: InMobi and PubMatic. The identifier travelled with page and browser/device fields. Both endpoints returned HTTP responses.

That observation recurred in six fresh workflows across three collection days. It illustrates a boundary that a VPN connection alone does not resolve: an encrypted tunnel can carry identifiers that website scripts deliberately include in a request. It does not show that Proton exposed a home IP address, that a named person was identified, or that these recipients retained or linked the data.

The larger experiment also exposed a measurement trap. Of 480 assigned main workflows, only 105 — 21.9% — passed the checks for the completed-task primary analysis. Challenges, incomplete pages and unavailable refusal controls could otherwise make a protection appear successful simply because the intended interaction never happened.

The evidence supports a specific case of advertising identifier transmission and a limited set of matched protection comparisons. It cannot support a universal privacy ranking or a claim that cookie refusal was ignored.

480main assignments
20selected websites
105primary-eligible main workflows
48California assignments

What we tested

We kept a verified Proton VPN tunnel active while crossing three binary factors. Every website received all eight assignments in each of three main rounds.

Factor First condition Second condition
Cookie notice Untouched Optional cookies explicitly refused when an available control completed the action
Proton NetShield Off Malware, ads and trackers filtering
Browser blocker Absent uBO Lite 2026.1012.1545, Optimal mode

Swipe or scroll horizontally to see all columns on smaller screens.

Untouched does not mean accepted. Refusal requested does not mean refusal completed. An extension-hidden dialog, a missing control, a subscription step and an actual refusal remain separate outcomes.

The browser was isolated Playwright Chromium 151.0.7922.34, with en-US locale, UTC browser time zone and a 1360 × 900 viewport. A new research profile was created for each workflow. Initial cookies and the requested extension mode were checked. Tasks were modest: scroll a homepage, enter a public destination or search term without submitting, or type a generated example.com email into an unsubmitted newsletter field. No real personal data, purchase, login or customer request was used.

The study asks what changed when these particular controls changed inside an already active tunnel. There is no matched non-VPN arm, so it does not estimate the causal effect of connecting a VPN. Our guide to what VPNs cannot protect explains that distinction beyond this experiment. Nor does it compare VPN brands.

Proton describes NetShield as filtering domain lookups against blocklists. A browser blocker can apply additional request and page rules. We pinned the official uBO Lite release, verified Optimal mode and retained a hash inventory of the bundled extension files. These are observations of the measured versions and settings, rather than promises about future releases.

The advertising case: what actually crossed the tunnel

Across the six reviewed TechCrunch workflows, we observed 26 advertising bid POSTs at two precise paths: InMobi's /openrtb/bidder/prebidjs and PubMatic's /translator. There were three untouched-notice workflows and three requested-refusal workflows. The latter never completed a usable refusal and are excluded from refusal-effect estimates.

The endpoint-purpose classification uses the official Prebid InMobi adapter and PubMatic adapter. The IAB OpenRTB specification supplies the meaning of the site/device and extended-identifier structures. The inspected reference code identifies endpoint purpose; it does not establish the precise adapter revision deployed during our visits.

The payloads contained user.ext.eids[].uids[].id, with an identifier source of pubcid.org. Within each workflow, the exact same value appeared at both reviewed recipients. The public evidence replaces that value with within-run-id-1; aliases reset for every run. No raw value or identifier hash is published.

Inside one fresh TechCrunch workflow

VPN active · NetShield off · browser blocker absent · notice untouched

user.ext.eids[].uids[].id → within-run-id-1

Identifier source: pubcid.org · exact value reused within this workflow

Raw identifier and hashes excluded from publication
api.w.inmobi.com

Observed bid POSTs; upstream HTTP 204

Fields: page, user agent, language, dimensions

Browser automation indicator also present

Private payload values omitted
hbopenbid.pubmatic.com

Observed bid POSTs; upstream HTTP 204

Fields: page, user agent, language, dimensions

Browser automation indicator also present

Private payload values omitted
Field presence does not establish fingerprint uniqueness, named identity or backend linkage. This schematic represents recorded evidence; it is not a simulated request.

Evidence schematic derived from decoded captures, not a simulated network screenshot. Field presence is shown; private values are omitted. The same alias denotes an exact match within one workflow only.

Observed fields included the page URL, user agent, language, dimensions and browser automation indicators. PubMatic payloads also included a referrer field. Field presence does not measure fingerprint uniqueness. The automation indicator is also a reminder that the research browser may receive different treatment from an ordinary visitor.

All reviewed bid transactions returned HTTP 204. This is evidence of observed upstream transactions, stronger than a blocked browser attempt or a request seen only by our local proxy. It cannot establish retention, profiling, sale, a legal violation or backend identity linking. We did not establish an exact match between the bid identifier and a recorded cookie value.

Timing changes the interpretation

Of the 26 reviewed bid POSTs, 24 occurred during navigation/cookie handling and two during the task action. None of these cases establishes transmission after a successful refusal. They also show why a study should publish its measurement boundary: a post-interaction-only counter can miss information sent before the visitor gets to the task.

On 17 October, the untouched, NetShield-off, blocker-absent TechCrunch workflow began at 09:37:45.937 UTC. Four reviewed bid POSTs were recorded at 09:38:05, during navigation/cookie handling. Two more followed at 09:38:07.974 and 09:38:08.025 during the scroll action. The fixed observation interval began at 09:38:08.357 and ended 60 seconds later. Two classified Clarity uploads occurred in that interval, and another occurred during departure.

When the reviewed requests were observed

TechCrunch · 17 October 2026 · seconds from 09:37:45.937 UTC

Workflow phases and reviewed request eventsFour advertising bid requests during navigation and consent, two during task action, and four Clarity uploads across navigation, observation and departure. Numbered circles group bid requests; each teal dot represents one Clarity upload.Workflow phasesAdvertising bidsClarity uploads420102030405060708090Seconds since workflow start
Navigation / consentTask actionObservationSnapshot gapDeparture
Numbered circles group 6 bid requests; each teal dot is one Clarity upload. The primary window covers task action, the 60-second observation and departure. Scroll the timeline horizontally on smaller screens.

Times are relative to this workflow's recorded start. Snapshot time is outside the primary window. A request in the departure window does not by itself establish its exact JavaScript trigger.

This example contains five classified collection requests in the primary task/action/departure windows: two advertising bid requests and three Clarity uploads. The corresponding blocker-enabled workflow contained zero detected classified requests in those windows and completed the task. In the first round, the analogous comparison was six versus zero; the six were Clarity uploads.

These are request-count differences in two matched pairs at one site. They are not six or five trackers, people or independent experiments. The second-round comparison is unavailable in the completed-task analysis because its task evidence did not pass; it appears only in the separate loaded-page exploration.

Analytics, functional traffic and unknowns stay separate

Clarity is a second concrete example of payload review. Preserved compressed POSTs decoded to JSON with metadata and analytics arrays, consistent with Microsoft's documented structure. This supports the analytics-upload classification. We do not infer individual interaction event types or persistent personal identity merely from the envelope. Raw envelope values and playback/DOM contents are excluded from publication.

The dataset distinguishes reviewed advertising auctions, analytics collection, script downloads, preflight requests, functional email validation and unresolved first-party instrumentation. A third-party hostname or a downloaded JavaScript file is not automatically a tracking disclosure.

Booking instrumentation at the observed C360/sink paths remains purpose-unresolved. It is reported separately and does not increase the classified analytics/advertising metric. Guardian Ophan requests are classified as first-party publisher analytics using its publisher-maintained client documentation. A view identifier is not evidence of a persistent person or cross-site profile.

No synthetic-marker match was detected in the retained main captures using the implemented raw, URL-decoded, base64, MD5, SHA-1 and SHA-256 checks. That is a bounded detection result. It is not proof that the typed field stayed private: unavailable forms, unknown encodings, unobserved transports and server-side processing limit what the method can see.

The denominator: 480 assignments are not 480 usable comparisons

The sample was frozen before main collection: 20 selected websites spanning shopping, travel, media and online services. It was purposive, not randomly drawn from the web. Challenges remain in the assigned denominator; positive disclosure did not determine inclusion in the main sample.

Each round assigned 160 workflows. The dates below are calculated from actual timestamps in Africa/Nairobi, not filename dates or scheduler promises.

Round Actual Africa/Nairobi date Assignments Primary eligible
r1 2026-10-14 160 33
r2 2026-10-16 160 37
r3 2026-10-17 160 35

Swipe or scroll horizontally to see all columns on smaller screens.

The five-site pilot contributes 40 separate assignments and is never pooled into the main result. A failed third-round closing configuration probe invalidated an earlier 80 workflow attempts. Those originals were retained with checksum provenance, excluded and recollected. Thus the operational record contains 560 main attempts for 480 planned cells, plus the separate pilot and California assignments. A startup attempt before site visits is recorded as an operational incident, not another website observation.

What happened to the 480 main assignments?

Eligible completed task105
Task failed on loaded page26
Challenge page208
Refusal not completed78
Incomplete page59
Other error / evidence gap4
All planned Germany cells shown. Bars share a common scale, with the longest representing 208 assignments. Pilot, California and 80 invalidated extra attempts are separate.

Mutually exclusive categories derived from the audit. Challenge evidence takes precedence over raw missing-refusal labels. These are availability/evidence outcomes, not privacy-effect scores.

Audited outcome Germany assignments California assignments
Eligible completed task 105 22
Task failed on loaded page 26 4
Challenge page 208 0
Refusal not completed 78 19
Incomplete page 59 3
Other error / evidence gap 4 0
Total 480 48

Swipe or scroll horizontally to see all columns on smaller screens.

A raw collector label of “measured” was insufficient. The primary audit also required completed task evidence, a consistent browser and blocker mode, initial-cookie isolation, capture files, observation/departure timing, placement inside a verified block, and stable DNS/configuration/exit checks. Genuine loaded pages with failed tasks form a separately labelled exploratory set of 131 visits, including primary-eligible visits.

Challenge pages can return HTTP 200. The evidence audit found restrictions missed by the collector's initial title/status heuristic. We retained the raw labels and added reasons rather than rewriting the original record. HTTP success therefore never substitutes for task or page validation.

Which assignments supported the primary analysis?

Primary eligibility among the 480 main assignments105 assignments, or 21.9 percent, were primary eligible. The other 375 were excluded from that analysis, not scored as privacy successes.21.9%primary eligible

105 eligible
Capture and task checks passed.

375 excluded
Still retained in the assigned denominator.

Germany only. This is an evidence-availability chart, not a privacy effectiveness score. Detailed reasons remain in the table above.

Three actual collection days

Eligible completed tasks within each 160-assignment round.

Assigned and eligible main workflows by actual Nairobi dateOctober 14: 160 assigned, 33 eligible. October 16: 160 assigned, 37 eligible. October 17: 160 assigned, 35 eligible.0408012016033Oct 14R137Oct 16R235Oct 17R3
Faint full columns show all assignments; colored columns show eligible tasks. Dates are actual Africa/Nairobi dates. These are three categorical rounds, not a continuous trend.

Why refusal is particularly hard to compare

Only Cloudflare, Surfshark and Kayak supplied any primary-eligible refused workflows in the main sample. Cloudflare and Surfshark account for most of those observations. This is a result about the recorded workflows and available controls, not an assertion that every other site offers no refusal option to ordinary users.

We did not buy subscriptions, solve challenges or force dialogs to appear. On the observed Guardian interface, a visible refusal option included a subscription step. It was not purchased or treated as a completed refusal.

Guardian dialog with a subscription step in the visible refusal option.

Unchanged reviewed research screenshot. It explains a workflow exclusion and makes no legal claim.

Task success is also limited. A homepage could scroll while a notice remained visible. Conversely, a genuine page could load while the dialog prevented scrolling.

Cloudflare homepage after the recorded scroll, with its cookie notice still visible.

Unchanged reviewed screenshot. Observed scrolling establishes this narrow task outcome, not unrestricted site functionality.

These distinctions matter causally. A comparison restricted to working pairs conditions on a state that protections themselves may affect. The surviving sites may differ from excluded sites. Reporting the denominator does not remove that selection; it makes the boundary inspectable. Our location-based cookie-choice investigation examines a different source of consent-interface variation.

What the matched results support

We formed 118 single-factor contrasts in Germany. Each contrast holds the other two factors fixed. A workflow can contribute to several contrasts, so this is not a count of independent participants. Repeated differences are averaged within each site before equal-site summaries.

The metric below counts only upstream-confirmed, page-attributed requests to the reviewed analytics/advertising categories during task action, the fixed observation interval and departure. Negative values mean fewer requests with the changed protection on. Navigation/cookie handling and snapshot overhead are excluded from this primary metric and retained separately.

Changed factor Other factors held Pairs Sites On − off requests 95% site bootstrap
blocker netshield=0, refusal=0 19 7 -0.786 [-2.357, 0.000]
blocker netshield=0, refusal=1 7 3 0.000 Omitted: <5 sites
blocker netshield=1, refusal=0 15 6 0.000 [0.000, 0.000]
blocker netshield=1, refusal=1 6 2 0.000 Omitted: <5 sites
netshield blocker=0, refusal=0 15 6 0.000 [0.000, 0.000]
netshield blocker=0, refusal=1 6 2 0.000 Omitted: <5 sites
netshield blocker=1, refusal=0 20 7 0.000 [0.000, 0.000]
netshield blocker=1, refusal=1 6 2 0.000 Omitted: <5 sites
refusal blocker=0, netshield=0 7 3 0.000 Omitted: <5 sites
refusal blocker=0, netshield=1 6 2 0.000 Omitted: <5 sites
refusal blocker=1, netshield=0 6 2 0.000 Omitted: <5 sites
refusal blocker=1, netshield=1 5 2 0.000 Omitted: <5 sites

Swipe or scroll horizontally to see all columns on smaller screens.

Factor values use 0 for off/absent/untouched and 1 for on/enabled/completed refusal. The browser-blocker stratum with NetShield off and the notice untouched has 19 paired workflows from seven sites. Its equal-site mean is −0.786 requests, with a site-bootstrap interval of −2.357 to 0. The non-zero evidence is concentrated at TechCrunch, rather than spread across the seven sites.

The remaining primary strata have zero detected mean differences in this classified metric. This is not equivalence, zero total collection or proof that the controls had no effect. Some contrasts contain as few as two site clusters; most surviving workflows do not contain the reviewed endpoint events. NetShield's verified DNS filtering mechanism can function while its incremental effect remains unidentifiable in a sparse, selected completed-task comparison.

Intervals are percentile bootstraps from 10,000 resamples of observed site means with a fixed random seed. They describe this purposive sample. Below five site clusters we omit intervals. A [0, 0] interval when every observed difference is zero is especially easy to overread: it says nothing about excluded sites, unknown endpoint purposes or unseen collection.

The loaded-page exploration was added after inspecting the first round, so it is explicitly post hoc. It retains the same capture, route, mode, timing, isolation and challenge guards but permits an issued task to fail. Across three rounds it shows TechCrunch classified counts of six, four and five without either blocker, versus zero with NetShield alone or the browser blocker alone. Guardian's corresponding first-party analytics count is one versus zero each round, while the scroll task failed. These observations support a narrow loaded-page case study, not an expansion of the primary estimate.

The informative primary estimate, with uncertainty

Browser blocker enabled versus absent, with NetShield off and the notice untouched.

Site-level primary difference and bootstrap interval19 workflow pairs at seven sites: equal-site mean difference minus 0.786 classified requests, 95 percent site-bootstrap interval minus 2.357 to zero. The interval includes zero; non-zero evidence comes from one site.−0.786 requests-2.5-2-1.5-1-0.50Difference with blocker on minus off
19 paired workflows · 7 sites · interval −2.357 to 0. Site-resampling uncertainty for a purposive sample; the interval includes zero and does not support a universal product ranking.

The California replication

The six-site subset was frozen after the first Germany round for operability and category/task coverage: Booking, Mozilla, Walmart, BBC, Cloudflare and Surfshark. It was not selected by the direction or size of a privacy effect. The server was independently located in Los Angeles before collection, with exact NetShield settings and DNS checks at both block edges.

California contributed 48 assignments, 22 primary-eligible workflows and 21 matched single-factor contrasts. Of those contrasts, 2 contained detected classified collection on either side. Its full outcome denominator appears alongside Germany above; its paired results remain a separate location group in the downloadable data.

The two non-zero California contrasts share one Surfshark baseline workflow: one browser-matched GET to bat.bing.com/action/0 returned HTTP 204 during the task action with both blocking layers off and the notice untouched. The corresponding NetShield-only and browser-blocker-only workflows each had zero detected classified requests and passed the task checks. This is one underlying observed request contributing to two contrasts, not two independent disclosure events. Microsoft documents UET as an advertising activity-measurement mechanism. The endpoint and parameter structure support that classification; they do not establish a completed conversion, named identity or retention.

This is one descriptive subset repetition, not a second three-day experiment. These sites were already selected for working relatively well in Germany, and TechCrunch and Guardian were not in the frozen subset. It cannot independently replicate the advertising-ID case. Geography changes the VPN exit, network identity and potentially consent interface at once; it is not a randomized geography effect and is not pooled into Germany.

How the measurement was validated

An independent local receiver exercised normal requests, frames, workers, departure, storage and raw/encoded/hashed synthetic markers, with negative controls. The HTTP and HTTPS fixtures each logged 17 receiver requests. The proxy captured 17; browser events captured 15 and missed two departure beacons. These bounded tests justify using proxy evidence for departure, rather than asserting universal capture completeness. The same capture distinction matters in our privacy-request form investigation.

Selected direct-browser/proxied resources were compared under NetShield on and off. Effective DNS checks used the tunnel resolver. Three selected tracking-script hosts changed from answers to NXDOMAIN in filtering mode while controls remained resolvable; a selected Facebook host still resolved. This validates a mechanism for those probes, not the entirety of the live blocklist. There was no bypass of blocked resources to make the capture work.

Every live mode block has opening and closing checks for exact configuration, control/filter DNS and exit stability. The exit also had to stay fixed across the two modes. The main rounds used DE#388; California used US-CA#229. Block order was off/on, on/off, off/on across the main rounds; assignments within blocks were randomized. Protection changes are still separated in time, so site changes and order effects remain possible confounders. NetShield’s server-side blocklists could not be frozen; the DNS checks establish the selected probes’ behavior, not an immutable list version.

Browser requests were matched to proxy records by method, URL, body and timing, or attributed through an observed frame referrer. Background browser traffic sharing the proxy was excluded from site metrics. Proxy errors and extension-local replacement responses were not counted as upstream receipt. A remote response still cannot reveal what happened after receipt.

The start schedule suffered dispatch/clock issues, and the second round actually ran after midnight Nairobi on 16 October. The user advanced the final round to the morning of 17 October. The three main dates are therefore 14, 16 and 17 October, with time-of-day variation. Original timestamps were preserved. Host checks found an approximately 35–36 second offset from HTTP Date references; that uncertainty does not change the observed date separation. No exact-time or subsecond synchronization claim is made.

Scope, limitations and reuse

This is a research-browser case study with short, simple tasks and a purposive sample. HTTPS interception, browser automation, the particular exit reputation and extension configuration can affect behavior. No CAPTCHA was bypassed. The method does not establish fingerprint uniqueness, server-to-server collection, persistent cross-session identity, no-logs performance, legality or full browsing usability. Unknown endpoints remain unknown rather than being silently scored safe. Our VPN website-warning study likewise separates a visible protection claim from what an observation actually establishes.

The original contribution is the documented combination of three controls, capture validation, actual cross-day repetitions, payload-level case evidence and an explicit account of failed comparisons. Earlier work already studied tracking-protection effectiveness and pre-submission form disclosure; this is not a first-discovery claim.

For a reader, the practical distinction is between an encrypted route and the content carried over that route. The advertising case demonstrates that scripts can send a shared identifier through a functioning VPN connection. For an evaluator, the equally consequential distinction is between a blocked collection request and a workflow that never became measurable. Both deserve to be visible before a product is called effective.

The sanitized reproducibility package includes the protocol and amendments, frozen samples/settings, audited data, endpoint-purpose review, analysis scripts, tables, chart sources and reviewed screenshot provenance. It reproduces the statistical summaries from sanitized inputs. Private original captures, generated identifiers, proxy CA material and unreviewed screenshots are excluded. Consequently, public readers cannot independently replay every packet-level classification from the ZIP alone; the private evidence is inventoried with checksums for controlled review.

Appendix: which sites supported the primary comparison?

Each main site had 24 planned cells, including 12 assigned refusal cells. Eligibility in this table is a workflow outcome, not a site privacy score.

Site Category Primary eligible / 24 Eligible refusal / 12
ikea shopping 0 0
booking travel 10 0
guardian media 0 0
mozilla online services 12 0
amazon shopping 0 0
ebay shopping 0 0
etsy shopping 0 0
walmart shopping 12 0
tripadvisor travel 0 0
expedia travel 0 0
skyscanner travel 0 0
kayak travel 5 4
bbc media 11 0
reuters media 0 0
cnn media 0 0
techcrunch media 8 0
adobe online services 0 0
cloudflare online services 23 12
surfshark online services 24 12
stackoverflow online services 0 0

Swipe or scroll horizontally to see all columns on smaller screens.

Other inputs need separate tests. Our password-checker investigation examines sequences of hash-prefix queries, while the uploaded-file lifecycle investigation separates output retrieval from filename observations and internal erasure. For the storage mechanisms behind consent measurements, see browser cookies explained. None of those separate studies extends this experiment’s advertising results to unmeasured sites.

Data and reproduction

Inspect the assigned denominator, audited eligibility, matched comparisons and published protocol. These files preserve the distinction between pilot, Germany and California; the 80 invalidated extra attempts remain separately disclosed.

Frequently Asked Questions

Affiliate disclosure: This article contains Proton VPN affiliate links. FreePolicyTools may earn a commission if you purchase through them. These links are separate from the research findings and do not change the study’s methods, results or limitations. This study is not a comparative VPN ranking.