Skip to content

Instantly share code, notes, and snippets.

@AidasK
Last active May 12, 2024 11:27
Show Gist options
  • Star 40 You must be signed in to star a gist
  • Fork 17 You must be signed in to fork a gist
  • Save AidasK/9550e1eb97b3b121c5122aef0d778608 to your computer and use it in GitHub Desktop.
Save AidasK/9550e1eb97b3b121c5122aef0d778608 to your computer and use it in GitHub Desktop.
Cloudflare delete all DNS records. Just go to cloudflare dns zones, open your browers developer console and paste this javascript code.
// paste all of this in your browser developer console
deleteAllRecords();
async function deleteAllRecords() {
let e;
filterEditButtons().forEach((e) => e.click());
while (e = filterDeleteButtons()[0]) {
e.click();
await confirmDelete();
}
}
function filterDeleteButtons() {
return [
...[...document.querySelectorAll('a')].filter((e) => e.innerHTML === '<span>Delete</span>'),
...[...document.querySelectorAll('button')].filter((e) => e.innerHTML === 'Delete'),
];
}
function filterEditButtons() {
return [
...document.querySelectorAll('a'),//old layout
...document.querySelectorAll('button')
].filter((e) => e.innerHTML.indexOf('<span>Edit</span>') != -1 );
}
function confirmDelete(iteration) {
iteration = iteration || 1;
return new Promise((resolve, reject) => {
setTimeout(async () => {
let button = [...document.querySelectorAll('button')].filter((e) => e.innerHTML === '<span>Delete</span>')[0];
if (button) {
button.click();
await waitConfirmDelete();
resolve();
} else if (iteration > 30) {
console.log('failed confirmDelete');
reject();
} else {
confirmDelete(iteration + 1)
}
}, 100);
});
}
function waitConfirmDelete() {
return new Promise((resolve, reject) => {
let iteration = 1;
let i = setInterval(() => {
if (iteration++ > 30) {
clearInterval(i);
reject();
return;
}
if ([...document.querySelectorAll('button')].filter((e) => e.innerHTML === '<span>Delete</span>')[0]) {
return;
}
clearInterval(i);
resolve();
}, 100)
});
}

image

Real developers are not used to clicking, it's allways easier to write a script to do it for you.
@iRajatDas
Copy link

Wow, thanks a lot!!

@informdev
Copy link

You Cadillac of men!

@rycasestorable
Copy link

The only truly functional method. I will create a local script for the API, however this is great thank you for contributing!

@WizCraker
Copy link

Quick and dirty in the browser is so much easier than trying to use the API for a handful of domains.

@chaiwebs
Copy link

Nice

@Ehsanghodratiofficial
Copy link

thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment