Rehber
Proxy Hata Kodları Rehberi: 407, 403, 429, 502 ve Timeout Nasıl Çözülür
407 kimlik bilgisidir, 403 ve 429 hedef sitenin kararıdır, 502 ve 504 proxy ile hedef arasındaki yoldur. Hatayı doğru katmana bağlayın, cURL ve Python ile çözün.
Kısa cevap
- `407 Proxy Authentication Required` her zaman proxy’den gelir: kullanıcı adı/şifreyi, şifredeki özel karakterlerin yüzde kodlamasını ve IP whitelist’i kontrol edin.
- `403` ve `429` çoğunlukla hedef sitenin kararıdır; `429` için `Retry-After` değerine uyun ve tek IP’deki eşzamanlılığı azaltın.
- `502`, `503` ve `504` proxy’nin hedefe ulaşamadığını veya zamanında yanıt alamadığını gösterir; tekil olanlar yeniden denemeyle çözülür.
- Connect timeout proxy’ye ulaşılamadığını, read timeout hedefin yavaş kaldığını anlatır; ikisine ayrı süre verin.
- `curl -v` çıktısında `200 Connection established` satırından önceki hata proxy’ye, sonraki hata hedef siteye aittir.
Proxy hata kodu, isteğin hangi katmanda durduğunu söyler. 407 proxy’nin sizi tanımadığını, 403 ve 429 çoğunlukla hedef sitenin isteği reddettiğini, 502 ve 504 ise proxy ile hedef arasındaki bağlantının koptuğunu gösterir. Timeout ve “tunnel connection failed” mesajları da aynı mantıkla okunur: önce hatayı kimin ürettiğini bulun, sonra o katmanı düzeltin.
Bu rehber en sık görülen kodları üç gruba ayırır: kimlik doğrulama, hedef site reddi ve ağ/zaman aşımı. Her biri için tipik nedeni, ilk bakılacak yeri ve cURL ile Python’da nasıl göründüğünü verir. Örneklerde WeProxy gateway adresi gw.weproxy.com.tr:8989 kullanılır; USER ve PASSWORD paneldeki bilgilerinizdir.
Hatayı kim üretti: proxy mi, hedef site mi?
Bir proxy isteğinde iki ayrı bağlantı vardır. Birincisi istemci ile proxy arasındadır. İkincisi proxy ile hedef site arasındadır. Hata kodu bu iki bağlantıdan birinde üretilir ve çözüm de o tarafta yapılır.
HTTPS isteklerinde istemci önce proxy’ye CONNECT example.com:443 gönderir. Proxy 200 Connection Established dönerse tünel kurulmuştur ve bundan sonra gelen her HTTP kodu hedef siteye aittir. Proxy tüneli kurmazsa, hata CONNECT yanıtında gelir: 407, 403, 502 gibi. Bu ayrımı görmenin en hızlı yolu curl -v çıktısıdır:
curl -v -x "http://USER:[email protected]:8989" https://api.ipify.org
Çıktıda < HTTP/1.1 200 Connection established satırını görüyorsanız proxy işini yapmıştır. Hata bu satırdan sonra geliyorsa sorun hedef taraftadır. CONNECT satırının yanıtı hatalıysa sorun proxy bağlantısındadır. Düz HTTP (TLS’siz) isteklerde CONNECT yoktur; burada yanıttaki Server, Via veya cf-ray gibi başlıklar kodun kaynağını ele verir.
Kural olarak:
407her zaman proxy’den gelir.403,429ve CAPTCHA çoğunlukla hedef sitenin kararıdır.502,503,504proxy’nin hedefe ulaşamadığını veya zamanında yanıt alamadığını anlatır.- İstemci tarafı hatalar (
curl: (7),ProxyError,ERR_PROXY_CONNECTION_FAILED) HTTP kodu bile oluşmadan, proxy’ye ulaşılamadığında görülür.
407 Proxy Authentication Required
407, proxy’nin isteği kimlik doğrulaması olmadan kabul etmediğini söyler. RFC 9110 bu kodu tanımlar; proxy yanıtta Proxy-Authenticate başlığı gönderir, istemci de bir sonraki istekte Proxy-Authorization ile kimlik bilgisini taşır.
En sık nedenler:
- Yanlış kullanıcı adı veya şifre. Panelden kopyalarken başa veya sona boşluk eklenmesi çok yaygındır.
- Özel karakterler kodlanmamış. Şifrede
@,:,/,#veya%varsa proxy URL’si içinde yüzde kodlaması gerekir.p@ssşifresi URL’dep%40ssolarak yazılır. Kodlanmazsa istemci@işaretinden sonrasını host sanar. - IP whitelist eşleşmiyor. Kimlik bilgisi göndermeden IP yetkilendirmesiyle çalışıyorsanız, çıkış yaptığınız IP panelde kayıtlı olmalıdır. Ev internetinde IP değiştiyse veya sunucu farklı bir IPv6 adresinden çıkıyorsa
407alırsınız. - İstemci kimlik bilgisini göndermiyor. Bazı kütüphaneler proxy kimlik bilgisini yalnızca URL’den okur, bazıları ayrı bir parametre ister. Tarayıcı eklentileri ise şifreli proxy’de açılır pencere bekler.
- Paket süresi veya bakiyesi. Aktif olmayan bir paketin bilgileri doğru olsa da kabul edilmez. Panelde paketin durumunu kontrol edin.
WeProxy paketlerinde kullanıcı adı/şifre ve IP whitelist yöntemleri HTTP ve SOCKS5 üzerinde birlikte kullanılabilir. Kimlik bilgisini birden fazla araçta kullanacaksanız biçimi elle yazmak yerine proxy format dönüştürücü ile ip:port:user:pass ve URL biçimleri arasında çevirin.
Python’da şifreyi güvenli kodlamak için:
from urllib.parse import quote
user = "USER"
password = quote("p@ss:w0rd/1", safe="")
proxy = f"http://{user}:{password}@gw.weproxy.com.tr:8989"
proxies = {"http": proxy, "https": proxy}
403 Forbidden ve 429 Too Many Requests
403, isteğin anlaşıldığını ama reddedildiğini söyler. Proxy kullanırken bunu çoğunlukla hedef sitenin güvenlik katmanı (WAF, bot koruması, CDN kuralı) üretir. Proxy’nin kendisi 403 döndürüyorsa genellikle CONNECT aşamasında, izin verilmeyen bir port veya hedef için olur.
Hedef kaynaklı 403 için tipik nedenler şunlardır: IP adresinin itibarı düşük, IP türü siteye uymuyor (örneğin datacenter IP’leri toptan engelleyen bir site), ülke kısıtlaması var ya da istek başlıkları gerçek bir tarayıcıya benzemiyor. IP değiştirmek ilk refleks olsa da, User-Agent, Accept-Language ve çerez tutarlılığı düzelmeden yeni IP de aynı yanıtı alır.
429 ise açıkça hız sınırıdır. RFC 6585 bu kodu tanımlar ve sunucu çoğunlukla Retry-After başlığıyla ne kadar beklemeniz gerektiğini söyler. Sayaç genellikle IP başına tutulur; aynı çıkış IP’sinden çok sayıda eşzamanlı istek gönderdiğinizde devreye girer.
WeProxy paketlerinde eşzamanlı bağlantı ve thread sınırı yoktur. Bu yüzden 429 aldığınızda sınırı koyan taraf neredeyse her zaman hedef sitedir. Yapılacaklar:
Retry-Afterdeğerine uyun, yoksa üstel geri çekilme (1, 2, 4, 8 saniye) kullanın.- Tek IP’ye yığılan eşzamanlılığı azaltın.
- İstek başına IP değiştirmek oturum gerektirmeyen işler için uygundur. Oturum gerektiren işlerde sticky oturum kullanın; ayrım için sticky mi rotating mi rehberine bakın.
- Güven puanı yüksek IP gereken hedeflerde rotating residential proxy veya uzun süreli tek kimlik gerekiyorsa ISP proxy tercih edin.
Hız sınırını aşmak için IP havuzunu büyütmek, hedefin kullanım şartlarını ihlal ediyorsa çözüm değildir. Otomasyon, hedefin izin verdiği yüzeyde ve kabul edilebilir kullanım kurallarıyla birlikte yürütülmelidir.
502, 503 ve 504: proxy hedefe ulaşamadı
Bu üç kod “gateway” ailesidir ve proxy’nin hedef tarafında bir sorun yaşadığını gösterir.
502 Bad Gateway: Proxy hedefe bağlandı ama geçerli bir yanıt alamadı veya bağlantı kurulamadı. Hedef sunucu kapalı olabilir, proxy tarafında hedef alan adı çözülememiş olabilir ya da residential havuzda kullanılan çıkış cihazı bağlantı sırasında çevrimdışı olmuş olabilir. Residential ve mobil IP’ler gerçek cihazlardan geldiği için tekil 502 normaldir; tekrar denemek çoğu zaman yeterlidir.
503 Service Unavailable: Hedef sunucu veya ara katman geçici olarak hizmet vermiyor. Hedef sitenin bakım sayfası ya da aşırı yük koruması bu kodu döndürür. Retry-After varsa ona uyun.
504 Gateway Timeout: Proxy hedeften zamanında yanıt alamadı. Yavaş bir API, uzak bir coğrafya veya ağır bir sayfa bu kodu tetikler. Proxy ile hedef arasındaki mesafeyi kısaltmak için çıkış ülkesini hedef sunucuya yakın seçmek işe yarar.
Ayırt etmek için aynı URL’yi proxy olmadan da açın. Proxy’siz de hata alıyorsanız sorun hedef sitededir. Yalnızca proxy ile alıyorsanız ve tekrar denemede düzeliyorsa havuzdaki tekil bir çıkışın sorunu vardır. Sürekli tekrarlıyorsa destek ekibine hangi hedef, hangi saat ve hangi paketle olduğunu iletin.
Timeout ve bağlantı hataları
Zaman aşımı iki farklı aşamada olur ve ikisi farklı şey anlatır:
- Connect timeout: İstemci proxy’ye TCP bağlantısı açamadı. Gateway adresi yanlış, port kapalı ya da yerel ağ/firewall bağlantıyı engelliyor.
- Read timeout: Bağlantı kuruldu ama yanıt süresi doldu. Bu genellikle hedefin yavaşlığından veya uzun bir yanıt zincirinden kaynaklanır.
İkisini ayırmak için kütüphanenize iki ayrı süre verin. Python requests için timeout=(10, 30) bağlantıya 10, okumaya 30 saniye tanır. Tek bir süre verirseniz her iki aşama aynı değeri kullanır ve teşhis zorlaşır.
Proxy’ye hiç ulaşılamıyorsa önce yerel tarafı doğrulayın: port kontrol aracı ile gw.weproxy.com.tr adresinde 8989 portunun dışarıdan açık göründüğünü, ardından kendi ağınızın bu porta çıkışa izin verdiğini kontrol edin. Kurumsal ağlar ve bazı bulut sağlayıcıları standart dışı portlara çıkışı kapatır.
Tarayıcılarda aynı durum farklı adlarla görünür. Chrome ERR_PROXY_CONNECTION_FAILED mesajını proxy’ye bağlanamadığında, ERR_TUNNEL_CONNECTION_FAILED mesajını ise proxy’ye bağlanıp tüneli kuramadığında gösterir. İkincisinde 407 veya 502 gibi bir proxy yanıtı arka planda yatar.
Hata kodları tablosu
| Kod / mesaj | Kim üretir | Olası neden | İlk kontrol |
|---|---|---|---|
407 | Proxy | Yanlış kimlik bilgisi, kodlanmamış şifre, whitelist dışı IP | Şifreyi yüzde kodlayın, paneldeki whitelist’i kontrol edin |
403 | Çoğunlukla hedef | WAF, IP itibarı, ülke kısıtı, tutarsız başlıklar | Başlıkları ve IP türünü kontrol edin |
429 | Hedef | IP başına hız sınırı | Retry-After, eşzamanlılığı düşürün |
502 | Proxy (hedef tarafı) | Hedef kapalı, çıkış cihazı düştü | Tekrar deneyin, proxy’siz test edin |
503 | Hedef veya ara katman | Bakım, aşırı yük | Retry-After’a uyun |
504 | Proxy (hedef tarafı) | Hedef yavaş, coğrafi mesafe | Okuma süresini artırın, yakın ülke seçin |
curl: (5) | İstemci | Proxy adı çözülemedi | Gateway adını ve DNS’i kontrol edin |
curl: (7) | İstemci | Proxy’ye bağlanılamadı | Port ve firewall |
curl: (28) | İstemci | Zaman aşımı | Bağlantı ve okuma süresini ayırın |
curl: (35) | İstemci | TLS el sıkışması başarısız | Proxy şemasını (http:// / socks5h://) kontrol edin |
curl: (56) | İstemci | Bağlantı aktarım sırasında koptu | Tekrar deneyin, tünel yanıtına bakın |
curl: (97) | İstemci | Proxy el sıkışması başarısız (SOCKS) | Kimlik bilgisi ve protokol |
curl: (35) çoğu zaman bir HTTP proxy’ye https:// şemasıyla bağlanmaya çalışıldığında görülür. Proxy URL’sinin şeması proxy’nin protokolünü anlatır, hedefin değil. HTTPS hedeflere gitmek için de proxy adresi http:// ile yazılır.
SOCKS5 hata yanıtları
SOCKS5 HTTP kodu kullanmaz. RFC 1928 bağlantı isteğine bir “reply” alanıyla yanıt verir. Kütüphaneler bu değeri genellikle mesaj olarak gösterir:
| Değer | Anlamı | Tipik neden |
|---|---|---|
0x01 | Genel hata | Proxy tarafında beklenmeyen sorun |
0x02 | Kurallarca izin verilmiyor | Hedef veya port engelli |
0x03 | Ağa ulaşılamıyor | Çıkış ağı hedefe yol bulamadı |
0x04 | Host’a ulaşılamıyor | Hedef adres yanıt vermiyor |
0x05 | Bağlantı reddedildi | Hedef port kapalı |
0x06 | TTL süresi doldu | Yönlendirme döngüsü veya uzun yol |
0x07 | Komut desteklenmiyor | Örneğin UDP ASSOCIATE desteklenmeyen pakette |
0x08 | Adres türü desteklenmiyor | IPv6 hedef IPv4-only çıkışta |
Kimlik doğrulama SOCKS5’te ayrı bir adımdır (RFC 1929). Kullanıcı adı/şifre reddedilirse bağlantı “authentication failed” benzeri bir mesajla kapanır; bu, HTTP’deki 407’nin karşılığıdır. DNS’in proxy tarafında çözülmesi için socks5:// yerine socks5h:// kullanın; aksi halde DNS sızıntısı oluşur. Ayrıntı DNS sızıntısı rehberinde, protokol farkı ise HTTP vs SOCKS5 yazısında.
Python’da hataları yakalamak ve yeniden denemek
requests proxy hatalarını ayrı istisna türleriyle verir. Hepsini tek bir except ile yakalamak teşhisi siler. Aşağıdaki örnek geçici kodlarda (429, 502, 503, 504) geri çekilerek yeniden dener, kalıcı hataları ise ayrı ayrı raporlar:
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
proxy = "http://USER:[email protected]:8989"
retry = Retry(
total=5,
backoff_factor=1,
status_forcelist=[429, 502, 503, 504],
allowed_methods=["GET", "HEAD"],
respect_retry_after_header=True,
)
session = requests.Session()
session.mount("http://", HTTPAdapter(max_retries=retry))
session.mount("https://", HTTPAdapter(max_retries=retry))
session.proxies = {"http": proxy, "https": proxy}
try:
r = session.get("https://api.ipify.org?format=json", timeout=(10, 30))
print(r.status_code, r.text)
except requests.exceptions.ProxyError as e:
print("Proxy reddetti veya ulaşılamadı (407 / bağlantı):", e)
except requests.exceptions.ConnectTimeout:
print("Proxy'ye bağlantı zaman aşımı: port ve firewall kontrol edin")
except requests.exceptions.ReadTimeout:
print("Hedef yanıt vermedi: okuma süresini veya çıkış ülkesini değiştirin")
except requests.exceptions.SSLError as e:
print("TLS hatası: proxy şemasını kontrol edin", e)
HTTPS hedeflerde 407 bir HTTP yanıtı olarak değil, ProxyError içinde “Tunnel connection failed: 407” mesajıyla gelir. Yeniden deneme listesine 407 eklemeyin: yanlış kimlik bilgisiyle tekrar denemek sonucu değiştirmez. Daha fazla dil örneği için Python entegrasyonu ve Node.js entegrasyonu sayfalarına bakın.
Adım adım teşhis sırası
- Proxy’siz IP adresinizi My IP aracı ile not edin.
- Port kontrol aracı ile gateway portunun erişilebilir olduğunu doğrulayın. Erişilemiyorsa sorun yerel ağdadır.
curl -v -x ... https://api.ipify.orgile proxy üzerinden IP’nizi isteyin. Dönen IP proxy çıkışıysa kimlik doğrulama ve tünel çalışıyor demektir.- Aynı komutu hedef URL ile tekrarlayın. Hata
CONNECTyanıtındaysa proxy tarafına, tünelden sonraysa hedef tarafına bakın. - Proxy’nin genel olarak çalıştığını proxy checker ile ayrıca doğrulayın.
429ve403için eşzamanlılığı, başlıkları ve IP türünü gözden geçirin.502/504için proxy’siz test yapın ve okuma süresini ayırın.- Sorun sürüyorsa destek ekibine hedef URL, hata kodu, saat (UTC+3) ve paket adıyla yazın.
curl -vçıktısı, şifreyi silerek eklendiğinde teşhisi hızlandırır.
Proxy hatalarının çoğu üç cümleye sığar: 407 kimlik bilgisidir, 403 ve 429 hedefin kararıdır, 5xx ve timeout proxy ile hedef arasındaki yoldur. Hatayı doğru katmana bağladığınızda IP değiştirmek, şifre düzeltmek veya beklemek arasında doğru seçimi yaparsınız.
Sık sorulan sorular
407 Proxy Authentication Required hatası nasıl çözülür?
407, proxy’nin kimlik bilgilerinizi kabul etmediğini gösterir. Kullanıcı adı ve şifreyi panelden boşluksuz kopyalayın, şifrede @, :, / gibi karakterler varsa yüzde kodlaması yapın ve IP whitelist kullanıyorsanız çıkış IP’nizin panelde kayıtlı olduğunu kontrol edin. Paketin aktif olduğunu da doğrulayın.
Proxy kullanırken 403 Forbidden neden alınır?
403 çoğunlukla hedef sitenin güvenlik katmanından gelir. IP itibarı, IP türünün siteye uymaması, ülke kısıtlaması veya tarayıcıya benzemeyen istek başlıkları en sık nedenlerdir. Yalnızca IP değiştirmek yetmez; User-Agent, dil ve çerez tutarlılığını da düzeltin.
429 Too Many Requests hatasını proxy ile nasıl önlerim?
429, hedef sitenin IP başına hız sınırıdır. Retry-After başlığına uyun, yoksa üstel geri çekilme kullanın ve tek IP’ye yığılan eşzamanlı istekleri azaltın. Oturum gerektirmeyen işlerde istek başına IP rotasyonu, oturum gerektiren işlerde sticky oturum kullanın.
502 Bad Gateway proxy hatası ne anlama gelir?
502, proxy’nin hedef siteye bağlanamadığını veya geçerli yanıt alamadığını gösterir. Hedef sunucu kapalı olabilir ya da residential havuzdaki çıkış cihazı bağlantı sırasında düşmüş olabilir. Tekil 502’ler yeniden denemeyle çözülür; aynı URL’yi proxy olmadan da test edin.
Proxy timeout hatası neden olur?
Connect timeout, istemcinin proxy’ye TCP bağlantısı açamadığını gösterir; gateway adresi, port veya firewall kontrol edilmelidir. Read timeout ise bağlantı kurulduktan sonra hedefin yanıt vermediğini gösterir. İkisine ayrı süre verin, örneğin Python’da timeout=(10, 30).
ERR_TUNNEL_CONNECTION_FAILED ne demek?
Chrome bu mesajı tarayıcı proxy’ye bağlandığı ama HTTPS tünelini kuramadığı durumda gösterir. Arka planda genellikle 407 kimlik doğrulama hatası veya 502 gibi bir proxy yanıtı vardır. Proxy bilgilerini ve şifre kodlamasını kontrol edip curl -v ile aynı isteği test edin.









