10 tane clodfare hesap açtım
her siteye 50 tane site belirledim
ip adres belli
api token de aldım
puty üzerinden çalıştıracağım
yapay zekaya sordum çıkmaza girdim
Whatsapp:
https://wa.me/+905350579988
Merhaba,
- Token yetkisi. Sadece Zone:Read almışsan zone eklemez. Token'da şunlar olacak: Account > Account Settings > Read, Zone > Zone > Edit, Zone > DNS > Edit. Resource kısmında da o hesabın account'unu seçeceksin, "All accounts" değil.
- Account ID. Zone eklerken account id şart. Her hesap için farklı, dashboard'dan veya /accounts endpoint'inden alacaksın.
- Free planda hesap başına 50 zone sınırı var — zaten 10 hesap × 50 demişsin, doğru kurgulamışsın. 51.'de 1117 hatası alırsın, panik yapma, limit odur.
Klasör kurulumu ;
/root/cf/ ├── cf.sh ├── hesap01/domains.txt ├── hesap02/domains.txt
Her domains.txt içine alt alta 50 domain (sadece site.com, başında http/www olmasın).
cf.sh: #!/bin/bash
# Kullanım: ./cf.sh <token> <account_id> <domains.txt> <ip>
set -u
TOKEN="$1"
ACCOUNT="$2"
LIST="$3"
IP="$4"
API="https://api.cloudflare.com/client/v4"
OUT="ns_$(date +%s).csv"
cf() { curl -s -X "$1" "$API$2" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
${3:+--data "$3"}; }
echo "domain,zone_id,ns1,ns2,durum" > "$OUT"
while read -r D; do
D=$(echo "$D" | tr -d '\r' | xargs)
[ -z "$D" ] && continue
# 1) Zone ekle
R=$(cf POST "/zones" "{\"name\":\"$D\",\"account\":{\"id\":\"$ACCOUNT\"},\"type\":\"full\"}")
OK=$(echo "$R" | jq -r '.success')
if [ "$OK" != "true" ]; then
# zaten ekliyse id'yi çek, devam et
ZID=$(cf GET "/zones?name=$D" | jq -r '.result[0].id // empty')
if [ -z "$ZID" ]; then
echo "$D,,,,HATA: $(echo "$R" | jq -c '.errors')" >> "$OUT"
echo "[X] $D -> $(echo "$R" | jq -r '.errors[0].message')"
sleep 1; continue
fi
echo "[!] $D zaten ekli, devam"
else
ZID=$(echo "$R" | jq -r '.result.id')
fi
NS=$(cf GET "/zones/$ZID" | jq -r '.result.name_servers | @csv' | tr -d '"')
# 2) A kayıtları (proxy açık)
cf POST "/zones/$ZID/dns_records" \
"{\"type\":\"A\",\"name\":\"$D\",\"content\":\"$IP\",\"ttl\":1,\"proxied\":true}" > /dev/null
cf POST "/zones/$ZID/dns_records" \
"{\"type\":\"A\",\"name\":\"www\",\"content\":\"$IP\",\"ttl\":1,\"proxied\":true}" > /dev/null
# 3) SSL ve yönlendirme ayarları
cf PATCH "/zones/$ZID/settings/ssl" '{"value":"full"}' > /dev/null
cf PATCH "/zones/$ZID/settings/always_use_https" '{"value":"on"}' > /dev/null
echo "$D,$ZID,$NS,OK" >> "$OUT"
echo "[✓] $D -> $NS"
sleep 0.5 # rate limit: 5 dk'da 1200 istek
done < "$LIST"
echo "Bitti. NS listesi: $OUT"
#!/bin/bash
# Kullanım: ./cf.sh <token> <account_id> <domains.txt> <ip>
set -u
TOKEN="$1"
ACCOUNT="$2"
LIST="$3"
IP="$4"
API="https://api.cloudflare.com/client/v4"
OUT="ns_$(date +%s).csv"
cf() { curl -s -X "$1" "$API$2" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
${3:+--data "$3"}; }
echo "domain,zone_id,ns1,ns2,durum" > "$OUT"
while read -r D; do
D=$(echo "$D" | tr -d '\r' | xargs)
[ -z "$D" ] && continue
# 1) Zone ekle
R=$(cf POST "/zones" "{\"name\":\"$D\",\"account\":{\"id\":\"$ACCOUNT\"},\"type\":\"full\"}")
OK=$(echo "$R" | jq -r '.success')
if [ "$OK" != "true" ]; then
# zaten ekliyse id'yi çek, devam et
ZID=$(cf GET "/zones?name=$D" | jq -r '.result[0].id // empty')
if [ -z "$ZID" ]; then
echo "$D,,,,HATA: $(echo "$R" | jq -c '.errors')" >> "$OUT"
echo "[X] $D -> $(echo "$R" | jq -r '.errors[0].message')"
sleep 1; continue
fi
echo "[!] $D zaten ekli, devam"
else
ZID=$(echo "$R" | jq -r '.result.id')
fi
NS=$(cf GET "/zones/$ZID" | jq -r '.result.name_servers | @csv' | tr -d '"')
# 2) A kayıtları (proxy açık)
cf POST "/zones/$ZID/dns_records" \
"{\"type\":\"A\",\"name\":\"$D\",\"content\":\"$IP\",\"ttl\":1,\"proxied\":true}" > /dev/null
cf POST "/zones/$ZID/dns_records" \
"{\"type\":\"A\",\"name\":\"www\",\"content\":\"$IP\",\"ttl\":1,\"proxied\":true}" > /dev/null
# 3) SSL ve yönlendirme ayarları
cf PATCH "/zones/$ZID/settings/ssl" '{"value":"full"}' > /dev/null
cf PATCH "/zones/$ZID/settings/always_use_https" '{"value":"on"}' > /dev/null
echo "$D,$ZID,$NS,OK" >> "$OUT"
echo "[✓] $D -> $NS"
sleep 0.5 # rate limit: 5 dk'da 1200 istek
done < "$LIST"
echo "Bitti. NS listesi: $OUT" putty ile çalıştırma ; apt install -y jq curl # jq yoksa hiçbir şey çalışmaz
chmod +x cf.sh
./cf.sh "TOKEN_BURAYA" "ACCOUNT_ID_BURAYA" hesap01/domains.txt 1.2.3.4
10 hesap için tek tek uğraşma, hesaplar.csv yapıp döndür:
# format: token;account_id;liste_dosyasi;ip
while IFS=';' read -r t a l i; do
./cf.sh "$t" "$a" "$l" "$i"
done < hesaplar.csv
Takıldığın yerdeki tam hata çıktısını (.errors kısmını) atarsan daha net bakabilirim. Ücretli destek almak isterseniz
whatsapp dan ulaşabilirsiniz