HTTP ve HTTPS Proxy Sunucuları
HTTP proxy, tarayıcınızdan veya uygulamanızdan web isteklerini kabul eder ve sizin adınıza hedefe bağlanır. Olağan HTTP trafiğini ve CONNECT yöntemi desteğiyle şifreli HTTPS trafiğini taşıyabilir. HTTPS proxy, uygulamanızla proxy sunucusunun kendisi arasındaki bağlantıya şifreleme ekler.
Bunlar iki ayrı seçimdir: Uygulamanızın proxy sunucusuna nasıl ulaştığı ve onun üzerinden web sitesiyle nasıl iletişim kurduğu. İkisini anlamak doğru bağlantı ayarlarını seçmenize yardımcı olur. Proxy protokolleri arasındaki genel seçim SOCKS ve HTTP Proxy Sunucuları makalesinde ele alınır.
HTTP proxy web isteğiyle ne yapar?
Bir izleme betiğinin http://example.com/catalog istediğini varsayın. Web sitesine bağlantı açmak yerine yapılandırılmış proxy sunucusuna bağlanır. HTTP/1.1’de isteğinde tam hedef URL’yi gönderir; böylece proxy sunucusu hangi sunucuya ve sayfaya ulaşacağını bilir. İsteği iletir ve web sitesinin yanıtını betiğe döndürür.
Bu modda proxy sunucusu HTTP iletilerini işler. GET veya POST gibi yöntemi, istenen adresi, başlıkları ve gönderilen verileri okuyabilir. Bu amaçla yapılandırılmış yazılım erişim kuralları uygulayabilir, istekleri kaydedebilir veya uygun yanıtları önbelleğe alabilir. Önbellekleme, yanıtın önbellek kurallarına tabi isteğe bağlı işlevdir; HTTP proxy erişimi satın almak her sayfanın önbelleğe alınacağı anlamına gelmez.
Web sitesi ağ bağlantısını proxy sunucusunun çıkış IP adresinden alır. HTTP terimi, bu IP adresinin nereden geldiğini veya ne kadar süre atanmış kaldığını söylemez. Aynı bağlantı protokolü veri merkezi, ISP, konut veya mobil adreslerle, sabit IP adresleri ya da dönen havuz kullanılarak sunulabilir.
HTTP proxy HTTPS web sitesini nasıl açar?
HTTPS web sitesi, uygulamayla arasındaki alışverişi korumak için TLS kullanır. HTTP proxy bu alışverişi taşımak üzere önce tünel oluşturur. https://example.com/catalog isteğinde sıra şöyledir:
- Uygulama proxy sunucusuna bağlanır ve
example.com:443hedefineCONNECTyöntemiyle tünel açmasını ister. İstek, sayfa yolu olmadan hedef ana makineyi ve portu belirtir. - Proxy sunucusu, gereken proxy kimlik doğrulaması dahil erişime ve istenen hedefe izin verilip verilmediğini kontrol eder. Hedefe bağlantı açıp tünelin hazır olduğunu doğrular.
- Uygulama tünelden web sitesiyle TLS el sıkışması yapar ve web sitesinin sertifikasını kontrol eder.
- Uygulama web isteğini bu TLS bağlantısının içinde gönderir. Proxy sunucusu şifreli baytları iki yönde aktarır.
Proxy sunucusunun sayfayı teslim etmek için okuması gerekmez. Uygulamayla web sitesi, sitenin TLS bağlantısının uçları olarak kalır. CONNECT tüneli sağlar; TLS şifreleme sağlar ve alışverişi fark edilmeyen değişikliklere karşı korur.
Bu nedenle proxy adresi http:// ile başlasa bile HTTP proxy HTTPS web sitesini açabilir. Web sitesinin HTTPS koruması tünel içinde çalışır. Uygulamayla proxy sunucusu arasında TLS bulunmasına bağlı değildir.
HTTPS proxy ne ekler?
HTTPS proxy ile uygulama önce proxy sunucusuyla TLS kurar ve sertifikasını doğrular. Ardından HTTP isteklerini veya tünel için CONNECT isteğini bu korumalı bağlantıdan gönderir. Uygulamayla proxy sunucusu arasındaki ağ gözlemcisi bu istekleri okuyamaz.
HTTPS hedefinde uygulama iki ayrı TLS bağlantısı sürdürür: biri proxy sunucusuyla, diğeri tünelden web sitesiyle. Proxy sunucusu kendisine yönelik dış korumayı kaldırır, ancak içindeki site verisi şifreli kalır. Bu baytları onları çözebilen web sitesine iletir. HTTP hedefinde iç TLS bağlantısı yoktur; yalnızca proxy sunucusuna kadar bağlantı korunur.
| Proxy sunucusuna bağlantı | Hedef | Ne şifrelenir? |
|---|---|---|
| HTTP | HTTP web sitesi | İki bağlantı da TLS kullanmaz. İstek ve yanıt rota boyunca okunabilir. |
| HTTP | HTTPS web sitesi | Web sitesiyle alışveriş tünel içinde şifrelidir. Proxy sunucusuna bağlantıda CONNECT ve proxy kimlik doğrulaması TLS ile korunmaz. |
| HTTPS | HTTP web sitesi | TLS, proxy sunucusuna bağlantıyı korur. Proxy sunucusu web isteğini okuyabilir ve HTTP web sitesine TLS olmadan iletir. |
| HTTPS | HTTPS web sitesi | TLS proxy sunucusuna giden istekleri, ayrı TLS ise tünelde taşınan web sitesi alışverişini korur. |
Bu karşılaştırma; sertifika kontrollerinin açık olduğu, HTTPS incelemesi veya ayrı VPN bulunmayan olağan proxy iletimini anlatır. Proxy sunucusuna bağlantıyı şifrelemek HTTP web sitesini HTTPS’ye yükseltmez.
Proxy sunucusu ve web sitesi ne görebilir?
HTTPS hedefinde, iletim yapan proxy sunucusu TLS bağlantısındaki sayfa yolunu, sorgu parametrelerini, çerezleri, form verisini veya dönen içeriği okuyamaz. Kendisine bağlanan istemci IP adresini, CONNECT içinde istenen hedef ana makineyle portu ve trafiğin zamanını ve hacmini yine bilir. Proxy sunucusuna TLS, CONNECT isteğini ağın o bölümündeki gözlemcilerden gizler; ancak isteği işlemesi gereken proxy sunucusundan gizlemez.
Proxy erişim bilgileri, web sitesi girişinden ayrı gönderilir. Basic proxy kimlik doğrulaması, kullanıcı adı ve parolayı gizli anahtarsız çözülebilen Base64 ile kodlar. Düz HTTP proxy bağlantısında bu, bilgileri ağ gözlemcisinden korumaz. Web sitesinin HTTPS bağlantısı tünelin içinde başlar ve önceki proxy girişini kapsamaz. Proxy sunucusuna TLS bu girişi aktarım sırasında korur.
Diğer uçta web sitesi trafiği çıkış IP adresinden alır ve kendisine yöneltilen istekleri okur. Hesabı, oturum çerezini veya uygulamanın gönderdiği başka bilgileri tanıyabilir. HTTPS proxy seçmek bu tanımlayıcıları kaldırmaz veya web sitesinin çıkış IP adresini kabulünü otomatik iyileştirmez.
HTTPS incelemesi, bazı yönetilen ağlarda ve hata ayıklama araçlarında kullanılan farklı kurulumdur. Uygulama, inceleme yapan proxy sunucusunun kontrolündeki sertifika yetkilisine güvenir; proxy sunucusu da her iki tarafta ayrı TLS bağlantıları kurarken trafiği okuyabilir. Normal CONNECT iletimi böyle bir sertifika yüklemeyi gerektirmez. HTTPS proxy sunucusunun kendi sunucu sertifikasına güvenmek, web sitelerinin kimliğine bürünme izninden ayrıdır.
Bağlantı ayarları nasıl okunur?
Proxy ayarı; adres, port, bağlantı protokolü ve gereken kimlik doğrulamasını içerir. Proxy URL’sindeki protokol proxy sunucusuna uygulanır. Hedef URL’deki protokol web sitesine uygulanır.
Bu curl komutları aynı HTTPS web sitesini iki farklı proxy bağlantısıyla ister. Proxy ana makine adı ve portunu, seçilen bağlantı yöntemi için verilen değerlerle değiştirin:
curl --proxy http://proxy.example:8080 https://example.com/
curl --proxy https://proxy.example:8443 https://example.com/
İlk komut proxy sunucusuna HTTP üzerinden bağlanır, ardından CONNECT ve web sitesine TLS oluşturur. İkincisi önce HTTPS proxy sunucusuna TLS kurar, sonra web sitesinin ayrı TLS bağlantısını onun içinde taşır. İki durumda da proxy hizmetinin gerektirdiği kimlik doğrulamasını ayrıca sağlayın.
Yalnızca http:// yerine https:// yazmak HTTP’ye özel portu TLS uç noktasına dönüştürmez. Hizmet HTTPS erişimi için ana makine adı veriyorsa o adı kullanın: IP adresiyle değiştirmek sertifika adı uyuşmazlığına yol açabilir.
Uygulama etiketleri de dikkatle okunmalıdır. “HTTPS proxy” adlı alan, proxy sunucusuna düz HTTP ile bağlanırken onu HTTPS web siteleri için seçebilir. curl’de HTTPS_PROXY değişkeni de HTTPS hedefleri için proxy seçer; değeri doğru biçimde http:// ile başlayabilir. Etiket hangi isteklerin ayarı kullandığını, proxy şeması ise bağlantının nasıl kurulduğunu söyler.
DNS ve proxy sunucusundan geçen trafik
HTTP istemcisi hedef ana makine adını sağladığında proxy sunucusu normalde IP adresini çözümler ve bağlanır. İstemci proxy sunucusuna ulaşmak için onun ana makine adına ihtiyaç duyuyorsa ayrı sorgu yapar. Tarayıcı, tahmin veya başka özellikler için de DNS sorguları gönderebilir. Bunlar ayrı sorgulardır; web proxy ayarlamak her DNS isteğini onun üzerinden yönlendirmez.
Ayar, uygulamanın gerçekten proxy sunucusuna gönderdiği trafiğe uygulanır. Başka program doğrudan bağlanmaya devam edebilir; istisna listesi de seçili sitelerde proxy sunucusunu atlayabilir. Örneğin API betiğini proxy üzerinden yönlendirmek bağımsız tarayıcının rotasını değiştirmez. Çıkış adresini görevi çalıştıracak uygulama ve yapılandırmadan kontrol edin.
Web sitesine HTTP/2 ve proxy sunucusuna HTTP/2
HTTP/2, ayrı akışlarla birden fazla alışverişin tek bağlantıyı paylaşmasını sağlar. Proxy kullanımında hangi bağlantının bunu desteklediği önemlidir. Uygulama, HTTP/1.1 CONNECT ile oluşturulmuş tünelin içinde web sitesiyle HTTP/2 uzlaşması yapabilir. Proxy sunucusu şifreli baytları aktarır ve web sitesinin HTTP/2 iletilerini anlaması gerekmez.
Uygulamayla proxy sunucusu arasındaki HTTP/2 ayrı yetenektir. Her CONNECT tüneli kendi HTTP/2 akışını kullanır; böylece birkaç tünel proxy sunucusuna tek bağlantıyı paylaşabilir. Örneğin iki farklı web sitesine giden tüneller, ayrı hedef bağlantılarını ve ayrı site TLS oturumlarını koruyarak bu bağlantıyı kullanabilir. Bu, ek istemci-proxy bağlantısı ihtiyacını azaltır; proxy sunucusuna şifreli site isteklerini okuma olanağı vermez.
İki taraf da seçilen modu desteklemelidir. HTTPS tek başına HTTP/2 belirtmez: HTTPS proxy HTTP/1.1 kullanabilir. Performans istemciye, ağ rotasına, sunucu yüküne ve bağlantıların yeniden kullanımına da bağlıdır. HTTP/2 etiketi her görevde hız artışı garantisi değildir.
Uygulama ve proxy sunucusu izin veriyorsa olağan CONNECT tüneli diğer TCP tabanlı protokolleri de taşıyabilir; ancak hedef portlar kısıtlanabilir. UDP aktarmaz. HTTP/3 UDP üzerinden QUIC kullanır; dolayısıyla bu TCP tünelinde aynı şekilde ilerleyemez. HTTP tabanlı UDP iletimi, CONNECT-UDP gibi ek mekanizmalar kullanır ve uyumlu uygulamalar gerektirir. Yalnızca HTTPS veya HTTP/2 desteği bu desteği doğrulamaz.
HTTP ve HTTPS proxy erişimi nerede yararlıdır?
Gezinme ve web sitesi testleri için CONNECT destekli HTTP proxy hem HTTP hem HTTPS hedeflerine tek bağlantı yöntemi sağlar. Ekip, sayfa oluşturma, çerezler ve site girişlerini tarayıcıya bırakarak siteyi proxy sunucusunun ağından görmek için kullanabilir.
Tarayıcı botları, API istemcileri ve zamanlanmış izleme sistemlerinde HTTP istemcisi, hedef URL’leri değiştirmeden seçilen çıkış IP adresinden istek gönderebilir. İstekleri yine uygulama hazırlar ve yanıtları işler. HTTPS tünelinin içinde proxy sunucusu her sayfayı veya API çağrısını ayrıştırmadan alışverişi taşır.
TLS korumalı HTTPS proxy, proxy girişi ve hedef istekleri dahil proxy sunucusuna bağlantının da korunması gerektiğinde yararlıdır. Bağlantı kontrol etmediğiniz bir ağdan geçiyorsa bu önemlidir. İstemci proxy sunucusunun kendisine TLS’i desteklemelidir; yalnızca HTTPS sitelerini açabilmesi yetmez.
Bağlantı hatalarını yorumlama
Hata, proxy sunucusuna ulaşırken, tünel açarken veya web sitesiyle iletişim kurarken oluşabilir. Aşama, tek başına hata kodundan daha çok şey söyler.
| Olan durum | Nereye bakılmalı? |
|---|---|
| Proxy sunucusu 407 döndürür | Proxy sunucusu kimlik doğrulaması istemiştir. Erişim bilgilerini veya gereken erişim yöntemini kontrol edin; web sitesi hesabı ayrı giriştir. |
| HTTP çalışır, HTTPS çalışmaz | İstemcinin HTTPS için beklenen proxy sunucusunu kullanıp kullanmadığını, CONNECT ve hedef porta izin verilip verilmediğini kontrol edin. |
| TLS veya sertifika hatası görünür | Proxy bağlantısından mı, web sitesi bağlantısından mı geldiğini belirleyin. Sertifika doğrulamasını kapatmak yerine ilgili ana makine adını, TLS uç noktasını ve sertifikaya güveni kontrol edin. |
| 403 yanıtı döner | CONNECT reddi proxy sunucusundan gelir. Başarıyla kurulmuş, normal biçimde doğrulanmış HTTPS bağlantısının içindeki 403 ise web sitesi yanıtıdır. Bunlar farklı aşamalardır ve farklı düzeltmeler gerektirir. |
Tamamlanan tünel ve TLS el sıkışması bağlantı yolunun çalıştığını gösterir. Web sitesinin belirli hesap, çıkış IP adresi veya isteği kabul edeceğini garanti etmez. Bu nedenle proxy sunucusu çalışırken bile giriş doğrulaması, CAPTCHA veya istek sınırı web sitesi ya da uygulama düzeyinde ilgilenmeyi gerektirebilir.
