# Kazıma sırasında 429 Çok Fazla İstek: Ne anlama gelir ve nasıl düzeltilir

> Bir scraper için HTTP 429 Çok Fazla İstek'in anlamı, Retry-After'ı nasıl okursunuz, Python'da gecikme kodu. Yavaşlayın; kaçmayın.

- URL: https://crawlrelay.com/tr/docs/errors/429-too-many-requests/
- Son güncelleme: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

HTTP durum kodu (4xx, istemci hatası): her araçta tam hata mesajı, olası nedenler sırasıyla ve işe yarayan çözüm.

**Hızlı cevap — Konut proxy ile 429 Too Many Requests ne anlama gelir?**

**429 Çok Fazla İstek** sitenin sizi hız sınırlandırdığı anlamına gelir: belirli bir zaman aralığında kabul ettiğinden fazla istek gönderdiniz. Çözüm, daha az istek göndermektir, gizlenmek değil. CrawlRelay konut proxy'leri ile, `Retry-After` başlığına uyun, sunucu başı eşzamanlılığı sınırlandırın ve rastgele gecikme ile üsse dayalı geri çekilme uygulayın. IP değiştirmek bir sitenin yayımladığı limiti aşmaktır ve çoğu kullanım şartını ihlal eder.

## 429 Too Many Requests hızlı bakış

| Özellik | Değer |
| --- | --- |
| Hata | 429 Too Many Requests |
| Tür | HTTP durum kodu (4xx, istemci hatası) |
| Gönderen | Hedef web sitesi veya onun API geçidi |
| Tanımlandığı yer | RFC 6585, section 4 (Retry-After: RFC 9110, section 10.2.3) |
| Tekrar denemek ister misiniz? | Evet, Retry-After gecikmesi veya üssel geri çekilme sonrası |
| İlk kontrol | Retry-After başlığını ve sunucu başına saniyedeki istek sayınızı okuyun |

## 429 Too Many Requests ne anlama gelir?

RFC 6585, hız sınırı için 429'u tanıttı. Sunucu, geri gelme zamanını belirtmek için `Retry-After` başlığı ekler; bu saniye sayısı ya da bir HTTP tarihi olabilir. API'lar genellikle kendi başlıklarını da ekler, örneğin `X-RateLimit-Remaining`.

429, bir sitenin scraper'a verebileceği en kibar cevaptır. İçerik erişilebilir, sadece mevcut hızınızda değil. 429'lar dikkate alınmazsa, siteler genellikle 403, CAPTCHA veya kalıcı engellemelere geçer.

## Python, curl, Node.js ve tarayıcılarda a 429 nasıl görünür?

Aynı başarısızlık her araçta farklı şekilde görünür. Loglarınızda aramanız gereken mesajlar şunlardır:

- **Python requests / httpx:** `status_code == 429` başlığı, sıklıkla `Retry-After: 30` ile birlikte
- **Scrapy:** 429 varsayılan `RETRY_HTTP_CODES` içinde `RetryMiddleware` tarafından işlenir
- **curl:** `HTTP/2 429` ve ardından `retry-after:` yanıt başlıklarında
- **API'lar:** `{"error": "rate_limited"}` tarzı JSON gövde

## a 429 neden olur?

Öncelikle en olası sebep:

- **Sunucu başı fazla eşzamanlılık:** Bir alan adına elli paralel çalışan çoğu siteye saldırı gibi görünebilir.
- **İstekler arası gecikmesizlik veya eş anlık sabit gecikme** birçok çalışanı aynı anda hizalar.
- **Geri çekilmeden denemeler:** İlk 429 sonrası deneme fırtınası yükü çarpar.
- **Paylaşılan limitler:** Bazı siteler istekleri IP değil, hesap, API anahtarı ya da oturum çerezi bazında sayar.
- **Ağır istek noktaları:** Arama ve filtre URL'leri statik sayfalardan daha katı limitlere sahiptir.

## a 429 nasıl adım adım teşhis edilir?

