Rate Limiting
İstek hızını sayıp eşiği aşanı engelliyor. Ama sayaçlar veri merkezi başına tutuluyor, IP dışında sayım yapmak Enterprise eklentisi istiyor ve sistem yük altında sessizce fail-open çalışıyor.
- DurumGenel kullanımda
- FiyatPlana dahil; Advanced Rate Limiting ayrı Enterprise eklentisi
- Ücretsiz katmanvar
- Doğrulama
Rate Limiting nedir?
İstek hızını sayıp belirlediğin eşiği aşan istemcilere bir aksiyon uygulayan kural ailesi. WAF’ın
http_ratelimit fazında, custom rules’tan sonra ve managed rules’tan önce çalışıyor.
Ama ürünü doğru kullanmanın anahtarı, adında olmayan bir ayrım: eşleşme ile sayma iki ayrı ifade.
Nasıl çalışır?
Sayaçlar veri merkezi başına
“Cloudflare tracks request rates by maintaining separate counters for each unique combination of values in a rule’s characteristics.”
Sayım karakteristikleri
| Panel | API | Plan |
|---|---|---|
| (görünmez) | cf.colo.id | zorunlu, hepsi |
| IP | ip.src | hepsi |
| IP with NAT support | cf.unique_visitor_id | Business+ |
| Header value of | http.request.headers["<ad>"] | ARL |
| Cookie value of | http.request.cookies["<ad>"] | ARL |
| Query value of | http.request.uri.args["<ad>"] | ARL |
| Host | http.host | ARL |
| Path | http.request.uri.path | ARL |
| AS Num | ip.src.asnum | ARL |
| Country | ip.src.country | ARL |
| JA3 / JA4 | cf.bot_management.ja3_hash / .ja4 | ARL + Bot Management |
| JSON string / integer | lookup_json_string(...) / lookup_json_integer(...) | ARL |
| Form input value of | http.request.body.form["<ad>"] | ARL |
| JWT claim of | lookup_json_string(http.request.jwt.claims[...][0], "<claim>") | ARL |
| Body / Body size | http.request.body.raw / .size | ARL |
| Custom | özel ifade | ARL |
IP with NAT support çerez tabanlı ve kendi tuzakları var:
“relies on a cookie-based visitor identification mechanism (
_cfuvidcookie).”
“Visitors who clear cookies, use private browsing, or do not accept cookies will not be individually identified. Requests from these visitors share a single counter bucket, which can cause false positives in high-traffic NAT environments.”
“You cannot use both IP with NAT support and IP as characteristics of the same rate limiting rule.”
mitigation_timeout — iki anlamı birden taşıyor
| Değer | Davranış |
|---|---|
> 0 | “Perform action during the selected duration” — eşik aşılınca o süre boyunca aksiyon uygulanıyor |
0 | “Throttle requests over the maximum configured rate” — limit üstündekilere aksiyon, diğerlerine izin |
Geçerli API değerleri (parametreler sayfası): 0, 10, 60, 120, 300, 600, 3600, 86400.
Challenge aksiyonlarında plan kısıtı:
“Customers on Free, Pro, and Business plans cannot select a duration when using a challenge action — their rate limiting rule will always perform request throttling… If you are on a Free, Pro, or Business plan and are using the API, you must enable request throttling by setting the
mitigation_timeoutvalue to0(zero).”
Ve throttling’in bir avantajı var: “When visitors pass a challenge, their corresponding request counter is set to zero.”
Cache ve sayım
Cache hariç tutmayı açtığında sayım yanıt fazına kayıyor ve iki yan etkisi oluyor:
1. Workers alt istekleri:
“Cloudflare may count Workers subrequests on the same zone as separate requests, which will cause a rate limiting rule to trigger sooner than expected.”
Çözüm: and (cf.worker.upstream_zone == "" or cf.worker.upstream_zone != "<ZONE>")
2. Origin Rules tuzağı:
“Request phase (rule matching): The expression is evaluated against the original request, where
http.hostcontains the original hostname. The rule matches as expected. Response phase (counter increment): … Origin Rules have already rewritten theHostheader… As a result, the rule matches requests but never increments the counter, and the rate limit is never enforced.”
Ayrıca: sayma ifadesinde bir yanıt alanı kullanmak origin’e gitmeyi zorluyor — “The request is sent to the origin, skipping any cached content, because the rate limiting rule includes a response field.”
Doğruluk ve fail-open
Yapılandırma kısıtları: filtre ifadesinde custom list varsa cache hariç tutmayı açmak zorunda kalıyorsun · filtre ifadesi yanıt alanı içeremiyor · sayma ifadesi yanıt alanı ve custom list’i aynı anda içeremiyor · “Rate limiting rules must appear at the end of the rules list.”
Aksiyonlar
| Aksiyon | API | Not |
|---|---|---|
| Block | block | Varsayılan 429; response.status_code ile 400–499 arası özelleştirilebiliyor. Ziyaretçide error 1015 |
| Managed Challenge | managed_challenge | “Cloudflare recommends Managed Challenges for most WAF rules.” |
| Non-Interactive Challenge | js_challenge | “typically takes less than five seconds” |
| Interactive Challenge | challenge | “Cloudflare always recommends using a Managed Challenge.” |
| Log | log | “Only available on Enterprise plans.” |
Özel yanıt gövdesi en fazla 30 KB; içerik tipi application/json, text/html, text/xml veya
text/plain.
Ne zaman kullanılır, ne zaman kullanılmaz
Kullanılır
- Giriş uçlarında kaba kuvveti yavaşlatmak için. Sayma ifadesiyle yalnızca başarısızları sayarsan meşru kullanıcıya dokunmuyorsun.
- Pahalı uçları korumak için — arama, rapor üretimi, dosya yükleme.
- Tek bir istemcinin API’ni dövmesini engellemek için.
Kullanılmaz
Meşru trafik dalgalanmalarında. Kampanya, bilet satışı, Kara Cuma — bunlar kuyruk problemi, ceza problemi değil. Doğru araç Waiting Room: “Waiting Room protects your origin server by preventing surges in legitimate traffic.”
Dağıtık otomasyona karşı. Rate limiting sayıyor, sınıflandırmıyor. 10.000 IP’ye yayılmış bir botnet hiçbir zaman IP başına eşiği aşmıyor — ve sayaçlar veri merkezi başına olduğu için küresel dağılmış bir saldırgan daha da zor yakalanıyor: “Traffic distributed across many data centers may keep per-data-center rates below the threshold even when the aggregate rate exceeds it.” Doğru araç Bot Management.
Proxy’lemediğin bir formu korumak için. Turnstile Cloudflare’den trafik geçirmeden çalışıyor.
XHR/JSON API’de challenge aksiyonuyla. Challenge sayfaları HTML dönüyor ve fetch() çağrısını
kırıyor. Turnstile Pre-clearance kullan.
Kesinlik gerektiren kotalarda. Faturalama, lisans sınırı, API planı kotası — hiçbiri için uygun değil. Kesin sayı garantisi yok ve fail-open sessiz.
Ücretsiz planda ciddi bir şey beklerken. 1 kural, yalnızca IP, sabit 10 saniye, sayma ifadesi yok, Log yok. Kaba bir yavaşlatıcı.
IP dışında sayım gerekiyorsa ve Enterprise değilsen. Kiracı, API anahtarı veya kullanıcı başına limit koyamıyorsun — ve bunun operasyonel bedeli Demo 2’de görünüyor.
Somut örnekler
Naif kural (her isteği sayıyor)
RULESET=$(curl -sS ".../zones/$ZONE_ID/rulesets/phases/http_ratelimit/entrypoint" \
-H "Authorization: Bearer $CF_API_TOKEN" | jq -r '.result.id')
curl ".../zones/$ZONE_ID/rulesets/$RULESET/rules" --request POST \
-H "Authorization: Bearer $CF_API_TOKEN" \
--json '{
"description": "Giris — naif",
"expression": "(http.request.uri.path eq \"/giris\" and http.request.method eq \"POST\")",
"action": "block",
"ratelimit": {
"characteristics": ["cf.colo.id", "ip.src"],
"period": 60, "requests_per_period": 4, "mitigation_timeout": 60
}
}'
cf.colo.id API’de elle yazılmak zorunda — panelde otomatik ekleniyor.
Doğru kural (yalnızca başarısızları sayıyor)
curl ".../zones/$ZONE_ID/rulesets/$RULESET/rules/$RULE_ID" --request PATCH \
-H "Authorization: Bearer $CF_API_TOKEN" \
--json '{
"description": "Giris — yalnizca basarisizlari say",
"expression": "(http.request.uri.path eq \"/giris\" and http.request.method eq \"POST\")",
"action": "managed_challenge",
"ratelimit": {
"characteristics": ["cf.colo.id", "ip.src"],
"period": 60, "requests_per_period": 4,
"mitigation_timeout": 0,
"counting_expression": "http.request.uri.path eq \"/giris\" and http.request.method eq \"POST\" and http.response.code in {401 403}"
}
}'
Üç detay: sayma ifadesi eşleşme ifadesini tekrarlıyor · mitigation_timeout: 0 Business’ta
challenge ile zorunlu · yanıt alanı kullanıldığı için sayım yanıt fazında yapılıyor.
Özel yanıt gövdesi
--json '{
"action": "block",
"action_parameters": { "response": {
"status_code": 429,
"content_type": "application/json",
"content": "{\"hata\":\"cok fazla istek\",\"tekrar_dene\":60}"
}}
}'
Workers alt isteklerini dışlamak
http.request.uri.path eq "/api/veri"
and (cf.worker.upstream_zone == "" or cf.worker.upstream_zone != "ornek.com.tr")
Advanced Rate Limiting — kiracı başına sayım
{
"characteristics": ["cf.colo.id", "http.request.headers[\"x-api-key\"]"],
"period": 60, "requests_per_period": 100, "mitigation_timeout": 600
}
Bu, ARL olmadan reddediliyor. Demo 2 tam olarak bunu ölçüyor.
Karmaşıklık bazlı sınırlama (yalnızca ARL)
Origin’in her yanıtta sayısal bir skor başlığı döndürmesi gerekiyor:
“The value must be between 1 and 1,000,000… If the origin server does not provide the HTTP response header with a score value or if the score value is outside of the allowed range, the corresponding rate limiting counter will not be updated.”
Parametreler: score_per_period, period, score_response_header_name.
Demo 1: Naif kuralın meşru kullanıcıyı kilitlediğini kanıtlamak
Adım 1 — Naif kuralı kur ve başarılı girişlerle dene
for i in $(seq 1 6); do
curl -sS -o /dev/null -w "istek $i -> %{http_code}\n" "https://ornek.com.tr/giris" \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data 'kullanici=ayse@ornek.com.tr&parola=DOGRU-PAROLA'
done
Adım 2 — Sayma ifadesini ekle
Yukarıdaki PATCH çağrısını uygula.
Adım 3 — Aynı testi tekrarla
Adım 4 — Kaba kuvvet dene
for i in $(seq 1 6); do
curl -sS -o /dev/null -w "hatali $i -> %{http_code}\n" "https://ornek.com.tr/giris" \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data "kullanici=ayse@ornek.com.tr&parola=tahmin-$i"
done
Adım 5 — Sayma ifadesini eksik yazıp tuzağı göster
Sayma ifadesinden eşleşme koşullarını çıkar, yalnızca http.response.code in {401 403} bırak.
Sonra sitenin başka bir yolunda 403 üret.
Adım 6 — Veri merkezi etkisini ölç
for i in $(seq 1 20); do
curl -sS -o /dev/null -D - "https://ornek.com.tr/giris" --data 'x=1' \
| tr -d '\r' | awk 'tolower($1)=="cf-ray:"{print $2}'
done | awk -F- '{print $2}' | sort | uniq -c
Bu demoda ölçülenler:
| Senaryo | Naif kural | Sayma ifadeli kural |
|---|---|---|
| 6 başarılı giriş | 4×200, 2×429 | 6×200 |
| 6 başarısız giriş | 4×401, 2×429 | 4×401, 2×challenge |
| Meşru kullanıcı etkisi | kilitleniyor | yok |
| Saldırgan etkisi | 60 sn blok | sürekli throttle |
| Eşik öncesi geçen fazla istek | ölç | ölç |
Farklı cf-ray son eki | say | say |
Demo 2: Advanced Rate Limiting sınırını kanıta çevirmek
Bu demo bir tablo iddiasını gözlemlenebilir hâle getiriyor.
Adım 1 — Panelde seçenek listesini göster
Adım 2 — API’den header bazlı kural dene
curl -i ".../zones/$ZONE_ID/rulesets/$RULESET/rules" --request POST \
-H "Authorization: Bearer $CF_API_TOKEN" \
--json '{
"description": "API anahtari basina limit — ARL gerektirir",
"expression": "(starts_with(http.request.uri.path, \"/api/\"))",
"action": "block",
"ratelimit": {
"characteristics": ["cf.colo.id", "http.request.headers[\"x-api-key\"]"],
"period": 60, "requests_per_period": 100, "mitigation_timeout": 600
}
}'
Adım 3 — Diğer ARL karakteristiklerini de dene
# JSON gövde alanı
"characteristics": ["cf.colo.id", "lookup_json_string(http.request.body.raw, \"kiraci_id\")"]
# Özel ifade
"characteristics": ["cf.colo.id", "lower(http.request.headers[\"x-kiraci\"][0])"]
Adım 4 — Operasyonel bedeli göster
Aynı IP’den, farklı API anahtarlarıyla iki kiracı:
for i in $(seq 1 60); do curl -sS -o /dev/null -w '%{http_code} ' \
"https://ornek.com.tr/api/kayitlar" -H "x-api-key: kiraci-A"; done; echo
for i in $(seq 1 60); do curl -sS -o /dev/null -w '%{http_code} ' \
"https://ornek.com.tr/api/kayitlar" -H "x-api-key: kiraci-B"; done; echo
Adım 5 — Business’ta neyin olduğunu da göster
Sayma ifadesi ve cache hariç tutma ARL değil, Business özelliği. İkisini de Business zone’unda kur ve çalıştığını göster.
Bu demoda ölçülenler:
| Yetenek | Free | Pro | Business | Ent (app sec) | Ent + ARL |
|---|---|---|---|---|---|
ip.src | ✅ | ✅ | ✅ | ✅ | ✅ |
cf.unique_visitor_id | ✘ | ✘ | ✅ | ✅ | ✅ |
| Header / Cookie / Query / Host / Path | ✘ | ✘ | ✘ | ✘ | ✅ |
| JSON / Body / Form / JWT | ✘ | ✘ | ✘ | ✘ | ✅ |
counting_expression | ✘ | ✘ | ✅ | ✅ | ✅ |
requests_to_origin | ✘ | ✘ | ✅ | ✅ | ✅ |
| Karmaşıklık bazlı | ✘ | ✘ | ✘ | ✘ | ✅ |
| Block ile throttle | ✘ | ✘ | ✘ | ✅ | ✅ |
| Kural sayısı | 1 | 2 | 5 | 100 | 100 |
| Adım 2’nin sonucu | red | red | red | red | oluşturuldu |
Fiyatlandırma
| Özellik | Free | Pro | Business | Ent (app security) | Ent + ARL |
|---|---|---|---|---|---|
| Kural sayısı | 1 | 2 | 5 | 100 | 100 |
| Sayım periyodu | 10 sn sabit | ≤1 dk | ≤10 dk | ≤65.535 sn | ≤65.535 sn |
| Mitigation süresi | 10 sn sabit | ≤1 saat | ≤1 gün | ≤1 gün | ≤1 gün |
| İfadede kullanılabilen alanlar | Path, Verified Bot | + Host, URI, Full URI, Query | + Method, Source IP, User Agent | genel istek + header alanları | + gövde alanları |
| Cache hariç tutma | ✘ | ✘ | ✅ | ✅ | ✅ |
| Özel sayma ifadesi | ✘ | ✘ | ✅ | ✅ | ✅ |
| Sayım modeli | istek sayısı | istek sayısı | istek sayısı | istek sayısı | + karmaşıklık skoru |
Log aksiyonu | ✘ | ✘ | ✘ | ✅ | ✅ |
“Enterprise customers must have application security on their contract to get access to rate limiting rules. The number of rules depends on the exact contract terms.”
Lisanslama ve hukuki çerçeve
Hizmet tescillidir ve Cloudflare Hizmet Şartları’na tabidir.
_cfuvid çerezi. “IP with NAT support” karakteristiğini kullanıyorsan Cloudflare bir çerez
yerleştiriyor. Teknik olarak zorunlu bir güvenlik çerezi — tek işi aynı IP arkasındaki ziyaretçileri
ayırt etmek. Çerez politikanda zorunlu çerezler altında listele. Ama şunu bil: çerezi reddeden
ziyaretçiler “share a single counter bucket” — yani gizliliğini koruyan kullanıcılar birbirini
etkiliyor.
IP adresi işleme. Varsayılan sayım karakteristiği ip.src — yani her rate limiting kuralı IP
adresi işliyor. Bu KVKK kapsamında kişisel veri. İşleme amacı güvenlik ve meşru menfaat çerçevesinde
değerlendirilebilir, ama aydınlatma metninde belirtilmesi gerekiyor. Cloudflare bu konuda hiçbir
Türkiye’ye özgü metin yayımlamıyor.
Kaynak IP adli incelemesi. Bir kullanıcı engellendiğinde bunu Security Events’ten görebiliyorsun — ama saklama süresi kısa: Free ve Pro 24 saat, Business 3 gün, Enterprise 30 gün. Bir şikâyet üzerine geriye dönüp “bu kullanıcı neden engellendi” sorusuna cevap vermen gerekiyorsa Logpush ile kendi deponuza aktarman gerekiyor.
Sık yapılan hatalar
Sayma ifadesine eşleşme ifadesini eklememek. Sayaç tüm zone’daki eşleşmeleri sayıyor.
API’de cf.colo.id’yi unutmak. Panel otomatik ekliyor, API eklemiyor.
requests_to_origin’i panel seçeneğiyle aynı anlamda sanmak. Tersi.
API’de header adını büyük harfle yazmak. Küçük harf zorunlu.
Eksik alan ile boş değeri karıştırmak. Ayrı sayaç kovaları oluşuyor; len(...) > 0 ekle.
IP ile IP with NAT support’u aynı kuralda kullanmak. Yasak.
Free, Pro veya Business’ta challenge aksiyonuna süre vermek. mitigation_timeout mutlaka 0.
Origin Rules ile Host’u yeniden yazıp sayma ifadesinde eski hostname’i kullanmak. Kural eşleşiyor ama sayaç hiç artmıyor.
Workers alt isteklerini dışlamamak. Kural beklenenden erken tetikleniyor.
Sayaçların küresel olduğunu varsaymak. Veri merkezi başına — Türkiye’de iki şehir var.
Kesin sayı garantisi beklemek. Birkaç saniyelik gecikme ve sinyalsiz fail-open.
Verified bot’lara rate limit uygulayıp SEO’yu bozmak. Eski sürümdeki muafiyet yeni sürümde yok.
Eski cloudflare_rate_limit Terraform resource’unu kullanmak. 15 Haziran 2025’te kapandı.
Business’taki sayma ifadesini ARL sanıp gereksiz eklenti almak. Sayma ifadesi ve cache hariç tutma Business özelliği.
Sıkça sorulan sorular
- Sayma ifadesi eşleşme ifadesini kapsıyor mu?
- Hayır — ve bu ürünün bir numaralı tuzağı. Birebir: “The counting expression does not extend the rule expression. If you set a custom counting expression, it will not automatically extend the rule matching expression. Therefore, you may wish to include the matching expression in the counting expression.” Cloudflare'in kendi örneği:
/api/altında 403 alanları saymak istiyorsan sayma ifadesinestarts_with(...)koşulunu tekrar yazman gerekiyor; yoksa “any response with a 403 status code on any URL would increase the counter.” - Sayaçlar küresel mi?
- Hayır. Birebir: “Cloudflare does not support global rate limiting counters across the entire network. Each data center maintains its own counters.” Her kuralda görünmeyen ve zorunlu bir
cf.colo.idkarakteristiği var: “This characteristic does not appear in the rule configuration in the dashboard, but it is added behind the scenes. When creating rate limiting rules via API, you must include thecf.colo.idcharacteristic explicitly.” - Türkiye'de bu ne anlama geliyor?
- Cloudflare'in Türkiye'de iki şehri var — Istanbul, TR ve Izmir, TR. Trafiğin ikiye bölünürse efektif limitin iki katına çıkabilir, çünkü her veri merkezi kendi sayacını tutuyor. Hangi merkezin işlediğini
cf-rayyanıt başlığının son üç harfinden görebilirsin. Not: “The exception is when Cloudflare has multiple data centers associated with a given geographical location. In that case, those data centers share counters.” — İstanbul ve İzmir'in aynı coğrafi grupta olup olmadığı belgelenmemiş, ölçmen gerekiyor. - API key başına limit koymak istiyorum, seçenek yok.
- IP dışındaki tüm sayım karakteristikleri (Header, Cookie, Query, Host, Path, ASN, Country, JA3/JA4, JSON alanı, Body, Form input, JWT claim, Custom) Enterprise + Advanced Rate Limiting istiyor. Business'ta yalnızca
ip.srcvecf.unique_visitor_idvar. Dikkat: özel sayma ifadesi ve cache hariç tutma Business'ta zaten var — bunları ARL ile karıştırma. - Başarılı girişleri de sayıyor, kullanıcılarım kilitleniyor.
- Naif bir kural her isteği sayıyor. Sayma ifadesi (Business ve üzeri) ile yalnızca başarısızları say:
… and http.response.code in {401 403}. Ama eşleşme ifadesini içine tekrar yazmayı unutma. Yanıt alanı kullandığın anda sayım yanıt gönderildikten sonra yapılıyor. - Cache hit sayaca giriyor mu?
- Varsayılan olarak evet. Kapatmak için “Also apply rate limiting to cached assets” seçeneğini kapatman gerekiyor — ve API alanı ters anlamlı: “Field name in the API:
requests_to_origin(optional, with the opposite meaning of the Cloudflare dashboard option).” Panelde kapalı = API'detrue. Bu özellik Business ve üzeri. - Kural eşleşiyor ama sayaç hiç artmıyor.
- Muhtemelen Origin Rules ile Host başlığını yeniden yazıyorsun. Birebir: istek fazında ifade orijinal hostname'le eşleşiyor, ama yanıt fazında (sayaç artışı) “Origin Rules have already rewritten the
Hostheader… As a result, the rule matches requests but never increments the counter, and the rate limit is never enforced.” - Kural beklenenden erken tetikleniyor.
- Aynı zone'daki Workers alt istekleri ayrı istek olarak sayılıyor olabilir — bu, cache hariç tutma açıkken oluyor. Çözüm: sayma ifadesine
and (cf.worker.upstream_zone == "" or cf.worker.upstream_zone != "<ZONE>")ekle. - Tam olarak N istek geçmesini garanti edebilir miyim?
- Hayır. Birebir: “Rate limiting rules are not designed to allow a precise number of requests to reach your origin server. There may be a delay of up to a few seconds…” Ve daha sert olanı: “Cloudflare rate limiting rules operate in fail-open mode… There is no customer-visible signal for fail-open events.” Faturalama veya lisans kotası gibi kesinlik gerektiren işler için yanlış katman.
- Ücretsiz planda ne yapabilirim?
- Çok az. 1 kural · yalnızca
ip.src· sabit 10 saniyelik sayım periyodu · sabit 10 saniyelik mitigation · cache hariç tutma yok · sayma ifadesi yok ·Logaksiyonu yok. Kaba bir giriş kaba kuvvet yavaşlatıcısı; ötesi değil. - Challenge aksiyonuyla süre verebilir miyim?
- Enterprise değilsen hayır. Birebir: “Customers on Free, Pro, and Business plans cannot select a duration when using a challenge action — their rate limiting rule will always perform request throttling.” API'de
mitigation_timeout'u mutlaka0yapman gerekiyor. Ve throttling'de bir bonus var: “When visitors pass a challenge, their corresponding request counter is set to zero.” - 429 yerine başka bir kod dönebilir miyim?
- Evet.
response.status_codeile 400–499 arası bir değer (varsayılan 429). Gövde en fazla 30 KB, içerik tipiapplication/json,text/html,text/xmlveyatext/plain. Ziyaretçi tarafında bu error 1015 olarak görünüyor. - Challenge SPA'imi bozuyor.
- Beklenen. Birebir: “Challenge Pages interrupt the request flow by returning a full HTML page… This mechanism fails when the browser expects a non-HTML response, such as an AJAX or XHR (fetch) request.” Cloudflare'in çözümü: [Turnstile](/urunler/turnstile/) Pre-clearance — kullanıcı bir HTML sayfada doğrulanıyor,
cf_clearanceçerezi alıyor, API çağrıları challenge yemiyor. - Rate Limiting kullanım bazlı mı faturalanıyor?
- İki resmî sayfa çelişiyor. Faturalama sayfası onu tüketim bazlı ürünler tablosunda listeliyor (faturalanan metrik: “Rule requests”). Ama rate limiting dokümanı diyor ki: “The previous version of Rate Limiting was billed based on usage… while the new version is included in Cloudflare plans” ve eski sürüm “is no longer available.” Değerlendirmemiz: faturalama sayfasındaki satır emekli ürünün kalıntısı. Hiçbir yerde istek başı fiyat yayımlanmıyor.
- Eski Rate Limiting API'si çalışıyor mu?
- Hayır. Birebir: “The Rate Limiting API and the
cloudflare_rate_limitTerraform resource… stopped being supported on 2025-06-15 and are no longer available.” Ayrıca bir davranış farkı: eski sürümde “Cached resources and known Search Engine crawlers are exempted” idi — yeni sürümde değil, ve doküman uyarıyor: “Applying rate limiting rules to verified bots might affect SEO.”
İlgili servisler
- WAFSQL injection, XSS ve bilinen zafiyet istismarlarını request origin’e ulaşmadan engeller.
- Bot ManagementHer request’e bot skoru verir; kazıyıcı, kimlik doldurma ve stok kapma trafiğini ayırır.
- TurnstileKullanıcıya bulmaca çözdürmeyen CAPTCHA alternatifi.
- Waiting RoomAni yoğunlukta kullanıcıları kuyruğa alır; sitenin çökmesini önler.
Bu sayfadaki fiyat ve özellik bilgileri 1 Eylül 2026 tarihinde Cloudflare’in resmî kaynaklarından doğrulanmıştır. Cloudflare fiyatlandırmasını önceden haber vermeden değiştirebilir; bağlayıcı bilgi içinresmî sayfaya bakın.