Ստուգեք HTTP պրոքսին curl-ի միջոցով
Ժամանակով սահմանափակված curl ստուգմամբ ուսումնասիրեք պրոքսիի կապը, HTTPS թունելը, պատասխանի կարգավիճակն ու շրջանցման կանոնները՝ առանց սարքի ընդհանուր պրոքսին փոխելու։
Փոխարինեք 127.0.0.1:8080-ը ձեր ծառայության կամ HTTP պրոքսիների ցանկի վերջնակետով և սա գործարկեք անվնաս HTTPS նպատակակետի նկատմամբ․
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/Loopback հասցեն նշանակում է ձեր սեփական համակարգչի լսող հանգույցը։ Հրամանը բացահայտ ընտրում է այն, այս կանչի համար մաքրում է curl-ի շրջանցման ցանկը և տրամադրում է հինգ վայրկյան կապի հաստատման ու տասնհինգ վայրկյան ընդհանուր ժամանակի համար։ Այն չի փոխում դիտարկիչի և համակարգի պրոքսիի կարգավորումները։
Օգտագործեք curl-ի իրական գործարկվող ֆայլը, եթե հրամանային միջավայրը curl-ը դարձնում է այլ ծրագրի կեղծանուն․ curl --version-ը նույնականացնում է կառուցումը։ Եթե լսող հանգույցն ինքն է պահանջում TLS, օգտագործեք նրա փաստաթղթերում նշված պրոքսիի URL սխեման։
Կարդացեք չորս արդյունք, ոչ թե հաջողության մեկ նշան
- Միացում ընտրված պրոքսիին․ հասցեն և պորտը հասանելի են։
- CONNECT-ն ընդունվել է․ պրոքսին թունել է բացել դեպի HTTPS նպատակակետը։
- Նպատակակետի վկայագիրը ստուգվել է․ TLS-ն ավարտվել է սպասվող վստահության ստուգումներով։
- Նպատակակետի պատասխանը ստացվել է․ ստուգեք կարգավիճակն ու բովանդակությունը՝ ըստ հավելվածին անհրաժեշտ արդյունքի։
Աշխատող թունելից հետո էլ նպատակակետը կարող է վերադարձնել 403 կամ 429։ curl-ը կարող է հաջող ավարտվել նաև HTTP սխալի պատասխան ստանալուց հետո, ուստի գրանցեք և՛ պատասխանի կարգավիճակը, և՛ curl-ի սխալի արդյունքը։ Միայն TCP կապը կամ հաջող CONNECT-ը բավարար չէ։
Հակիրճ արդյունք կրկնվող համեմատությունների համար
Unix-ի նման հրամանային միջավայրում անտեսեք պատասխանի մարմինը և տպեք թունելի կարգավիճակը, նպատակակետի կարգավիճակը, կապի մյուս կողմն ու անցած ժամանակը․
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --silent --show-error --output /dev/null --write-out 'http=%{http_code} connect=%{http_connect} peer=%{remote_ip} total=%{time_total}\n' https://example.com/http_connect-ը նկարագրում է թունելի պատասխանը, http_code-ը՝ վերջնական HTTP պատասխանը։ remote_ip-ը curl-ի կապի մյուս կողմն է, ոչ թե պրոքսիի ելքի հասցեի անկախ չափում։ Այլ համակարգերում փոխարինեք /dev/null-ը կամ պահպանեք պատասխանի մարմինը։
Եթե ստուգումը ձախողվում է, գտեք կապի հաստատման կամ փոխանցման ձախողված քայլը և նույն նպատակակետը համեմատեք ուղիղ միացմամբ այնտեղ, որտեղ այդ ուղին թույլատրված է․
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/--noproxy '*'-ը շրջանցում է պրոքսիները։ Երկու ուղիներում էլ վկայագրի ստուգման ձախողումը հուշում է ընդհանուր վստահության խնդիր, իսկ հաջող ուղիղ կապը՝ մերժված CONNECT-ի հետ, հուշում է պրոքսիի նույնականացման կամ քաղաքականության խնդիր։ Մանրամասն ելքը տարածելուց առաջ ստուգեք այն, քանի որ կարող է պարունակել նույնականացնող տեղեկություններ։
Պահպանեք վերջնակետը, թիրախը և ժամանակային նշումը արդյունքի հետ։ Սա հաստատում է, թե ինչն է աշխատել այդ հարցման համար․ ապագա հասանելիությունը, գաղտնիությունն ու ծանրաբեռնվածության տակ կատարողականը առանձին ապացույցներ են պահանջում։