libcurl easy handle-іне нақты прокси қою
libcurl easy handle-ін белгілі бір проксиге конфигурациялап, опция қателерін, тасымалдау ақауларын және HTTP күйін ажыратыңыз.
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 шақыруын мақсат күйінен бөлек ұстаңыз.