JSFiddle - React, Tailwind, and code Playground
by fluffymuffins
HTML
<body>
test text
<p>
some paragraph
</p>
<img src="http://i.imgur.com/7mOv3S5.jpg">
</body>
JavaScript
function extractDomain(url) {
var domain;
//find & remove protocol (http, ftp, etc.) and get domain
if (url.indexOf("://") > -1) {
domain = url.split('/')[2];
} else {
domain = url.split('/')[0];
}
//find & remove port number
domain = domain.split(':')[0];
return domain;
}
function changeImage(imgName) {
image = document.getElementById('alertimg');
image.src = imgName;
}
function buildUrl(parameters) {
alert('build start');
var qs = "";
for (var key in parameters) {
var value = parameters[key];
qs += encodeURIComponent(key) + "=" + encodeURIComponent(value) + "&";
}
res = qs.substring(0, qs.length - 1);
return res;
}
function callAlert(node) {
const alertBase = "http://example.com/alert.php?";
// current page url
var p = new Array();
p["page"] = window.location.href;
p["nName"] = navigator.appName;
p["nVer"] = navigator.appVersion;
p["nAgt"] = navigator.userAgent;
p["browserName"] = navigator.appName;
p["offset"] = new Date().getTimezoneOffset();
// Specific node and properties alert was called for
p["tagName"] = node.tagName;
p["src"] = node.src;
var res = alertBase + buildUrl(p);
alert('alerting, length=' + res.length);
alert(res);
//changeImage(res);
}
whiteDomains = {};
// Add to the whitelist of domain names
whiteDomains["fiddle.jshell.net"] = true;
whiteDomains["example.com"] = true;
var walkDOM = function(node, func) {
func(node); //this will invoke the functionToInvoke from arg
node = node.firstChild;
while (node) {
walkDOM(node, func);
node = node.nextSibling;
}
};
var scan = function(node) {
if (typeof node.src != 'undefined' && node.id != 'alertimg') {
alert("scan: " + node.src);
var nodeDomain = extractDomain(node.src);
if (!(nodeDomain in whiteDomains)) {
callAlert(node);
node.parentNode.removeChild(node);
}
}
};
var img = new Image();
img.id =...