İçeriğe atla
Cloudflare Wiki

    gez · aç · Esc kapat

    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

    PanelAPIPlan
    (görünmez)cf.colo.idzorunlu, hepsi
    IPip.srchepsi
    IP with NAT supportcf.unique_visitor_idBusiness+
    Header value ofhttp.request.headers["<ad>"]ARL
    Cookie value ofhttp.request.cookies["<ad>"]ARL
    Query value ofhttp.request.uri.args["<ad>"]ARL
    Hosthttp.hostARL
    Pathhttp.request.uri.pathARL
    AS Numip.src.asnumARL
    Countryip.src.countryARL
    JA3 / JA4cf.bot_management.ja3_hash / .ja4ARL + Bot Management
    JSON string / integerlookup_json_string(...) / lookup_json_integer(...)ARL
    Form input value ofhttp.request.body.form["<ad>"]ARL
    JWT claim oflookup_json_string(http.request.jwt.claims[...][0], "<claim>")ARL
    Body / Body sizehttp.request.body.raw / .sizeARL
    Customözel ifadeARL

    IP with NAT support çerez tabanlı ve kendi tuzakları var:

    “relies on a cookie-based visitor identification mechanism (_cfuvid cookie).”

    “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ğerDavranış
    > 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_timeout value to 0 (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.host contains the original hostname. The rule matches as expected. Response phase (counter increment): … Origin Rules have already rewritten the Host header… 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

    AksiyonAPINot
    BlockblockVarsayılan 429; response.status_code ile 400–499 arası özelleştirilebiliyor. Ziyaretçide error 1015
    Managed Challengemanaged_challenge“Cloudflare recommends Managed Challenges for most WAF rules.”
    Non-Interactive Challengejs_challenge“typically takes less than five seconds”
    Interactive Challengechallenge“Cloudflare always recommends using a Managed Challenge.”
    Loglog“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
    İlk dört isteğin 200, beşinci ve altıncının 429 döndüğü çıktı

    Adım 2 — Sayma ifadesini ekle

    Yukarıdaki PATCH çağrısını uygula.

    Panelde “Increment counter when” alanının dolu göründüğü ve içinde eşleşme koşullarının tekrarlandığı

    Adım 3 — Aynı testi tekrarla

    Altı isteğin de 200 döndüğü çıktı

    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
    İlk dördünün 401, sonrakilerin challenge veya 403 aldığı çıktı

    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.

    /giris ile ilgisi olmayan bir yoldan gelen 403'lerin sayacı artırdığını gösteren olay kaydı

    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
    cf-ray son eklerinin sayımı — IST ve varsa ADB dağılımı

    Bu demoda ölçülenler:

    SenaryoNaif kuralSayma ifadeli kural
    6 başarılı giriş4×200, 2×4296×200
    6 başarısız giriş4×401, 2×4294×401, 2×challenge
    Meşru kullanıcı etkisikilitleniyoryok
    Saldırgan etkisi60 sn bloksürekli throttle
    Eşik öncesi geçen fazla istekölçölç
    Farklı cf-ray son ekisaysay

    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

    ARL olmayan bir zone'da listede yalnızca IP ve IP with NAT support'un bulunması

    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
        }
      }'
    API'nin döndürdüğü tam JSON hata gövdesi ve HTTP durum kodu

    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])"]
    İki denemenin de hata döndürdüğü çıktı

    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
    kiraci-B'nin isteklerinin, kiraci-A'nın trafiği yüzünden 429 alması

    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.

    counting_expression içeren kuralın Business zone'unda başarıyla oluşturulması

    Bu demoda ölçülenler:

    YetenekFreeProBusinessEnt (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ı125100100
    Adım 2’nin sonucuredredredredoluşturuldu

    Fiyatlandırma

    ÖzellikFreeProBusinessEnt (app security)Ent + ARL
    Kural sayısı125100100
    Sayım periyodu10 sn sabit≤1 dk≤10 dk≤65.535 sn≤65.535 sn
    Mitigation süresi10 sn sabit≤1 saat≤1 gün≤1 gün≤1 gün
    İfadede kullanılabilen alanlarPath, Verified Bot+ Host, URI, Full URI, Query+ Method, Source IP, User Agentgenel istek + header alanları+ gövde alanları
    Cache hariç tutma
    Özel sayma ifadesi
    Sayım modeliistek 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 ifadesine starts_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.id karakteristiğ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 the cf.colo.id characteristic 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-ray yanı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.src ve cf.unique_visitor_id var. 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'de true. 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 Host header… 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 modeThere 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 · Log aksiyonu 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 mutlaka 0 yapman 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_code ile 400–499 arası bir değer (varsayılan 429). Gövde en fazla 30 KB, içerik tipi application/json, text/html, text/xml veya text/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_limit Terraform 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.

    Hata bildir

    Yanlış bir rakam, eskimiş bir bilgi veya bozuk bir bağlantı mı buldun? Bildir, kaynağıyla birlikte kontrol edelim.