1. İlk 429'da `Retry-After` değeri ve diğer hız sınırı başlıklarını kaydedin.
2. Toplam hızınız değil, gerçek sunucu başı istek hızınızı ölçün.
3. Limitin IP, çerez ya da API anahtarı bazında mı olduğunu kontrol edin: birer birer değiştirerek.
4. Site API'sini veya robots.txt dokümanını okuyun; `Crawl-delay` satırı istediği tempoyu belirtir.

*Başarısız URL'yi curl ile test edin (HTTP portu, detaylı çıktı)*

```bash
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:PASSWORD@gw.crawlrelay.com:7777 https://TARGET_URL

# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URL
```

## a 429 nasıl düzeltilir?

- **Retry-After'a uyun.** Sunucunun istediği süre kadar bekleyin.
- **Sunucu başı eşzamanlılığı sınırlandırın**, sadece global değil. Scrapy'nin `CONCURRENT_REQUESTS_PER_DOMAIN` ve `AUTOTHROTTLE_ENABLED` seçenekleri var.
- **Jitter ile üssel geri çekilme uygulayın:** 1 sn, 2 sn, 4 sn gibi, üzerine rastgele ek, maksimum sınırla.
- **Daha az istekte bulunun.** Yanıtları önbelleğe alın, `If-Modified-Since` veya `If-None-Match` gönderin, değişmeyen sayfaları atlayın.
- **Resmi API'yi kullanın** varsa; limitleri genellikle belgelenmiştir.

*Python: Retry-After, üssel gecikme ve jitter ile tekrar deneme*

```python
import random
import time

import requests

PROXY = "http://USERNAME:PASSWORD@gw.crawlrelay.com:7777"
PROXIES = {"http": PROXY, "https": PROXY}
RETRY_STATUSES = {429, 502, 503, 504}


def fetch(url, attempts=5, timeout=(10, 30)):
    for attempt in range(attempts):
        try:
            r = requests.get(url, proxies=PROXIES, timeout=timeout)
        except (requests.exceptions.ConnectionError, requests.exceptions.Timeout):
            r = None  # dropped exit, reset or timeout: a new connection gets a new exit
        if r is not None and r.status_code not in RETRY_STATUSES:
            return r
        retry_after = r.headers.get("Retry-After", "") if r is not None else ""
        if retry_after.isdigit():
            wait = int(retry_after)
        else:
            wait = min(60, 2 ** attempt) + random.uniform(0, 1)
        time.sleep(wait)
    raise RuntimeError("giving up on %s after %d attempts" % (url, attempts))
```

## a 429 sonrası tekrar denenmeli mi?

Evet, 429 daha sonra tekrar denenmek içindir. Sunucu gecikme `Retry-After` göndermişse bekleyin, yoksa jitter ile artırılan üssel geri çekilme kullanın ve bir sınır koyun. Sunucu başı art arda 429 sayısı izlensin ve artınca eşzamanlılık azaltılsın. Aşağıdaki Python fonksiyonu temel kısmı yapar.

## 429 Too Many Requests CrawlRelay için nasıl geçerli?

