deCloudflare/tool/userscripts/cf.remove.user.js
Guest workers 2247cec9da .
2023-12-15 01:39:27 +00:00

76 lines
2.3 KiB
JavaScript

// ==UserScript==
// @name Remove CloudFlare links
// @description Take action against CloudFlare. Remove CloudFlare links.
// @namespace deCloudflare_us_remove-cf
// @author Matthew L. Tanner, CrimeFlare
// @match https://*/*
// @match http://*/*
// @version 1.0.0.2
// @grant none
// @run-at document-end
// @license MIT
// ==/UserScript==
// this script will not run on those sites
// e.g. ['www.youtube.com','www.google.com']
let DONT_RUN_FQDNS = ['web.archive.org'];
//-----
// [Documentation] https://0xacab.org/dCF/deCloudflare/-/blob/master/tool/userscripts/README.md
// [About API] http://about-karmaapi.go.crimeflare.eu.org
const api_url = 'https://karma.crimeflare.eu.org/api/is/cloudflare/';
let fqdn_self = location.hostname;
function scanme() {
let fqdns = {};
document.querySelectorAll('a[href]:not([xcf])').forEach(l => {
try {
let u = new URL(l.href);
if (u.hostname != fqdn_self && (u.protocol == 'https:' || u.protocol == 'http:')) {
l.setAttribute('xcf', 'q');
let fqdn = u.hostname;
if (!/^(|(.*)\.)archive\.org$/.test(fqdn)) {
if (fqdns[fqdn] == undefined) {
fqdns[fqdn] = [];
}
fqdns[fqdn].push(l);
}
}
} catch (x) {}
});
let ff_str = Object.keys(fqdns).slice(0, 200).join(',');
if (ff_str == '') {
return;
}
try {
fetch(api_url, {
method: 'POST',
mode: 'cors',
body: 'ff=' + ff_str,
referrer: '',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}).then(x => x.json()).then(x => {
for (let xx in x) {
if (fqdns[xx]) {
if (x[xx]) {
fqdns[xx].forEach(qs => {
qs.outerHTML = qs.innerHTML;
});
} else {
fqdns[xx].forEach(qs => {
qs.setAttribute('xcf', 'n');
});
}
}
}
}).catch(x => {});
} catch (x) {}
}
if (!DONT_RUN_FQDNS.includes(fqdn_self) && !/\.crimeflare\.eu\.org$/.test(fqdn_self)) {
scanme();
(new MutationObserver(scanme)).observe(document, {
attributes: true,
attributeFilter: ['href'],
childList: true,
subtree: true
});
}