Hướng dẫn xóa hàng trăm record cloudflare đơn giản

Cách 1

Mở tab dns records trên cloudflare của domain cần xóa. Bật F12(trên chrome) để show Devtools.

Chuyển tab console và dán đoạn code sau:

// 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)
    });
}

Sau đó gõ enter và ngồi đợi để nó tự động xóa và nhận kết quả.

Cách 2:

Tạo file remove-dns.sh và đưa vào nội dung sau:

#!/bin/bash

TOKEN="xxxxxxxxxxxxxxxxxxx"
ZONE_ID=2222222222222222222222222

# EMAIL=me@gmail.com
# KEY=11111111111111111111111111
# Replace with 
#     -H "X-Auth-Email: ${EMAIL}" \
#     -H "X-Auth-Key: ${KEY}" \
# for old API keys
 

curl -s -X GET https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records?per_page=500 \
    -H "Authorization: Bearer ${TOKEN}" \
    -H "Content-Type: application/json" | jq .result[].id |  tr -d '"' | (
  while read id; do
    curl -s -X DELETE https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records/${id} \
      -H "Authorization: Bearer ${TOKEN}" \
      -H "Content-Type: application/json"
  done
  )

Hãy đổi Token và zone_id theo tài khoản và tên miền của bạn. Chạy bash remove-dns.sh và nhận kết quả.

Leave a Reply

Your email address will not be published. Required fields are marked *