Technical audit · 2026-07-28

agerpres.ro

Romania's National News Agency

Romania's national news agency — 97 requests, ten hosts, with 22 requests going outward to five external recipients. There is no consent mechanism on the site whatsoever: not a single consent-management script in the capture, and the site's own cookie policy suggests opting out via browser settings. Google Analytics, the Histats counter, and the Cloudflare beacon start in the same wave as the page's own resources; GA4 transmits a client identifier, screen resolution, and scroll depth. Of the external recipients, the documents name only Google Analytics.

Timeline of the leak

+0 ms · homepage load
The document is served through Cloudflare (headers server: cloudflare, cf-ray). Proprietary resources come from agerpres.ro and foto.agerpres.ro, 75 of 97 requests.
+285 ms · third-party widget and video thumbnails
www.moldpres.md/config/widget.php — the Moldpres agency widget script, referer https://agerpres.ro/. Simultaneously, ten requests to i.ytimg.com for YouTube video thumbnails.
+288 ms · Google counter and Cloudflare beacon
www.googletagmanager.com/gtag/js?id=G-0V9Q2MGQ21 and static.cloudflareinsights.com/beacon.min.js — requested in the same wave as the page's own resources.
+422 ms · Histats
s10.histats.com/js15_as.js — the external visit-counter script. Response 304: the file was already cached from a previous site visit.
+638 ms · data transmission to Google
region1.analytics.google.com/g/collect, a page_view event: client identifier, screen resolution 1920x1080, Windows platform, x86/64 architecture, a list of browser versions, interface language, the address https://agerpres.ro/, and the page title.
+666 ms · data transmission to Histats
s4.histats.com/stats/0.php — site ID 4915706, the page title, the full address https://agerpres.ro/, screen width 1920, browser language.
+679…+688 ms · requests to Moldpres
A logo and three news thumbnails load from www.moldpres.md — a server in Moldova, served by nginx.
+1071 ms · Cloudflare beacon
A POST to the proprietary path agerpres.ro/cdn-cgi/rum, an 887-byte JSON body — Cloudflare measurements sent via a first-party path.
+7028 ms · behavioral event
A second GA4 request: a scroll event with a scroll depth of 90% and an engagement time of 1378 ms.

Declared versus actual

Google Analytics — named directly, with a reference to Google's documentation — заявлен
Use of both first-party and third-party cookies — declared in a general phrase, recipients not listed — заявлен
'Tracking cookies' for content curation and 'differentiated advertising' — declared — заявлен
'Indicatori de măsurare web sunt anonimizate,' behavior determined 'fără a identifica vizitatorii la nivel de persoană' — заявлен
Automatically collected data — IP address, browser string, referer; retained for 30 days in server logs — заявлен
A commitment not to share databases containing users' personal data with third parties — заявлен
The only opt-out method described is browser settings — заявлен
+ Histats — an external counter, receiving the page title and address, screen width, browser language — не заявлен
+ Cloudflare Insights — an analytics beacon and a request to /cdn-cgi/rum — не заявлен
+ i.ytimg.com — transmission of IP address and referer to Google when loading thumbnails — не заявлен
+ The Moldpres widget — a third-party script and images from a server in a third country — не заявлен
+ The client identifier, screen resolution, a set of browser client hints, scroll depth, and engagement time transmitted to GA4 — не заявлен

Transfer timings

+285 ms www.moldpres.md

A third-party widget script. IP address and referer go to a server in a third country.

+285 ms i.ytimg.com

Ten video thumbnails. IP address and referer transmitted to Google.

+288 ms www.googletagmanager.com

gtag/js for the GA4 stream G-0V9Q2MGQ21.

+288 ms static.cloudflareinsights.com

beacon.min.js — the Cloudflare analytics beacon.

+422 ms s10.histats.com

js15_as.js, response 304 — the file loaded from a previous visit's cache.

