Kuweka proksi bayana kwenye easy handle ya libcurl
Sanidi easy handle ya libcurl kwa proksi mahususi na utenganishe hitilafu za chaguo, kushindwa kwa uhamishaji na hali ya HTTP.
libcurl huambatanisha usanidi wa proksi na easy handle inayofanya uhamishaji. Weka anwani ya mpatanishi kwenye handle hiyo, ukiacha CURLOPT_URL kama URL ya lengo.
Kipande kifuatacho kinachukulia kuwa libcurl imeanzishwa na handle ni easy handle halali:
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));
Weka bafa ya hitilafu hai wakati handle inairejelea. Kabla ya kuondoka katika wigo wake, safisha handle au badilisha au futa kiashiria chake cha CURLOPT_ERRORBUFFER. Jina la mwenyeji wa proksi ni kishika nafasi; mgombea ambaye hajathibitishwa kutoka orodha ya proksi za HTTP anaweza kutoa anwani kwa jaribio hili la tovuti ya umma. Tumia mpango na bandari yake halisi, na angalia ikiwa inaruhusu handaki la HTTPS.
Lengo la HTTPS linaweza kutumia proksi ya HTTP. libcurl hushughulikia handaki kwa uhamishaji huo wa HTTPS. http:// katika chaguo la proksi inaelezea muunganisho kwa mpatanishi. Badilisha iwe https:// kwa sehemu ya mwisho ya proksi inayokubali TLS kweli na ujenzi wa libcurl unaoiunga mkono.
Fanya njia inayofaa kuwa ya kukusudia
Chaguo bayana la proksi hupuuza mpangilio wa mazingira wa proksi unaolingana. Kupita ni uamuzi tofauti: no_proxy iliyorithiwa bado inaweza kukizuia lengo. Ikiwa handle hii lazima itumie proksi iliyochaguliwa kwa kila lengo inalopewa, sanidi CURLOPT_NOPROXY kama mfuatano tupu kama sehemu ya sera hiyo.
Kinyume chake, kuweka CURLOPT_PROXY kwenye mfuatano tupu huzima matumizi ya proksi kwa uwazi. Kuweka kwenye NULL huondoa ugawaji bayana na huruhusu tena tabia inayotegemea mazingira. Maadili hayo mawili hutumikia madhumuni tofauti.
Kichwa maalum cha lengo kama Content-Type: text/xml hakichagui proksi. Kiongeze tu wakati mwili halisi wa ombi na API ya lengo unahitaji aina hiyo ya midia.
Soma pia matokeo ya HTTP
curl_easy_perform iliyofanikiwa haimaanishi kuwa tovuti ilirudisha hali ya HTTP iliyofanikiwa. Soma CURLINFO_RESPONSE_CODE na tumia ushughulikiaji wa hali wa programu. Jibu la CONNECT la proksi lina thamani yake yenyewe, CURLINFO_HTTP_CONNECTCODE; kukataliwa kwa handaki hutangulia jibu lolote la tovuti.
CURLOPT_FAILONERROR inaweza kuchukua hitilafu nyingi za HTTP kama kushindwa, lakini nyaraka zake zinataja isipokuwa za uthibitishaji. Weka changamoto ya 407 ya proksi kando na hali ya lengo.