ERR_TUNNEL_CONNECTION_FAILED შეცდომის გამოსწორება პროქსის გამოყენებისას
Updated:
პროქსის მეშვეობით https:// გვერდის ჩასატვირთად, ბრაუზერი აგზავნის CONNECT მოთხოვნას და ელოდება, სანამ პროქსი საიტთან გვირაბს გახსნის. ERR_TUNNEL_CONNECTION_FAILED ჩნდება მაშინ, როდესაც თანხმობის ნაცვლად პროქსი ამ მოთხოვნას შეცდომით პასუხობს. სირთულე იმაშია, რომ Chrome არ გაჩვენებთ კონკრეტულ შეცდომას, ამიტომ პირველი ამოცანა რეალური კოდის გარკვევაა.
ჩვენ მიერ რეპროდუცირებული ორი შემთხვევა
ორივე შემთხვევა გაიტესტა სატესტო პროქსიზე, რომელიც აქ წარმოდგენილია სადოკუმენტაციო მისამართით 203.0.113.10:8080 და მონაცემებით user123:pass456. ჩვეულებრივ Chrome ფანჯარაში 407 შეცდომა გვირაბის შეცდომად არ გარდაიქმნება; ამის ნაცვლად, Chrome ხსნის ავტორიზაციის ფანჯარას პროქსის მომხმარებლის სახელისა და პაროლის შესაყვანად. აქედან გამომდინარე, 407-ით გამოწვეული გვირაბის შეცდომები ძირითადად ავტომატიზაციის ხელსაწყოებსა და იმ აპლიკაციებში ვლინდება, რომელთაც პაროლის მოთხოვნის ფანჯარა არ აქვთ.
| პროქსის პასუხი CONNECT მოთხოვნაზე | Chrome აჩვენებს | curl აჩვენებს |
|---|---|---|
407 პაროლის შეყვანის შესაძლებლობის გარეშე (headless Chrome) | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 407 |
502, რადგან პროქსი ვერ უკავშირდება საიტს | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 502 |
გამომწვევი მიზეზები (ალბათობის მიხედვით)
- ავტომატიზაციის სკრიპტი არ აგზავნის ავტორიზაციის მონაცემებს. Chrome-ის ალამი
--proxy-serverიღებს მხოლოდ ჰოსტსა და პორტს, და არა user:pass-ს. Headless Puppeteer ან Selenium იღებს 407 შეცდომას და გვირაბის გაუმართაობას აფიქსირებს. - მობილური აპლიკაცია პაროლით დაცული Wi-Fi პროქსის უკან. აპლიკაციას არ აქვს ავტორიზაციის ფანჯარა, ამიტომ HTTPS წყდება, მაშინ როცა ბრაუზერი აგრძელებს მუშაობას.
- პროქსი ვერ უკავშირდება სამიზნე სერვერს. ის CONNECT-ზე აბრუნებს 502-ს; ამ თემას დეტალურად განიხილავს 502 Bad Gateway გვერდი.
- შეცდომა მხოლოდ ზოგიერთ საიტზე ჩნდება. სამიზნე რესურსი დაბლოკილია ან მიუწვდომელია, მაშინ როცა სხვა საიტები იმავე პროქსით უპრობლემოდ იხსნება.
გაიგეთ რეალური კოდი ერთი curl ბრძანებით
გაუშვით curl -v -x http://user123:[email protected]:8080 https://example.com თქვენი საკუთარი მონაცემებით. შეხედეთ ხაზს უშუალოდ > CONNECT example.com:443 HTTP/1.1-ის შემდეგ: 407 ნიშნავს, რომ უნდა მიჰყვეთ 407-ის ინსტრუქციას; 502 მიუთითებს სამიზნე მისამართზე ან პროქსის მიღმა არსებულ მარშრუტზე. თუ ტერმინალის გამოყენება არ გსურთ, ჩასვით ეს ხაზი პროქსის შემმოწმებელში, რომელიც ანალოგიურ სიტუაციებში აჩვენებს auth failed (407) ან HTTP 502-ს.
გამოსწორების გზები გარემოს მიხედვით
- Puppeteer: გაშვებისას დატოვეთ
--proxy-server=http://host:portდა ნავიგაციამდე გამოიძახეთpage.authenticate({ username, password }). სრული მაგალითი იხილეთ Puppeteer-ის პროქსი ინსტრუქციაში. - Playwright: ბრაუზერის გაშვებისას გადაეცით
proxy: { server, username, password }და Playwright თავად უპასუხებს 407-ს; იხილეთ Playwright. - Selenium: Chrome არ იღებს user:pass-ს ბრძანების სტრიქონიდან; Selenium-ის ინსტრუქცია გვიჩვენებს მუშა ვარიანტებს.
- Chrome Windows-ზე: თუ შესვლის ფანჯარა საერთოდ არ ჩნდება, შეამოწმეთ, ხომ არ ბლოკავს მას პროქსის გაფართოება, შემდეგ კი სცადეთ გაფართოებების გარეშე ფანჯარაში.
- ტელეფონები: აპლიკაციებისთვის, რომელთაც ავტორიზებული პროქსი სჭირდებათ, გამოიყენეთ პროქსი აპლიკაცია user:pass-ის მხარდაჭერით, როგორც ეს Android-ის გამართვის ინსტრუქციაშია აღწერილი.
ნაბიჯ-ნაბიჯ
- 1
დაადგინეთ CONNECT-ის პასუხი
გაუშვით
curl -v -xთქვენი პროქსის ხაზით, ან ჩასვით ის შემმოწმებელში, რათა გაიგოთ, პროქსი 407-ს აბრუნებს თუ 502-ს. - 2
407-ისთვის: სწორად მიუთითეთ ავტორიზაციის მონაცემები
სკრიპტებში გამოიყენეთ ბიბლიოთეკის ავთენტიფიკაციის hook-ი, ნაცვლად
--proxy-server-ში user:pass-ის ჩაწერისა. - 3
502-ისთვის: სცადეთ სხვა საიტი
იმავე პროქსით ჩატვირთეთ დიდი საიტი, მაგალითად example.com. თუ ის მუშაობს, პრობლემა თავდაპირველ სამიზნე რესურსშია.
- 4
გაუშვით თავიდან და გადაამოწმეთ გამავალი IP
გვირაბის გახსნის შემდეგ, იმავე ბრაუზერში ეწვიეთ გვერდს ჩემი IP, რათა დარწმუნდეთ, რომ ტრაფიკი პროქსის გავლით მიდის.
ხშირად დასმული კითხვები
რატომ იტვირთება http გვერდები, ხოლო https გვერდები იშლება?
ჩვეულებრივ http-ს არ სჭირდება CONNECT; პროქსი პირდაპირ ამისამართებს მოთხოვნას. გვირაბი იხსნება მხოლოდ https-ის დროს, ამიტომ გვირაბის შეცდომებიც მხოლოდ იქ ჩნდება.
რა იწვევს ERR_TUNNEL_CONNECTION_FAILED შეცდომას Android-ზე?
ყველაზე ხშირად აპლიკაცია, რომელსაც Wi-Fi პროქსისთვის მომხმარებლის სახელისა და პაროლის გადაცემა არ შეუძლია. სცადეთ იგივე გვერდი Chrome-ში Android-ზე; თუ Chrome მოითხოვს მონაცემებს და ჩატვირთავს გვერდს, პრობლემა აპლიკაციაშია.
შემიძლია user:pass ჩავწერო --proxy-server-ში?
არა. Chrome უგულებელყოფს ავტორიზაციის მონაცემებს ამ ალამში, რაც იწვევს 407 შეცდომას და გვირაბის ჩაშლას. ამის ნაცვლად, გაიარეთ ავტორიზაცია Puppeteer-ით, Playwright-ით ან გაფართოების მეშვეობით.
მოხსნის თუ არა SOCKS5-ზე გადართვა გვირაბის შეცდომას?
მხოლოდ იმ შემთხვევაში, თუ თქვენი შეკვეთა არის SOCKS5. VinaProxy გთავაზობთ როგორც HTTP(S), ისე SOCKS5-ს; მართვის პანელში აირჩიეთ ის ოქმი, რაც თქვენს შეკვეთაშია მითითებული, რადგან შეუსაბამობა სხვა შეცდომებს გამოიწვევს.
პროქსი სერვერები, რომლებიც მუშაობს Puppeteer-თან და Playwright-თან
VinaProxy-ის პროქსები იყენებს სტანდარტულ user:pass ავტორიზაციას, რომელსაც პოპულარული ავტომატიზაციის ბიბლიოთეკები მარტივად უმკლავდება.
ფასების ნახვა