+638 ms region1.analytics.google.com

page_view: client identifier, screen resolution, browser client hints, page address and title.

+666 ms s4.histats.com

Site ID, page title and full address, screen width, language.

+1071 ms agerpres.ro/cdn-cgi/rum

POST, 887 bytes — Cloudflare measurements via a first-party path.

+7028 ms region1.analytics.google.com

scroll: 90% scroll depth, engagement time.

Detected trackers

Indicators of GDPR non-compliance

Context

agerpres.ro is the website of Romania’s National News Agency (Agenția Națională de Presă AGERPRES), an autonomous public institution accountable to parliament. It publishes a news feed, a photo service, an English-language version, and content from partner agencies. The controller stated in the site’s own documents: AGERPRES, Bucharest, Piața Presei Libere 1, with a data-protection contact of gdpr@agerpres.ro. The front-end infrastructure sits behind Cloudflare.

Measurement: 97 requests, ten hosts. Seventy-five requests go to the proprietary domains agerpres.ro and foto.agerpres.ro; twenty-two go outward to five external recipients. Capture duration: 7.03 seconds, with the page fully loaded by 1065 ms. Captured on July 7, 2026, on the homepage.

Who receives data directly

Google (Analytics, Tag Manager, YouTube), Histats, Cloudflare, Moldpres.

Declared versus actual

Disclosure rests on one named service. The cookie policy states directly: traffic analysis uses Google Analytics tools, which record information on pages visited, visit duration, and method of access. In the same passage, it acknowledges in general terms that both first-party and third-party cookies are used, and that the agency’s sites have “tracking cookies” that help tailor content and “differentiated advertising.” No other recipient is named.

The measurement reveals three discrepancies.

First — the set of recipients. Besides Google Analytics, four more external recipients are active on the page. Histats is an external visit counter: a script from s10.histats.com, followed by a data request to s4.histats.com/stats/0.php carrying site ID 4915706, the page title, its full address, screen width 1920, and browser language. Histats’s operator is not publicly identified: the domain’s registration data is shielded by a privacy service. Cloudflare delivers an analytics beacon (beacon.min.js) and subsequently transmits measurements to the site’s own path /cdn-cgi/rum with an 887-byte body — hosted via a first-party path, so no external domain appears in the address bar. Ten requests to i.ytimg.com for video thumbnails transmit the IP address and referer to Google. The Moldpres agency widget is loaded by a script from a third-party server, followed by a logo and three news thumbnails. None of these four is mentioned in the site’s documents.

Second — the nature of the data transmitted versus the claimed anonymity. The policy states that the analyzed metrics are anonymized and that visitor behavior is determined without identification at the individual level. The first GA4 request carries a client identifier, a screen resolution of 1920x1080, the Windows platform, system bitness and architecture, a full list of browser versions, interface language, first-session indicators, the page address, and its title. The second request is a scroll event with a depth of 90% and an engagement time of 1378 ms. Screen resolution and the set of browser client hints are parameters used for device fingerprinting, while scroll and engagement measure behavior, not visit counts. Separately, the data-protection notice describes the automatically collected data as the IP address, browser string, and referer, retained for 30 days in server logs — it says nothing about analytics identifiers or device parameters, and the commitment not to share personal-data databases with third parties sits alongside the actual transmission of a client identifier.

Third — transfer outside the Union. The widget script loads from a server in the Republic of Moldova, for which the European Commission has not adopted an adequacy decision. The request is sent directly from the visitor’s browser and carries the IP address and a referer header with the value https://agerpres.ro/. Neither the transfer itself nor its legal mechanism is described in the site’s documents.

Technically: the site has no proprietary Content-Security-Policy header — only a content-security-policy-report-only header from Cloudflare’s script-monitoring service, which blocks nothing and merely sends reports. No advertising networks were recorded in the measurement, despite the policy declaring the use of tracking cookies for differentiated advertising.

