Proxy ile ERR_TUNNEL_CONNECTION_FAILED Hatasını Düzeltme
Updated:
Bir proxy üzerinden https:// sayfasını yüklemek için tarayıcı bir CONNECT isteği gönderir ve proxy'nin siteye bir tünel açmasını bekler. ERR_TUNNEL_CONNECTION_FAILED, proxy bu isteği onaylamak yerine bir hatayla yanıtladığında ortaya çıkar. Buradaki sorun, Chrome'un hangi hatanın oluştuğunu belirtmemesidir; bu nedenle ilk iş asıl hata kodunu bulmaktır.
Yeniden oluşturduğumuz iki senaryo
Her ikisi de bir test proxy'si üzerinde çalıştırılmış olup burada belgelendirme adresi 203.0.113.10:8080 ve user123:pass456 ile yeniden yazılmıştır. Normal bir Chrome penceresinde 407 durumu tünel hatasına dönüşmez; Chrome bunun yerine proxy kullanıcı adı ve şifresi için bir oturum açma iletişim kutusu açar. Bu nedenle 407 kaynaklı tünel hataları çoğunlukla otomasyon araçlarında ve şifre soramayan uygulamalarda görülür.
| Proxy'nin CONNECT yanıtı | Chrome'un gösterdiği | curl'ün gösterdiği |
|---|---|---|
Şifre girme olanağı olmadan 407 (headless Chrome) | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 407 |
Proxy siteye erişemediği için 502 | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 502 |
Nedenler (en olası olandan başlayarak)
- Otomasyon betiği kimlik bilgisi göndermiyor. Chrome'un
--proxy-serverparametresi kullanıcı:şifre bilgilerini değil, yalnızca sunucu ve bağlantı noktasını kabul eder. Headless Puppeteer veya Selenium 407 alır ve tünel hatası bildirir. - Şifre korumalı bir Wi-Fi proxy'si arkasındaki telefon uygulaması. Uygulamanın giriş iletişim kutusu yoktur, bu nedenle tarayıcı çalışmaya devam ederken HTTPS bağlantısı kopar.
- Proxy hedefe ulaşamıyor. CONNECT isteğine 502 yanıtı döner; 502 Bad Gateway sayfası bu konuyu ayrıntılı olarak ele almaktadır.
- Yalnızca bazı siteler açılmıyor. Diğer siteler aynı proxy üzerinden çalışırken hedef site engelleme yapıyor ya da kapalı olabilir.
Tek bir curl komutuyla asıl kodu bulun
Kendi değerlerinizle curl -v -x http://user123:[email protected]:8080 https://example.com komutunu çalıştırın. > CONNECT example.com:443 HTTP/1.1 satırının hemen altındaki satıra bakın: 407 kodu, 407 rehberini takip etmeniz gerektiği anlamına gelir; 502 kodu ise hedef siteyi veya proxy'nin arkasındaki yolu işaret eder. Terminal kullanmak istemiyorsanız satırı aynı durumlar için auth failed (407) veya HTTP 502 bildiren proxy test aracına yapıştırın.
Ortama göre çözümler
- Puppeteer: Başlatma sırasında
--proxy-server=http://host:portayarını koruyun ve sayfaya gitmeden öncepage.authenticate({ username, password })fonksiyonunu çağırın. Örnek kodun tamamı Puppeteer proxy rehberinde yer almaktadır. - Playwright: Tarayıcıyı başlatırken
proxy: { server, username, password }parametresini iletin; Playwright 407 yanıtını sizin yerinize halleder. Bkz. Playwright. - Selenium: Chrome, komut satırında kullanıcı:şifre bilgilerini kabul etmez; Selenium rehberi uygulanabilir seçenekleri göstermektedir.
- Windows üzerinde Chrome: Oturum açma iletişim kutusu hiç görünmüyorsa bir proxy uzantısının bunu engelleyip engellemediğini kontrol edin ve uzantısız bir pencerede tekrar deneyin.
- Telefonlar: Kimlik doğrulamalı proxy gerektiren uygulamalar için Android kurulum rehberinde gösterildiği gibi kullanıcı:şifre destekleyen bir proxy uygulaması kullanın.
Adım adım
- 1
CONNECT yanıtını belirleyin
Proxy'nin 407 mi yoksa 502 mi döndürdüğünü öğrenmek için proxy satırınızla
curl -v -xkomutunu çalıştırın veya satırı test aracına yapıştırın. - 2
407 için: Kimlik bilgilerini doğru şekilde sağlayın
Betiklerde kullanıcı:şifre bilgilerini
--proxy-serveriçine yazmak yerine kütüphanenin kimlik doğrulama yöntemini kullanın. - 3
502 için: Başka bir site deneyin
Aynı proxy üzerinden example.com gibi büyük bir siteyi yükleyin. Çalışıyorsa sorun asıl hedef sitededir.
- 4
Yeniden çalıştırın ve çıkış IP'sini doğrulayın
Tünel açıldıktan sonra trafiğin proxy üzerinden aktığını doğrulamak için aynı tarayıcıda IP adresim sayfasını ziyaret edin.
Sıkça sorulan sorular
Neden http sayfaları yüklenirken https sayfaları açılmıyor?
Düz http için CONNECT gerekmez; proxy isteği doğrudan iletir. Yalnızca https bir tünel açar, bu nedenle tünel hataları yalnızca orada görülür.
Android'de ERR_TUNNEL_CONNECTION_FAILED hatasına ne sebep olur?
Çoğu zaman bir uygulamanın Wi-Fi proxy'sine kullanıcı adı ve şifreyi iletememesidir. Aynı sayfayı Android için Chrome'da deneyin; Chrome şifre sorup sayfayı yükleyebiliyorsa sorun uygulamadadır.
Kullanıcı:şifre bilgisini --proxy-server içine ekleyebilir miyim?
Hayır. Chrome bu parametredeki kimlik bilgilerini yok sayar, bu da 407 ve tünel hatasına yol açar. Bunun yerine Puppeteer, Playwright veya bir uzantı aracılığıyla kimlik doğrulaması yapın.
SOCKS5'e geçmek tünel hatasını giderir mi?
Yalnızca siparişiniz SOCKS5 ise giderir. VinaProxy, hem HTTP(S) hem de SOCKS5 sunar; uyumsuzluk farklı hatalara neden olacağından kontrol panelinde siparişinizin gösterdiği protokolü seçin.
Puppeteer ve Playwright ile çalışan proxy'ler
VinaProxy proxy'leri, popüler otomasyon kütüphanelerinin doğrudan desteklediği standart kullanıcı:şifre girişini kullanır.
Fiyatları görüntüleyin