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 чакырыгын максаттын статусунан өзүнчө кармаңыз.

Тектеш макалалар