この記事は約3分で読めます。
本文は約2063文字です
CloudflareのDNSレコードを一括で削除する方法
1月 16, 2023

Cloudflareを利用する場合、DNSレコードの設定は必須です。
CloudflareのDNSレコードは既存のDNSレコードをスキャンして自動的に設定してくれますが、あまり精度がよくありません。
お名前.comでドメインを取得して、ネームサーバーを変更せずに、Cloudflareにドメイン追加してしまうと、不要なDNSレコードが大量に登録されてしまうこともあります。
Web上のインターフェスだと、不要なDSNレコードを削除したい時に、マウスでひとつづつ削除するしかなく、とてもやってられません。
CloudflareのDNS設定はエクスポートしたりインポートする機能があります。
それを使うと簡単にDNSレコードを登録できますが、残念なことに上書きではなく、追加されてしまいますので、不要なDNSレコードは手動で削除する必要があります。
CloudflareのAPIを使うと、一括で削除できますので、この記事でご紹介します。
記事の内容
CloudflareのDNSレコードを一括で削除するPHPスクリプト
個別に必要な情報
Cloud flareにログインして、以下の情報をメモして、スクリプト先頭の変数に設定します。
- zone id
- global api key
実行方法
php cf_dns_delete.php
スクリプト
<?php
$zoneid="<<zone id>>";
$apikey="<<global api key>>";
$apimail="<< email >>";
// Generated by curl-to-PHP: http://incarnate.github.io/curl-to-php/
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.cloudflare.com/client/v4/zones/'.$zoneid.'/dns_records');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
$headers = array();
$headers[] = 'X-Auth-Email: '.$apimail;
$headers[] = 'X-Auth-Key: '.$apikey;
$headers[] = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
$ids=array();
$res = json_decode($result);
foreach($res->result as $r){
echo $r->id."\n";
$ids[]=$r->id;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.cloudflare.com/client/v4/zones/'.$zoneid.'/dns_records/'.$record_id);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
}
関連リソース
まとめ
今回ご紹介したスクリプトがあれば、なんかの手違いでDNSレコードが大量に登録されてしまった時も、一度全部削除してやり直すことができます。

コメント