Merhabalar,

Son zamanlarda artan ihtiyaçlarım sebebiyle Cloudflare da bulunan +100 domain için tek tek işlem yapmaktansa toplu işlemleri kolayca yaptığım Python betiğini paylaşmak istedim.
Umarım bir çok kişinin işini görecektir.

Kullanım amacı:
Cloudflare Hesabınızda kayıtlı tüm domainlerin tek seferde A kaydı bulunan IP numaralarını değiştirmeye yarayacak,

Faydaları:
Cloudflare tarafında fazlaca domain sahibi olanlar sunucu değişikliği yaptığında tek seferde IP değiştirebilecek. Böylelikle, 1 günden fazla vakit kazanılmış olacak.


Öncelikle,
CloudFlare hesabınıza giriş yapın ve aşağıdaki linkten API oluşturun.
https://dash.cloudflare.com/profile/api-tokens

Adımları takip edin,









İşlem sonucunda size api verecek, bunu not edin.

Bilgisayarınızda Python yüklü değil ise indirip yükleyin.
https://www.python.org/downloads/

Komut İstemi açıp gerekli kütüphaneyi yükleyin.
pip install requests

Sonrasında aşağıdaki betiği kopyalayıp CF_A_Update.py dosyası oluşturun.

Python IDE ile Run yapın.

import requests

#BRKNET Danışmanlık
# API token ve yeni IP adresi
api_token = 'XXXX'  # Cloudflare API token numaranızı buraya yazın
old_ip = 'XXXX'  # Güncellemek istediğiniz mevcut IP adresini buraya yazın
new_ip = 'XXXX'  # Değişmesini istediğiniz Yeni IP adresinizi buraya yazın

headers = {
    'Authorization': f'Bearer {api_token}',
    'Content-Type': 'application/json'
}

# Hesaptaki tüm zone ID'lerini ve isimlerini alma
def get_zones():
    url = 'https://api.cloudflare.com/client/v4/zones'
    response = requests.get(url, headers=headers)
    response.raise_for_status()  # Hata kontrolü
    return response.json()

# Belirli bir zone içindeki DNS kayıtlarını getirme
def get_dns_records(zone_id):
    url = f'https://api.cloudflare.com/client/v4/zones/{zone_id}/dns_records'
    response = requests.get(url, headers=headers)
    response.raise_for_status()  # Hata kontrolü
    return response.json()

# DNS kaydını güncelleme
def update_dns_record(zone_id, record_id, new_ip, name, proxied):
    url = f'https://api.cloudflare.com/client/v4/zones/{zone_id}/dns_records/{record_id}'
    data = {
        'type': 'A',
        'name': name,
        'content': new_ip,
        'proxied': proxied
    }
    response = requests.put(url, headers=headers, json=data)
    response.raise_for_status()  # Hata kontrolü
    return response.json()

# Tüm zone'ları al
zones = get_zones()

for zone in zones['result']:
    zone_id = zone['id']
    zone_name = zone['name']
    print(f"Zone: {zone_name}, ID: {zone_id}")

    # Her zone için DNS kayıtlarını al
    dns_records = get_dns_records(zone_id)

    for record in dns_records['result']:
        if record['type'] == 'A' and record['content'] == old_ip:
            update_response = update_dns_record(zone_id, record['id'], new_ip, record['name'], record['proxied'])
            print(f"Updated: {record['name']} from {old_ip} to {new_ip}, Status: {update_response['success']}")

print("A tipi DNS kayıtları güncellendi.")
Sonuç