HTTP proxy’nin tanımı#
HTTP proxy, istemciden gelen HTTP isteklerini alır, hedef sunucuya iletir ve yanıtı istemciye döndürür. “Uygulama katmanında” çalışır; yani isteğin yöntemini (GET, POST), adresini ve başlıklarını okuyabilir. Bu özellik ona önbellekleme, filtreleme ve başlık düzenleme gibi yetenekler kazandırır, ama aynı zamanda şifrelenmemiş trafiği görebilmesi anlamına da gelir.
Düz HTTP isteği proxy’den nasıl geçer?#
Proxy kullanmayan bir istemci, sunucuya yalnızca yol bilgisini gönderir (GET /sayfa HTTP/1.1). Proxy kullanan istemci ise isteğin tam adresini proxy’ye verir, çünkü proxy’nin nereye gideceğini bilmesi gerekir:
GET http://example.com/sayfa HTTP/1.1
Host: example.com
Proxy-Authorization: Basic VVNFUk5BTUU6UEFTU1dPUkQ=
Accept: text/htmlProxy bu isteği alır, Proxy-Authorization gibi kendisine ait başlıkları çıkarır ve isteği example.com sunucusuna iletir. Yanıt geldiğinde aynen istemciye aktarır. Kimlik doğrulama başarısız olursa proxy genellikle 407 Proxy Authentication Required durum kodunu döndürür.
HTTPS siteleri için ne olur?#
HTTP proxy, HTTPS bir siteye ulaşmak için CONNECT yöntemini kullanır. İstemci proxy’den hedefe bir tünel açmasını ister; tünel kurulduktan sonra proxy yalnızca şifreli baytları iletir ve içeriği okuyamaz. Bu işleyişin ayrıntısı için HTTPS proxy nedir rehberini inceleyin.
Proxy’nin eklediği başlıklar#
Bazı HTTP proxy’ler, isteğe kendi izlerini bırakan başlıklar ekler. Bu başlıklar hedef sitenin bir proxy kullandığınızı anlamasını sağlayabilir ve gerçek IP adresinizi taşıyabilir. Hangi başlığın neyi ifşa ettiği anonimlik seviyesini belirler.
| Başlık | Amacı | Etkisi |
|---|---|---|
Via | İsteğin hangi aracılardan geçtiğini belirtir | Proxy kullanıldığını açık eder |
X-Forwarded-For | İstemcinin özgün IP adresini taşır | Gerçek IP’nin hedefe ulaşmasına yol açabilir |
Forwarded | X-Forwarded-For için standart karşılık | Aynı etkiyi standart biçimde sağlar |
Proxy-Authorization | Proxy’ye kimlik bilgisi iletir | Hedefe iletilmemesi gerekir |
Anonimlik düzeylerinin ayrıntısını proxy anonimlik seviyeleri rehberinde bulabilirsiniz.
HTTP proxy ne işe yarar?#
HTTP proxy’nin en bilinen kullanımı çıkış IP adresini değiştirmektir; ancak asıl tarihsel rolü başkadır. Kurumsal ağlarda sık ziyaret edilen içerikleri önbelleğe alarak bant genişliğinden tasarruf sağlar, erişim politikalarını uygular ve giden trafiği tek bir noktadan kayda alır. Bireysel kullanımda ise bir sitenin başka bir ülkeden nasıl göründüğünü incelemek, bir geliştirme ortamındaki istekleri izlemek ya da bir aracın proxy ayarını denemek için tercih edilir.
HTTP proxy isteği anladığı için üzerinde ek işlemler yapabilir. Örneğin belirli adresleri engelleyebilir, yanıtları önbellekten sunabilir ya da başlıkları düzenleyebilir. Bu esneklik, aynı zamanda güven sorununu doğurur: proxy’nin sahibi şifrelenmemiş trafiğinizin tamamını okuyabilir. Bu yüzden HTTP proxy’yi seçerken “ne işe yarar?” sorusunun yanında “kimin elinde?” sorusunu da sormak gerekir.
Port numaraları ve yaygın yapılandırmalar#
HTTP proxy’ler için sabit bir port yoktur. Pratikte 80, 3128 ve 8080 gibi portlar sık görülür, fakat bunlar yalnızca gelenektir. Önemli olan, sağlayıcının veya listenin bildirdiği adres ve portu eksiksiz girmektir. Bir proxy yalnızca belirli hedef portlarına (örneğin 80 ve 443) izin veriyor olabilir; bu durumda başka portlardaki servislere erişim reddedilir.
Sorun yaşadığınızda şu sırayı izlemek zaman kazandırır: önce adresin ve portun doğru yazıldığını, sonra protokolün (HTTP ya da SOCKS) eşleştiğini, ardından kimlik bilgisinin gerekli olup olmadığını kontrol edin. Bütün bunlar doğruysa sorun büyük olasılıkla sunucunun kapanmış olmasıdır.
Kod örnekleri#
curl
curl --proxy http://USERNAME:[email protected]:PORT \
--max-time 15 \
https://api.ipify.orgPython (requests)
import requests
proxy = "http://USERNAME:[email protected]:PORT"
proxies = {"http": proxy, "https": proxy}
response = requests.get("https://api.ipify.org", proxies=proxies, timeout=15)
print(response.text)Node.js (undici)
// npm install undici
import { ProxyAgent, fetch } from 'undici';
const agent = new ProxyAgent('http://USERNAME:[email protected]:PORT');
const res = await fetch('https://api.ipify.org', { dispatcher: agent });
console.log(await res.text());HTTP proxy’nin sınırları#
- Yalnızca web odaklıdır: E-posta, oyun veya rastgele TCP bağlantıları için SOCKS tercih edilir. SOCKS4 ve SOCKS5 farkları rehberine bakın.
- Düz HTTP görünürdür: Şifrelenmemiş içerik proxy tarafından okunabilir ve değiştirilebilir.
- Ücretsiz örnekler güvenilmezdir: Açık bir HTTP proxy’nin kimin elinde olduğunu bilmezsiniz.
Elinizdeki bir adresin HTTP proxy olarak çalışıp çalışmadığını HTTP proxy kontrol aracıyla sınayabilir, hazır adaylar için HTTP proxy listesine göz atabilirsiniz. Kalıcı bir ihtiyaç için HTTP ve SOCKS5 seçilebilen ISP proxy ürününü inceleyebilirsiniz.