Proven: there is no consent mechanism in the capture. Across all 97 requests, there is not a single request to a consent-management platform and not a single script bearing the corresponding hallmarks — neither proprietary nor external. All known platform names and common URL patterns were checked, with zero matches.

Proven: the loading of external scripts does not depend on a user’s choice. The Moldpres widget and video thumbnails are requested at +285 ms, the Google counter and Cloudflare beacon at +288 ms, and Histats at +422 ms — that is, in the same wave as the page’s own resources, parsed by the browser from the document’s markup. The first GA4 request carrying a client identifier fires at +638 ms. This claim is verified by request order and does not depend on whether any notice was displayed on the page: even if one had been, no script waits for it.

Proven: the identifier was recorded on the site’s first load. The GA client identifier was transmitted to Google in the request body, meaning it exists and is stored on the device. Based on the timestamp embedded within it, it was created at 19:39:09 UTC — 30 seconds before the capture began. The conditional header of the main document shows that the previous page load occurred at 19:39:06 UTC, meaning the identifier appeared three seconds after first contact with the site.

Indirectly confirmed by the site’s own document. The site’s cookie policy describes only one method of opting out of cookies — browser settings, referring to “Options,” “Tools,” and “Settings” menus. This is how sites that do not operate a consent mechanism typically write; there is no description of a banner, of withdrawing a choice, or of configuring categories anywhere in the document.

Not proven, and not required for the finding: the absence of a notice in the page markup. Response bodies were removed from the published file, so the presence or absence of a text banner in the HTML cannot be verified from it. The analysis’s argument does not rest on this — it rests on the fact that loading of external scripts does not depend on any such banner.

Separately: the browser sent a DNT: 1 header during capture. This did not affect the composition or volume of the transfers.

Boundaries of this observation

The measurement covers a single page — the homepage. The observation records browser behavior, not the internal workings of the services: server-side processing, contractual relationships with recipients, and the services’ own settings on their owners’ side are not verified by a browser-based measurement. Legal assessment falls to the competent authority — Autoritatea Naţională de Supraveghere a Prelucrării Datelor cu Caracter Personal.

The published file has been cleaned of personal data: Cookie headers in requests, response bodies, the analytics session identifier, and the Cloudflare beacon body have been removed. The composition of cookies on the device therefore cannot be reconstructed either way from the published file’s HTTP headers, and no finding in this review relies on them. The fact that an analytics identifier was recorded rests on separate, directly verifiable evidence: the identifier was transmitted to Google in the request body, visible in the file.

Service identification rests on domains, URL schemes, and response headers: Google — via googletagmanager.com, analytics.google.com, and ytimg.com; Histats — via histats.com and the stats/0.php scheme with a site ID; Cloudflare — via cloudflareinsights.com, cf-ray headers, and the service path /cdn-cgi/rum; Moldpres — via moldpres.md. The absence of an adequacy decision for Moldova was checked against the current list of European Commission decisions.

Requests to i.ytimg.com load images; no visitor identifiers were observed in them, only the IP address and referer being transmitted. This carries less weight than the operation of the counters, and is treated in this review as an undisclosed recipient rather than as separate tracking.

Conclusion

Romania’s national news agency operates with no consent mechanism at all: the capture contains not a single consent-management platform, and the site’s own cookie policy offers visitors only one route — toggling browser settings. Meanwhile, the loading of external scripts is baked into the page’s markup, and all transfers begin within the first half-second of the session. Of five external recipients, the documents name only Google Analytics: the Histats counter, whose operator’s registration data is shielded, the Cloudflare analytics beacon, requests to Google’s servers for video thumbnails, and a third-party widget served from a server in Moldova, are disclosed nowhere. The claimed anonymity of the measurements is contradicted by the facts: a client identifier, screen resolution, and a full set of browser client hints go to Google, followed by a second event carrying scroll depth and engagement time.

