libcurl-ը պրոքսիի կարգավորումը կցում է այն easy handle-ին, որը կատարում է փոխանցումը։ Սահմանեք միջնորդի հասցեն այդ handle-ի վրա՝ թողնելով CURLOPT_URL որպես նպատակակետ URL։

Հետևյալ հատվածը ենթադրում է, որ libcurl-ը սկզբնավորված է, և handle վավեր easy handle է։

char error[CURL_ERROR_SIZE] = {0};
CURLcode result;

result = curl_easy_setopt(handle, CURLOPT_ERRORBUFFER, error);
if (result == CURLE_OK)
    result = curl_easy_setopt(handle, CURLOPT_URL,
                              "https://example.com/");
if (result == CURLE_OK)
    result = curl_easy_setopt(handle, CURLOPT_PROXY,
                              "http://proxy.example:8080");
if (result == CURLE_OK)
    result = curl_easy_perform(handle);

if (result != CURLE_OK)
    fprintf(stderr, "%s\n", error[0] ? error
                                  : curl_easy_strerror(result));

Պահեք սխալների բուֆերը կենդանի, քանի դեռ handle-ը հղում է դրան։ Նրա շրջանակից դուրս գալուց առաջ մաքրեք handle-ը կամ փոխարինեք կամ ջնջեք նրա CURLOPT_ERRORBUFFER ցուցիչը։ Պրոքսիի հոսթի անունը տեղապահ է. HTTP պրոքսիների ցանկից չհաստատված թեկնածուն կարող է տրամադրել հասցեն այս հանրային կայքի փորձարկման համար։ Օգտագործեք նրա իրական սխեման և պորտը, և ստուգեք՝ արդյոք այն թույլ է տալիս HTTPS թունելը։

HTTPS նպատակակետը կարող է օգտագործել HTTP պրոքսի։ libcurl-ը կառավարում է թունելը այդ HTTPS փոխանցման համար։ Պրոքսիի ընտրանքի http://-ը նկարագրում է կապը միջնորդի հետ։ Փոխեք այն https://-ի միայն այն պրոքսի վերջնակետի համար, որն իսկապես ընդունում է TLS, և այն libcurl կառուցվածքի համար, որն աջակցում է դրան։

Դարձրեք արդյունավետ երթուղին դիտավորյալ

Բացահայտ պրոքսիի ընտրանքը վերացնում է համապատասխան պրոքսի միջավայրի կարգավորումը։ Շրջանցումը առանձին որոշում է. ժառանգված no_proxy-ը դեռ կարող է բացառել նպատակակետը։ Եթե այս handle-ը պետք է օգտագործի ընտրված պրոքսին իրեն տրված յուրաքանչյուր նպատակակետի համար, կարգավորեք CURLOPT_NOPROXY-ը որպես դատարկ տող այդ քաղաքականության մասում։

Ընդհակառակը, CURLOPT_PROXY-ը դատարկ տողի սահմանելը բացահայտորեն անջատում է պրոքսիի օգտագործումը։ NULL-ի սահմանելը հեռացնում է բացահայտ վերագրումը և կրկին թույլ տալիս միջավայրի վրա հիմնված վարքագիծը։ Այս երկու արժեքները տարբեր նպատակների են ծառայում։

Թիրախային հատուկ վերնագիր, ինչպիսին Content-Type: text/xml-ն է, չի ընտրում պրոքսին։ Ավելացրեք այն միայն այն դեպքում, երբ իրական հարցման մարմինը և նպատակակետի API-ն կարիք ունեն այդ մեդիա տեսակի։

Կարդացեք նաև HTTP արդյունքը

Հաջող curl_easy_perform-ը չի նշանակում, որ կայքը վերադարձրել է հաջող HTTP կարգավիճակ։ Կարդացեք CURLINFO_RESPONSE_CODE-ը և կիրառեք հավելվածի կարգավիճակի մշակումը։ Պրոքսիի CONNECT պատասխանն ունի իր արժեքը՝ CURLINFO_HTTP_CONNECTCODE. թունելի մերժումը նախորդում է կայքի ցանկացած պատասխանի։

CURLOPT_FAILONERROR-ը կարող է շատ HTTP սխալներ դիտարկել որպես ձախողումներ, սակայն նրա փաստաթղթերը նշում են նույնականացման բացառություններ։ Պրոքսիի 407 մարտահրավերը առանձին պահեք նպատակակետի կարգավիճակից։

Առնչվող հոդվածներ