Ինչպես ուղղել 407 Proxy Authentication Required սխալը
Updated:
407-ը ավելի լավ նորություն է, քան թվում է. ձեր սարքը կապվել է պրոքսիի հետ, և ցանցային ուղին բաց է: Պրոքսին պարզապես հայտնում է, որ չի ստացել վավեր օգտանուն և գաղտնաբառ: Ահա թե ինչու գրեթե յուրաքանչյուր 407 սխալ լուծվում է մուտքային տվյալների մակարդակում, ոչ թե երթուղիչում կամ firewall-ում:
407 սխալի պատճառները՝ ըստ հավանականության
- Սխալ կամ բացակայող օգտանուն/գաղտնաբառ: Մեկ սխալ մուտքագրված նիշ կամ գաղտնաբառի հետ պատճենված ավելորդ բացատ: Սա բացատրում է 407 սխալների մեծ մասը:
- Սխալ դաշտերում տեղադրված տվյալներ: Ամբողջ
ip:port:user:passտողը հայտնվում է Host դաշտում, կամ օգտանունը՝ գաղտնաբառի դաշտում: Որոշ գործիքներ ավտոմատ բաժանում են չորս դաշտերը, մյուսները՝ ոչ: - Հավելվածը չի ուղարկում մուտքային տվյալները: Օպերացիոն համակարգի պրոքսի կարգավորումները պահպանում են միայն հասցեն և պորտը: Այն ծրագրերը, որոնք չեն կարողանում գաղտնաբառ պահանջել, միանում են առանց նույնականացման վերնագրի (auth header) և ստանում 407 սխալ:
- Հատուկ նիշեր պրոքսիի URL-ում:
http://user:pass@host:portձևաչափում գաղտնաբառի մեջ եղած այնպիսի նիշերը, ինչպիսիք են@-ը,:-ը կամ#-ը, պետք է կոդավորվեն (օրինակ՝@-ը դառնում է%40), հակառակ դեպքում տողը կտրվում է սխալ տեղում:
Ինչ տեսք ունի 407 սխալն իրականում
Մենք վերարտադրել ենք սխալը թեստային պրոքսիի վրա՝ այստեղ ցուցադրված 203.0.113.10:8080 փաստաթղթային հասցեով և կանխամտածված սխալ user123:pass456-ով: HTTPS կայքի դեպքում curl -x http://user123:[email protected]:8080 https://example.com հրամանն արտածում է curl: (56) CONNECT tunnel failed, response 407: Սովորական HTTP կայքի դեպքում -w %{http_code} պարամետրով curl-ը տպում է միայն 407:
Ավելացրեք -v, տեսնելու համար՝ արդյոք մուտքային տվյալներն առհասարակ ուղարկվել են: Հետագծումը ցույց է տալիս > CONNECT example.com:443 HTTP/1.1, ապա > Proxy-Authorization: Basic ..., և միայն դրանից հետո՝ 407: Եթե Proxy-Authorization տողը բացակայում է, ձեր կլիենտը մուտքային տվյալները չի էլ ուղարկել:
VinaProxy-ի proxy checker-ը նույն դեպքը գրանցում է որպես auth failed (407): Headless Chrome-ը, որը չունի մուտքի պատուհան, այն ցուցադրում է որպես ERR_TUNNEL_CONNECTION_FAILED. տեսեք tunnel-ի սխալի էջը:
Լուծումներն ըստ միջավայրի
- Windows և Chrome: Chrome-ն օգտագործում է Windows-ի պրոքսիի կարգավորումները (Կարգավորումներ > Ցանց և ինտերնետ > Պրոքսի), որոնք պարունակում են միայն հասցեն և պորտը: Էջի առաջին բեռնման ժամանակ Chrome-ը բացում է մուտքի պատուհան պրոքսիի օգտանվան և գաղտնաբառի համար: Եթե այն սխալ եք մուտքագրել, իսկ պատուհանն այլևս չի հայտնվում, փակեք Chrome-ի բոլոր պատուհանները և կրկին բացեք:
- Հակադետեկտ բրաուզերներ (AdsPower, GoLogin, GenLogin): պահեք Host-ը, Port-ը, Username-ը և Password-ը առանձին դաշտերում: Ամբողջությամբ մաքրեք գաղտնաբառի դաշտը և տեղադրեք այն նորից՝ խմբագրելու փոխարեն: Յուրաքանչյուր դաշտի մանրամասն օգնությունը հասանելի է GoLogin-ի կարգավորման ուղեցույցում:
- Հեռախոսներ: iPhone-ում Authentication անջատիչը գտնվում է Settings > Wi-Fi > (i) > Configure Proxy բաժնում. այն անջատված թողնելը հանգեցնում է 407 սխալի: Android-ը սովորաբար ընդունում է միայն host և port, ուստի մուտք պահանջող հավելվածները կարող են ցուցադրել կապի ընդհանուր սխալ:
- curl: փոխանցեք
-U "user:pass"առանձին՝ URL-ի մեջ ներառելու փոխարեն, ինչը թույլ կտա խուսափել հատուկ նիշերի հետ կապված խնդիրներից: - Python requests: սահմանեք
http://user:pass@host:portարժեքըproxiesբառարանի և՛http, և՛httpsբանալիների համար, իսկ բարդ գաղտնաբառերը կոդավորեքurllib.parse.quote-ի միջոցով:
Մուտքային տվյալները ճիշտ են, բայց 407-ը չի վերանում
Հաջորդիվ համեմատեք պրոտոկոլները: VinaProxy-ը տրամադրում է HTTP(S) պրոքսիներ user:pass մուտքով, ինչպես նաև SOCKS5, ուստի ընտրեք վահանակում ձեր պատվերում նշված պրոտոկոլը: Եթե ստուգիչը պատասխանում է not socks5, ապա այդ պորտն աշխատում է HTTP-ով և չպետք է կարգավորվի որպես SOCKS5:
Քայլ առ քայլ
- 1
Պատճենեք պրոքսիի տողը վահանակից
Բացեք պատվերը ձեր VinaProxy վահանակում և մուտքագրելու փոխարեն պատճենեք ամբողջական տողը:
- 2
Ստուգեք այն պրոքսիի ստուգիչով
Տեղադրեք այն proxy checker-ում:
auth failed (407)արդյունքը հաստատում է, որ խնդիրը մուտքային տվյալների մեջ է, ոչ թե ցանցի: - 3
Կրկին մուտքագրեք օգտանունն ու գաղտնաբառը
Մաքրեք երկու դաշտերն էլ ձեր ծրագրում և տեղադրեք դրանք նորից՝ առանց սկզբի կամ վերջի բացատների:
- 4
Համապատասխանեցրեք պրոտոկոլը պատվերին
Սահմանեք պրոքսիի տեսակը որպես HTTP կամ SOCKS5՝ ճիշտ այնպես, ինչպես նշված է պատվերում, ապա պահպանեք:
- 5
Հետագծեք curl -v հրամանով, եթե խնդիրը շարունակվում է
Գործարկեք
curl -vձեր իրական տվյալներով և ստուգեքProxy-Authorizationտողի առկայությունը մինչև 407-ը:
Հաճախ տրվող հարցեր
Արդյո՞ք 407-ի պատճառը իմ ISP-ի կողմից պրոքսիի արգելափակումն է:
Ոչ: 407-ն ուղարկվում է հենց պրոքսիի կողմից, այսինքն՝ կապը հաստատվել է: Արգելափակված ուղին արտահայտվում է timeout-ով կամ մերժված միացմամբ. տեսեք proxy timeout էջը:
Ինչո՞ւ է Chrome-ը շարունակ պահանջում պրոքսիի մուտքային տվյալները:
Յուրաքանչյուր սխալ մուտքագրում ստանում է նոր 407, և Chrome-ը նորից է հարցնում: Ստուգեք Caps Lock-ը և համոզվեք, որ վիետնամերեն կամ այլ մուտքագրման եղանակը գաղտնաբառին շեշտադրություններ չի ավելացնում:
Ինչպե՞ս ներառել @ պարունակող գաղտնաբառը պրոքսիի URL-ում:
Կոդավորեք այն՝ @-ը որպես %40, :-ը որպես %3A, #-ը որպես %23: curl-ի դեպքում -U դրոշակը թույլ է տալիս ընդհանրապես խուսափել կոդավորումից:
Selenium-ը կամ Puppeteer-ը 407-ի փոխարեն ցույց են տալիս tunnel-ի սխալ: Խնդիրը նո՞ւյնն է:
Սովորաբար այո: Headless Chrome-ը չի կարող ցուցադրել մուտքի պատուհան, ուստի 407-ը հայտնվում է որպես ERR_TUNNEL_CONNECTION_FAILED: Տրամադրեք մուտքային տվյալները գրադարանի նույնականացման մեխանիզմի միջոցով, ինչպես նշված է Selenium guide-ում:
Անհատական պրոքսիներ՝ հստակ մուտքային տվյալներով
VinaProxy-ի յուրաքանչյուր պատվեր ձեզ տրամադրում է պատրաստի ip:port:user:pass տող, որը կարող եք մեկ անգամ պատճենել և տեղադրել ցանկացած վայրում:
Տեսնել պրոքսիների գները