Bloga geri dön

Proxy Kimlik Doğrulama Sorunlarını Çözme: Kapsamlı Rehber

Proxy neden 407 yanıtı veriyor veya bağlantıyı kesiyor? Kimlik doğrulama hatalarının nedenlerini inceliyor, teşhis ve düzeltme yöntemlerini gösteriyoruz.

📅10 Aralık 2025
```html

Proxy Kimlik Doğrulama Sorunlarını Çözmek: Kapsamlı Kılavuz

407 kodu, bağlantı kesintisi, zaman aşımı — tanıdık belirtiler mi? Proxy kimlik doğrulama hataları sürekli karşımıza çıkar, ancak vakaların %90'ı birkaç dakika içinde çözülür. Nedenleri inceleyelim ve somut teşhis yöntemlerini gösterelim.

Proxy Kimlik Doğrulama Nasıl Çalışır?

Hata aramadan önce mekanizmayı anlamak önemlidir. Proxy sunucuları iki ana kimlik doğrulama yöntemi kullanır:

Kullanıcı Adı ve Şifre ile Kimlik Doğrulama (Basic Auth) — İstemci, Base64 ile kodlanmış kimlik bilgilerini içeren bir Proxy-Authorization başlığı gönderir. Bu, HTTP proxy'leri için standart yöntemdir.

IP ile Kimlik Doğrulama (IP Beyaz Listesi) — Sunucu, istemcinin IP adresini beyaz listede kontrol eder. Kullanıcı adı yok; IP listenizdeyse erişim açıktır.

SOCKS5 proxy'leri için şema benzerdir, ancak kimlik doğrulama HTTP başlıkları yerine protokol düzeyinde gerçekleşir.

Yaygın Hatalar ve Anlamları

Hata Ne Anlama Geliyor? Olası Neden
407 Proxy Authentication Required Proxy kimlik doğrulaması istiyor Kimlik bilgileri gönderilmedi veya yanlış
403 Forbidden Erişim yasaklandı IP beyaz listede değil, abonelik süresi dolmuş
Connection reset Bağlantı sıfırlandı Yanlış protokol, güvenlik duvarı engellemesi
Connection timeout Bağlantı zaman aşımına uğradı Yanlış host/port, ağ sorunları
SOCKS5 auth failed SOCKS kimlik doğrulama hatası Yanlış veriler veya uyumsuz yöntem

Kimlik Bilgisi Sorunları

407 hatasının en yaygın nedeni basit bir yazım hatası veya veri karışıklığıdır. Şunları kontrol edin:

  • Boşluklarla Kopyalama — Kontrol panelinden kopyalarken satırın başına veya sonuna görünmez boşluklar dahil edilmiş olabilir
  • Büyük/Küçük Harf Duyarlılığı — Kullanıcı adları ve şifreler büyük/küçük harfe duyarlıdır
  • Hesap Karışıklığı — Yönetim paneli verileri ile proxy erişim verileri genellikle farklıdır
  • Süre Dolması — Abonelik sona ermiş olabilir, ancak veriler teknik olarak hala geçerlidir

Hızlı kontrol için curl ile yetkilendirme yapmayı deneyin:

curl -v -x http://kullanici:sifre@proxy.ornek.com:8080 https://httpbin.org/ip

-v bayrağı, proxy sunucusunun yanıtı da dahil olmak üzere tüm bağlantı sürecini gösterecektir.

IP Beyaz Listesi: Tuzaklar

IP ile kimlik doğrulama kullanışlı görünse de (şifre göndermeye gerek yok), kendine has zorlukları vardır:

İnternet Sağlayıcısının Dinamik IP'si. Ev internet sağlayıcıları, modemi yeniden başlattığınızda veya belirli aralıklarla IP adresinizi değiştirir. Dün çalışan bugün 403 hatası verebilir.

NAT ve Paylaşılan IP. Kurumsal bir NAT arkasındaysanız, dış IP'niz onlarca iş arkadaşınızla paylaşılıyor olabilir. Böyle bir IP'yi beyaz listeye eklemek güvenlik açığı yaratır.

VPN ve Bulut Sunucuları. VPS'nizin IP adresi, taşıma veya yeniden başlatma sırasında değişebilir. AWS, Google Cloud ve diğer sağlayıcılar, Ek IP (Static IP) olmadan IP'nin sabit kalacağını garanti etmez.

Mevcut harici IP adresinizi öğrenmek için:

curl https://api.ipify.org
# veya
curl https://ifconfig.me

Sonucu, proxy sağlayıcınızın beyaz listesindeki IP ile karşılaştırın.

Paroladaki Kodlama ve Özel Karakterler

Parolanız özel karakterler (@, :, #, %) içeriyorsa, bunlar URL formatını bozabilir. Özellikle @ karakteri kurnazdır; kullanıcı bilgilerini ana bilgisayardan ayırır.

Örnek sorun: p@ss:word parolası, http://user:p@ss:word@proxy.com:8080 dizesinde yanlış ayrıştırılır.

Çözüm — Özel Karakterlerin URL Kodlaması:

Karakter Kodlama
@ %40
: %3A
# %23
% %25
/ %2F

p@ss:word parolası p%40ss%3Aword haline gelir.

Python'da kodlama otomatik olarak yapılır:

from urllib.parse import quote

password = "p@ss:word"
encoded_password = quote(password, safe='')
print(encoded_password)  # p%40ss%3Aword

Adım Adım Teşhis

Proxy çalışmadığında sırayla şunları kontrol edin:

Adım 1: Sunucu Erişilebilirliğini Kontrol Edin

# TCP bağlantısını kontrol etme
nc -zv proxy.ornek.com 8080

# Veya telnet ile
telnet proxy.ornek.com 8080

Eğer bağlantı kurulamazsa, sorun ağ düzeyindedir: yanlış host, port veya güvenlik duvarı engellemesi.

Adım 2: Uygulama Olmadan Kimlik Doğrulamayı Kontrol Edin

# HTTP Proxy
curl -v --proxy-user "kullanici:sifre" -x http://proxy.ornek.com:8080 https://httpbin.org/ip

# SOCKS5 Proxy
curl -v --proxy-user "kullanici:sifre" -x socks5://proxy.ornek.com:1080 https://httpbin.org/ip

Eğer curl çalışıyorsa ancak uygulamanız çalışmıyorsa, sorun uygulamanın kodu veya yapılandırmasındadır.

Adım 3: Protokolü Kontrol Edin

SOCKS proxy için HTTP istemcisi veya tam tersi kullanmak yaygın bir hatadır. Proxy sağlayıcınızdan proxy türünü (HTTP/HTTPS veya SOCKS4/SOCKS5) doğrulayın:

  • HTTP/HTTPS proxy — Başlıklar üzerinden çalışır, portlar genellikle 8080, 3128, 8888
  • SOCKS4/SOCKS5 — İkili protokoldür, portlar genellikle 1080, 1081

Adım 4: Sağlayıcı Loglarını Kontrol Edin

Birçok sağlayıcı, kişisel hesap panelinde bağlantı loglarını gösterir. Burada isteğin sunucuya ulaşıp ulaşmadığı, hangi kimlik bilgilerinin gönderildiği ve neden reddedildiği görülebilir.

Farklı Diller İçin Kod Örnekleri

Python (requests)

import requests
from urllib.parse import quote

# Özel karakterleri kodla
username = "user123"
password = quote("p@ss:word", safe='')

proxies = {
    "http": f"http://{username}:{password}@proxy.ornek.com:8080",
    "https": f"http://{username}:{password}@proxy.ornek.com:8080"
}

try:
    response = requests.get(
        "https://httpbin.org/ip",
        proxies=proxies,
        timeout=10
    )
    print(response.json())
except requests.exceptions.ProxyError as e:
    print(f"Proxy hatası: {e}")

Python (Asenkron istekler için aiohttp)

import aiohttp
import asyncio
from aiohttp_socks import ProxyConnector

async def fetch_with_proxy():
    # SOCKS5 için
    connector = ProxyConnector.from_url(
        'socks5://kullanici:sifre@proxy.ornek.com:1080'
    )
    
    async with aiohttp.ClientSession(connector=connector) as session:
        async with session.get('https://httpbin.org/ip') as response:
            return await response.json()

# HTTP Proxy için
async def fetch_with_http_proxy():
    async with aiohttp.ClientSession() as session:
        async with session.get(
            'https://httpbin.org/ip',
            proxy='http://kullanici:sifre@proxy.ornek.com:8080'
        ) as response:
            return await response.json()

Node.js (axios)

const axios = require('axios');
const HttpsProxyAgent = require('https-proxy-agent');

const proxyUrl = 'http://kullanici:sifre@proxy.ornek.com:8080';
const agent = new HttpsProxyAgent(proxyUrl);

axios.get('https://httpbin.org/ip', {
    httpsAgent: agent
})
.then(response => console.log(response.data))
.catch(error => {
    if (error.response?.status === 407) {
        console.log('Proxy kimlik doğrulama hatası');
    }
});

PHP (cURL)

$ch = curl_init();

curl_setopt_array($ch, [
    CURLOPT_URL => 'https://httpbin.org/ip',
    CURLOPT_PROXY => 'proxy.ornek.com:8080',
    CURLOPT_PROXYUSERPWD => 'kullanici:sifre',
    CURLOPT_PROXYTYPE => CURLPROXY_HTTP,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 10
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (curl_errno($ch)) {
    echo 'Hata: ' . curl_error($ch);
} elseif ($httpCode === 407) {
    echo 'Proxy kimlik doğrulama hatası';
} else {
    echo $response;
}

curl_close($ch);

Selenium (Python)

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# Kimlik doğrulama gerektiren proxy'ler için Selenium'da eklenti kullanmak gerekir
# Basit bir IP-beyaz listeli proxy kullanmak daha kolaydır

chrome_options = Options()
chrome_options.add_argument('--proxy-server=http://proxy.ornek.com:8080')

# Kimlik doğrulaması için uzantı kullanma
# (manifest.json ve background.js oluşturulması gerekir)

driver = webdriver.Chrome(options=chrome_options)
driver.get('https://httpbin.org/ip')

İpucu: Selenium, kullanıcı adı/şifre gerektiren proxy'lerle iyi çalışmaz. Tarayıcı otomasyonu için, kimlik doğrulama pencereleriyle uğraşmamak adına IP kimlik doğrulamalı rezidansiyel proxy'ler kullanmak daha iyidir.

Farklı Proxy Türlerinin Özellikleri

Kimlik doğrulama sorunları proxy türüne göre değişebilir:

Veri Merkezi Proxy'leri genellikle sabit kimlik bilgileri kullanır. Çalışmayı durdururlarsa, geçerlilik süresini veya trafik limitini kontrol edin.

Rezidansiyel Proxy'ler genellikle rotasyon kullanır. Kimlik bilgileri, kullanıcı adına oturum parametreleri içerebilir (örneğin, kullanici-oturum-abc123). Yanlış format hatalara neden olur.

Mobil Proxy'ler IP değiştirmek için ek parametreler gerektirebilir. Sağlayıcının belgelerini inceleyin; IP rotasyonu istek formatları farklılık gösterir.

Hızlı Teşhis Kontrol Listesi

Gelecekteki sorunlar için bu listeyi kaydedin:

  1. Proxy hostuna ve portuna ping/telnet geçiyor mu?
  2. Kimlik bilgileri fazladan boşluksuz kopyalandı mı?
  3. Paroladaki özel karakterler kodlandı mı?
  4. Doğru protokol (HTTP vs SOCKS) kullanılıyor mu?
  5. IP kimlik doğrulaması kullanılıyorsa IP beyaz listede mi?
  6. Abonelik aktif mi ve limit aşılmamış mı?
  7. Aynı verilerle curl çalışıyor mu?

Sonuç

Proxy kimlik doğrulama hatalarının çoğu, temel şeylerin kontrol edilmesiyle çözülür: kimlik bilgilerinin doğruluğu, özel karakterlerin kodlanması ve IP'nin beyaz listeye uygunluğu. Basit kontroller işe yaramazsa, ayrıntılı teşhis için -v bayrağı ile curl kullanın.

Veri kazıma ve otomasyon görevleri için, bağlantı kararlılığının önemli olduğu durumlarda, esnek kimlik doğrulama sistemine sahip rezidansiyel proxy'ler daha kullanışlıdır — daha fazla bilgi için proxycove.com adresini ziyaret edin.

```