libcurl പ്രോക്സി കോൺഫിഗറേഷൻ transfer നടത്തുന്ന 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 പ്രോക്സി ഉപയോഗിക്കാം. ആ HTTPS transfer-നുള്ള ടണൽ libcurl കൈകാര്യം ചെയ്യുന്നു. പ്രോക്സി option-ലെ http:// ഇടനിലക്കാരനുമായുള്ള ബന്ധം വിവരിക്കുന്നു. യഥാർത്ഥത്തിൽ TLS സ്വീകരിക്കുന്ന പ്രോക്സി എൻഡ്പോയിന്റിനും അതിനെ പിന്തുണയ്ക്കുന്ന libcurl build-നും മാത്രം ഇത് https:// ആക്കുക.

ഫലപ്രദമായ വഴി ബോധപൂർവമാക്കുക

വ്യക്തമായ പ്രോക്സി option അനുബന്ധ പ്രോക്സി പരിസ്ഥിതി ക്രമീകരണത്തെ അതിലംഘിക്കുന്നു. ഒഴിവാക്കൽ ഒരു പ്രത്യേക തീരുമാനമാണ്: പാരമ്പര്യമായി ലഭിച്ച 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 വെല്ലുവിളി ലക്ഷ്യത്തിന്റെ സ്റ്റാറ്റസിൽ നിന്ന് വേർതിരിച്ച് നിർത്തുക.

അനുബന്ധ ലേഖനങ്ങൾ