CrawlRelay yolu ile gelen 429, hedefin kendi başlık ve gövdesini taşır: limit siteye aittir ve sunucu başı hız kontrolü sizin işinizdir. Bir site istekleri oturum başına sayıyorsa yapışkan oturumlar kullanın ki hızınız ölçülebilir kalsın, sayılara başlamak için [eşzamanlılık kılavuzu](https://crawlrelay.com/tr/docs/concurrency/)'na bakın.

Gateway: `gw.crawlrelay.com`, port 7777 (HTTP, HTTPS CONNECT üzerinden) ve port 7778 (SOCKS5). Kullanıcı adı formatı: `USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}`. İlgili: [403 Forbidden](https://crawlrelay.com/tr/docs/errors/403-forbidden/) · [503 Service Unavailable](https://crawlrelay.com/tr/docs/errors/503-service-unavailable/) · [Eşzamanlılık Rehberi](https://crawlrelay.com/tr/docs/concurrency/).

## 429 Too Many Requests: geliştiricilerin sorduğu sorular

### 429 hatalarını önlemek için IP değiştirilmeli mi?

Hayır. 429 site tarafından yavaşlamanız için yapılan istektir. Aynı istek hızını daha fazla IP'ye yaymak, IP başına limitin altına kalmak için kaçma sayılır ve çoğu kullanım şartı yasaktır. Devir, yükü dağıtmak ve konum için faydalıdır, yayımlanmış limiti aşmak için değil. İstek hızınızı düşürün ve önbelleği kullanın.

### 429'dan sonra ne kadar beklemeliyim?

`Retry-After` başlığındaki saniye sayısı kadar ya da belirtilen tarihe kadar bekleyin. Başlık yoksa 1-2 saniyeden başlayın, ardından her 429 sonrası gecikmeyi iki katına çıkarın, rastgele ekleyin ve yaklaşık bir dakikada sınırlandırın. Daha düşük hızda devam edin, 429'a neden olan hızda değil.

### Dakikada birkaç istekle neden 429 alıyorum?

Limit IP değil, hesap, çerez veya API anahtarı bazında olabilir veya istek noktası maliyetli olabilir (ör. arama sayfası). Bazı siteler bot olarak sınıflandırdıklarına düşük sınır koyar. Yanıt başlıklarını ve API belgelerini kontrol edin, daha fazlasına ihtiyacınız varsa siteyle iletişime geçin.

## Bu referanstaki diğer proxy hataları

- [401 Unauthorized vs 407](https://crawlrelay.com/tr/docs/errors/401-unauthorized/)
- [403 Forbidden](https://crawlrelay.com/tr/docs/errors/403-forbidden/)
- [407 Proxy Authentication Required](https://crawlrelay.com/tr/docs/errors/407-proxy-authentication-required/)
- [429 Too Many Requests](https://crawlrelay.com/tr/docs/errors/429-too-many-requests/)
- [502 Bad Gateway](https://crawlrelay.com/tr/docs/errors/502-bad-gateway/)
- [503 Service Unavailable](https://crawlrelay.com/tr/docs/errors/503-service-unavailable/)
- [504 Gateway Timeout](https://crawlrelay.com/tr/docs/errors/504-gateway-timeout/)
- [Cannot connect to proxy (ProxyError)](https://crawlrelay.com/tr/docs/errors/cannot-connect-to-proxy/)
- [Connection reset by peer (ECONNRESET)](https://crawlrelay.com/tr/docs/errors/connection-reset/)
- [ERR_PROXY_CONNECTION_FAILED](https://crawlrelay.com/tr/docs/errors/err-proxy-connection-failed/)
- [ERR_TUNNEL_CONNECTION_FAILED](https://crawlrelay.com/tr/docs/errors/err-tunnel-connection-failed/)
- [Read timed out (ReadTimeout)](https://crawlrelay.com/tr/docs/errors/read-timeout/)
- [SOCKS5 proxy errors](https://crawlrelay.com/tr/docs/errors/socks5-proxy-errors/)
- [SSL: CERTIFICATE_VERIFY_FAILED](https://crawlrelay.com/tr/docs/errors/ssl-certificate-verify-failed/)
- [SSL: WRONG_VERSION_NUMBER](https://crawlrelay.com/tr/docs/errors/ssl-wrong-version-number/)

**Başarısızlık durumları için dokümanlı konut proxy'ler** $0,50/GB sitesinden süresi hiç bitmeyen CrawlRelay konut proxy [Fiyatları gör](https://crawlrelay.com/tr/pricing/) · [Hızlı başlangıç](https://crawlrelay.com/tr/docs/)

---

CrawlRelay: CrawlRelay, kazıyıcılar ve AI veri hatları için geliştirici odaklı dönen konut proxy ve 4G/5G mobil proxy hizmetidir: süresiz, kullanılan kadar ödenen trafik $0,50/GB'dan itibaren, kripto ile ödenir, kimlik yüklemesi yoktur. KYC yok — kimlik, selfie veya belge istemez. Kripto ile ödeyin.
