Is Video Ad Block Youtube safe?
Video Ad Block Youtube is medium risk. When a page finishes loading, Video Ad Block Youtube sends the page URL and referrer to ytadskip.com, along with a persistent browser ID that lets repeated browsing events be linked to the same installation over time.…
Who publishes itemredenizadem - 1 other listing from the same operator, none carrying a finding
emredenizadem - 1 other listing from the same operator, none carrying a finding
What this publisher told the store about itself, and the other listings that told it the same thing.
Same store account
1 other listing published from this account, 6k+ users between them, none of them carrying a finding.
AI-generated. Findings may contain errors. Those marked Verified have been manually reviewed.
Publishers can request a review.
Findings
Every page URL is sent to ytadskip.com on navigation
When a page finishes loading, Video Ad Block Youtube sends the page URL and referrer to ytadskip.com, along with a persistent browser ID that lets repeated browsing events be linked to the same installation over time.
- Severity
- Medium unwanted
- Type
- Unexpected
- CWE
- CWE-359
- Source
- Dynamic sandbox
You load or navigate to a top-level web page.
The content script also watches same-tab navigation changes in single-page apps.
The extension sends the page URL, referrer, and persistent browser ID to ytadskip.com.
The captured traffic included a Gmail URL, showing the behavior is not limited to YouTube pages.
- Current page URLhttps://mail.google.com/mail/u/0/#inbox
Shows the exact page you had open when the extension reported the pageview.
- Browser ID9a9a9897-4b66-41ce-9a8a-a51f38a0f4aa
Lets repeated pageviews be tied back to the same browser installation over time.
- Referrer URLhttps://mail.google.com/mail/u/0/
Shows where the navigation came from when the browser or extension has that context.
Dynamic analysis confirmed the request for a non-YouTube URL.
- Content-Type
- application/json
{ "uri": "https://mail.google.com/mail/u/0/#inbox", "uid": "9a9a9897-4b66-41ce-9a8a-a51f38a0f4aa", "dr": "https://mail.google.com/mail/u/0/"}Content script pageview message and service-worker POST
content.js pageview sender
content.js(() => { if (window.top !== window.self) return; if (!/^https?:$/.test(location.protocol)) return; let e = "", t = 0; const r = (r, d) => { const o = Date.now(); r === e && o - t < 5e3 || (e = r, t = o, chrome.runtime.sendMessage({ message: "pageview", uri: r, docref: d || "" }).catch((() => {}))) }, d = () => r(location.href, document.referrer); "loading" === document.readyState ? document.addEventListener("DOMContentLoaded", d, { once: !0 }) : d(), window.addEventListener("pageshow", (t => { t.persisted && location.href !== e && r(location.href, document.referrer) })); let o = location.href; const n = () => { const e = location.href; if (e === o) return; const t = o; o = e, r(e, t) }; document.addEventListener("__yt_adskip_spa_nav__", n), window.addEventListener("popstate", n)})()background.js service-worker sender
background.jspostData = async (t, e = {}) => { try { const a = await fetch(t, { method: "POST", credentials: "include", headers: { "Content-Type": "application/json" }, body: JSON.stringify(e) }); return await a.json() } catch (t) {}};chrome.runtime.onMessage.addListener((async (t, e) => { if ("pageview" !== t.message); else { if (handleRuntimeError(), e?.tab?.incognito) return; const a = e?.tab?.id, s = t.uri; let r = t.docref || ""; if (!isValidPage(s)) return; if (!r && null != a) { const t = await getFromSessionStorage("tab_initiators") || {}; t[a] && (r = t[a], delete t[a], await setToSessionStorage("tab_initiators", t)) } if (null != a) { const t = await getFromSessionStorage("tab_urls") || {}; t[a] = s, await setToSessionStorage("tab_urls", t) } const o = await getFromStorage("uid"); await postData(`${BURL}/dynamic/rules/get`, { uri: s, uid: o, dr: r }) }}))- ytadskip.com
Receives pageview POST requests containing the current URL, referrer, and persistent browser ID.
Referrer chain and cross-tab opener URLs sent to ytadskip.com on navigation
DA captured 12 POSTs to ytadskip.com/dynamic/rules/get; 4 carried a referrer, e.g. dr='accounts.google.com'.
The script sends document.referrer each load.
A new-tab link uses the opener's last URL. v3.4 tracked same-tab moves only.
- Severity
- Medium unwanted
- Type
- Unexpected
- CWE
- CWE-359
- Source
- Dynamic sandbox
You navigate to any page or follow a link into a new tab.
This fires on initial page load, back/forward navigation, and every SPA URL change.
The extension sends the destination URL, your persistent user ID, and the referring URL to ytadskip.com.
For new-tab links, the referrer field contains the opener tab's last-visited URL rather than the HTTP Referer header.
Returns ad-blocking rule configuration. dynamic analysis ID 621 captured 12 requests; 4 had non-empty dr values.
- Content-Type
- application/json
{ "uri": "https://myaccount.google.com/personal-info", "uid": "3f7a2c1b-9e04-4f8d-b1a0-2c5e6d7f8a9b", "dr": "https://accounts.google.com/"}- Page URLhttps://myaccount.google.com/personal-info
The full URL of the page you just loaded, including path and query string.
- Persistent user ID3f7a2c1b-9e04-4f8d-b1a0-2c5e6d7f8a9b
A UUID generated on install and stored permanently. Links every request to the same browser profile across all sites and sessions.
- Referring URLhttps://accounts.google.com/
The page you came from. For new-tab links, this is the opener tab's last URL, not a browser-supplied referrer header.
v3.4 vs v3.5 background: referrer and cross-tab initiator tracking added
v3.5 content.js — sends document.referrer
content.js (v3.5, lines 52-60)const r = (r, d) => { const o = Date.now(); r === e && o - t < 5e3 || (e = r, t = o, chrome.runtime.sendMessage({ message: "pageview", uri: r, docref: d || "" }).catch((() => {})))},d = () => r(location.href, document.referrer);v3.5 background.js — uses initiator as fallback referrer
background.js (v3.5, lines 41-56)let r = t.docref || "";if (!r && null != a) { const t = await getFromSessionStorage("tab_initiators") || {}; t[a] && (r = t[a], delete t[a], await setToSessionStorage("tab_initiators", t))}await postData(`${BURL}/dynamic/rules/get`, { uri: s, uid: o, dr: r })- ytadskip.com
Receives {uri, uid, dr} on every navigation. Run by the developer; also serves dynamic ad-blocking rules. No privacy policy URL disclosed in the store listing.