Proksi ilə ERR_TUNNEL_CONNECTION_FAILED xətasının həlli
Updated:
Proksi vasitəsilə https:// səhifəsini yükləmək üçün brauzer CONNECT sorğusu göndərir və proksinin sayta tunel açmasını gözləyir. ERR_TUNNEL_CONNECTION_FAILED xətası proksi sorğunu qəbul etmək əvəzinə xəta ilə cavab verdikdə yaranır. Çətinlik ondadır ki, Chrome hansı xətanın baş verdiyini bildirmir, ona görə də ilk iş əsl kodu tapmaqdır.
Təkrarladığımız iki hal
Hər iki hal test proksisində yoxlanılıb və burada sənədləşdirmə ünvanı 203.0.113.10:8080 və user123:pass456 ilə göstərilib. Adi Chrome pəncərəsində 407 halı tunel xətasına çevrilmir; bunun əvəzinə Chrome proksi istifadəçi adı və şifrəsi üçün daxilolma dialoqu açır. Buna görə də 407-nin səbəb olduğu tunel xətaları əsasən avtomatlaşdırma alətlərində və şifrə sorğulama imkanı olmayan tətbiqlərdə meydana çıxır.
| Proksinin CONNECT cavabı | Chrome göstərir | curl göstərir |
|---|---|---|
407 şifrə daxil etmək imkanı olmadan (headless Chrome) | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 407 |
Proksi sayta çata bilmədiyi üçün 502 | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 502 |
Səbəblər, ən çox ehtimal olunandan başlayaraq
- Avtomatlaşdırma skripti giriş məlumatlarını göndərmir. Chrome-un
--proxy-serverparametri yalnız host və port qəbul edir, user:pass qəbul etmir. Headless Puppeteer və ya Selenium 407 xətası alır və tunel xətası barədə məlumat verir. - Şifrə ilə qorunan Wi-Fi proksisinin arxasındakı telefon tətbiqi. Tətbiqdə daxilolma dialoqu olmadığı üçün brauzer işlədiyi halda HTTPS bağlantısı kəsilir.
- Proksi hədəfə çata bilmir. CONNECT sorğusuna 502 qaytarır; 502 Bad Gateway səhifəsi bunu ətraflı izah edir.
- Yalnız bəzi saytlar açılmır. Eyni proksi vasitəsilə digər saytlar işlədiyi halda, hədəf sayt bloklanıb və ya işləmir.
Bir curl əmri ilə əsl kodu tapın
curl -v -x http://user123:[email protected]:8080 https://example.com əmrini öz məlumatlarınızla icra edin. > CONNECT example.com:443 HTTP/1.1 sətrindən dərhal sonrakı sətrə baxın: 407 xətası 407 təlimatına baxmaq lazım olduğunu bildirir; 502 isə hədəf sayta və ya proksinin arxasındakı marşruta işarə edir. Terminaldan istifadə etmək istəmirsinizsə, sətri eyni vəziyyətlər üçün auth failed (407) və ya HTTP 502 göstərən proksi yoxlayıcısına daxil edin.
Mühitə uyğun həllər
- Puppeteer: işə salarkən
--proxy-server=http://host:portparametrini saxlayın və səhifəyə keçməzdən əvvəlpage.authenticate({ username, password })funksiyasını çağırın. Tam nümunə Puppeteer proksi təlimatında. - Playwright: brauzeri işə salarkən
proxy: { server, username, password }strukturunu ötürün və Playwright 407 xətasını sizin yerinizə cavablandıracaq; baxın: Playwright. - Selenium: Chrome əmr sətrində user:pass qəbul etmir; Selenium təlimatı mümkün variantları göstərir.
- Windows-da Chrome: daxilolma dialoqu heç vaxt görünmürsə, hər hansı bir proksi uzantısının onu bloklayıb-bloklamadığını yoxlayın, sonra uzantısız pəncərədə yenidən cəhd edin.
- Telefonlar: autentifikasiyalı proksi tələb edən tətbiqlər üçün Android quraşdırma təlimatında olduğu kimi user:pass dəstəkləyən proksi tətbiqindən istifadə edin.
Addım-addım
- 1
CONNECT cavabını müəyyənləşdirin
Proksinin 407 və ya 502 qaytardığını öyrənmək üçün proksi sətrinizlə
curl -v -xəmrini icra edin və ya onu yoxlayıcıya daxil edin. - 2
407 üçün: giriş məlumatlarını düzgün ötürün
Skriptlərdə
--proxy-serverparametrinə user:pass yazmaq əvəzinə kitabxananın autentifikasiya funksiyasından istifadə edin. - 3
502 üçün: başqa saytı yoxlayın
Eyni proksi vasitəsilə example.com kimi böyük bir saytı yükləyin. Əgər işləyirsə, problem ilkin hədəf saytdadır.
- 4
Yenidən yoxlayın və çıxış IP-sini təsdiqləyin
Tunel açıldıqdan sonra trafikin proksidən keçdiyini təsdiqləmək üçün həmin brauzerdə IP ünvanım səhifəsinə daxil olun.
Tez-tez verilən suallar
Niyə http səhifələri yükləndiyi halda https səhifələri açılmır?
Sadə http üçün CONNECT tələb olunmur; proksi sorğunu birbaşa yönləndirir. Yalnız https tunel açır, ona görə də tunel xətaları yalnız orada görünür.
Android-də ERR_TUNNEL_CONNECTION_FAILED xətasına nə səbəb olur?
Əksər hallarda Wi-Fi proksisinə istifadəçi adı və şifrəni ötürə bilməyən tətbiq səbəb olur. Eyni səhifəni Chrome for Android-də yoxlayın; əgər Chrome sorğu göstərib səhifəni yükləyə bilirsə, problem tətbiqdədir.
user:pass parametrini --proxy-server daxilində yaza bilərəmmi?
Xeyr. Chrome bu parametrdəki giriş məlumatlarını nəzərə almır, bu da 407 və tunel xətasına səbəb olur. Bunun əvəzinə Puppeteer, Playwright və ya bir uzantı vasitəsilə autentifikasiyadan keçin.
SOCKS5-ə keçmək tunel xətasını aradan qaldıracaqmı?
Yalnız sifarişiniz SOCKS5 olduqda. VinaProxy həm HTTP(S), həm də SOCKS5 təklif edir; paneldə sifarişinizdə göstərilən protokolu seçin, çünki uyğunsuzluq fərqli xətalara səbəb olur.
Puppeteer və Playwright ilə işləyən proksilər
VinaProxy proksiləri məşhur avtomatlaşdırma kitabxanalarının birbaşa dəstəklədiyi standart user:pass girişindən istifadə edir.
Qiymətlərə baxın