For a state news agency, this combination — an absent consent mechanism, undisclosed recipients, and an undisclosed third-country transfer — constitutes a violation of both consent rules and transparency requirements. Remedy: implement a consent mechanism that actually governs the loading of non-essential scripts, rather than one described merely by a reference to browser settings; list all recipients by name along with the fields transmitted to each; bring the description of audience measurement into line with the parameters actually transmitted; and either disclose the legal mechanism for the transfer to Moldova or move the widget onto proprietary infrastructure.

IMPORTANT: before filing a complaint with the regulator, first contact the company directly and give it 30 days to respond. Without this step the regulator may reject the complaint. Details and a template letter to the company are in the Methodology.
Ready-to-send complaint letter

Where to file: National Supervisory Authority for Personal Data Processing (ANSPDCP)dataprotection.ro

To: National Supervisory Authority for Personal Data Processing (ANSPDCP)
From: [Your name], [contact email]

1. Subject of the complaint
I am filing a complaint regarding the processing of my personal data by the website agerpres.ro.

2. Circumstances
I visited the website agerpres.ro and found indications that the processing of my personal data does not comply with the GDPR. The technical analysis published on gdpru.eu on 28 July 2026 (open methodology, reproducible measurements) documents the following indications:

1) No consent mechanism was found on the site: across all 97 requests in the capture, there is not a single request to a consent-management platform, nor a single script bearing the hallmarks of a banner. Google Analytics, the Cloudflare beacon, and the Histats counter are requested at +288…+422 ms, in the same wave as the page's own resources; the first GA4 request carrying a client identifier fires at +638 ms. The site's own cookie policy offers only one method of opting out — browser settings — meaning it describes operation with no consent mechanism at all. At the same time, that same policy states that the site uses tracking cookies for content and 'differentiated advertising.'

2) The cookie policy names only Google Analytics among external recipients. In the measurement, data also goes to Histats (an external counter, receiving the page title and full address, screen width, and browser language), to Cloudflare (the analytics beacon beacon.min.js and a request to /cdn-cgi/rum with an 887-byte body), to Google via i.ytimg.com (10 requests for video thumbnails), and to the Moldpres agency (a third-party widget script plus images). None of these is named in the site's documents.

3) The cookie policy claims that the analyzed metrics are anonymized and that behavior is determined 'fără a identifica vizitatorii la nivel de persoană'; a separate data-protection notice commits not to share databases containing personal data with third parties, and the section on automatically collected data describes only the IP address, browser string, and referer, retained for 30 days in server logs. In practice, GA4 receives a client identifier, a screen resolution of 1920x1080, the Windows platform, x86/64 architecture, a list of browser versions, interface language, and the page address and title, followed by a second event carrying a 90% scroll depth and engagement time. The site's documents say nothing about identifiers or device parameters.

4) The widget on the homepage is loaded by a script from www.moldpres.md — a server in the Republic of Moldova, for which the European Commission has not adopted an adequacy decision. The request is sent directly from the visitor's browser and carries the IP address and a referer header with the value https://agerpres.ro/. Neither the fact of the transfer nor its legal mechanism is described in any of the site's documents.

Full technical documentation is published at: https://gdpru.eu/en/audits/ro-agerpres-ro/

3. Provisions violated
ePrivacy — Legea 506/2004, art. 4 alin. (5) (in conjunction with GDPR Art. 6(1)(a)); GDPR Art. 13(1)(e) — disclosure of recipients; GDPR Art. 5(1)(a) — transparency; GDPR Art. 13(1)(f) — information on third-country transfer

4. Request
I request that you investigate the violations described and apply the measures provided for in Article 58(2) GDPR.

5. Attachments
The full evidence base — the HAR file, its SHA-256 checksum and the quotation from the site's privacy policy documenting the stated contradiction — is published and verifiable at the link in point 2 above.

[Date]                                    [Signature / name]