(() => {
function reqListener() {
if (this.status !== 200 || this.responseText === "" || this.response === "") {
alert("adblock");
} else {
(() => {
let video = '<iframe width="560" height="315" src="https://www.youtube.com/embed/Fy2rtb95QhY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>';
let createDiv = document.createElement("div");
document.body.appendChild(createDiv);
createDiv.innerHTML = video;
})();
}
}
var oReq = new XMLHttpRequest();
oReq.addEventListener("load", reqListener);
oReq.open("GET", "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js");
oReq.send();
})();
Alert will be displayed, because this.response returns "".
If pagead2.googlesyndication.com/pagead/js/adsbygoogle.js is not blocked then video player is loaded.
Basically the same issue as here - https://github.com/AdguardTeam/Scriptlets/issues/199#issuecomment-1063271758, but for
response
(currently onlyresponseText
is modified).Steps to reproduce:
Run this script:
Alert will be displayed, because
this.response
returns""
. Ifpagead2.googlesyndication.com/pagead/js/adsbygoogle.js
is not blocked then video player is loaded.In this line: https://github.com/AdguardTeam/Scriptlets/blob/804c53527008e62ffcd296e3f36543c472b96fe5/src/scriptlets/prevent-xhr.js#L206 if
response
is a text then it probably should be set tomodifiedResponseText
.