import requests
ACCOUNTS = [
{
"email": "...",
"api_key": "..."
},
{
"email": "...",
"api_key": "..."
}
]
def set_headers(email, api_key):
return {
"X-Auth-Email": email,
"X-Auth-Key": api_key,
"Content-Type": "application/json"
}
def get_zone_ids(headers):
url = "https://api.cloudflare.com/client/v4/zones"
zone_ids = []
page = 1
per_page = 50
while True:
response = requests.get(f"{url}?page={page}&per_page={per_page}", headers=headers)
if response.status_code != 200:
print(f"Ошибка получения зон: {response.text}")
break
zones = response.json().get("result", [])
if not zones:
break
for zone in zones:
zone_ids.append((zone['name'], zone['id']))
if len(zones) < per_page:
break
page += 1
print(f"Найдено {len(zone_ids)} зон.")
return zone_ids
def disable_ech(zone_id, zone_name, headers):
ech_url = f"https://api.cloudflare.com/client/v4/zones/{zone_id}/settings/ech"
payload = {"value": "off"}
response = requests.patch(ech_url, json=payload, headers=headers)
if response.status_code == 200:
print(f"ECH успешно отключен для зоны {zone_name}.")
else:
print(f"Ошибка при отключении ECH для зоны {zone_name}: {response.text}")
def apply_to_all_sites(zone_ids, headers):
for zone_name, zone_id in zone_ids:
disable_ech(zone_id, zone_name, headers)
def main():
for account in ACCOUNTS:
email = account["email"]
api_key = account["api_key"]
print(f"Работаем с аккаунтом: {email}")
headers = set_headers(email, api_key)
zone_ids = get_zone_ids(headers)
if not zone_ids:
print(f"Не удалось получить список зон для аккаунта {email}. Пропускаем...")
continue
apply_to_all_sites(zone_ids, headers)
if __name__ == "__main__":
main()