libcurl easy handle ਉੱਤੇ ਸਪਸ਼ਟ ਪ੍ਰੌਕਸੀ ਲਗਾਉਣਾ
ਕਿਸੇ ਖਾਸ ਪ੍ਰੌਕਸੀ ਲਈ libcurl easy handle ਸੰਰਚਿਤ ਕਰੋ ਅਤੇ option ਗਲਤੀਆਂ, transfer ਫੇਲ੍ਹਤਾਂ ਤੇ HTTP ਸਥਿਤੀ ਨੂੰ ਵੱਖਰਾ ਕਰੋ।
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 ਪ੍ਰੌਕਸੀ ਵਰਤ ਸਕਦੀ ਹੈ। libcurl ਉਸ HTTPS transfer ਲਈ ਸੁਰੰਗ ਸੰਭਾਲਦਾ ਹੈ। ਪ੍ਰੌਕਸੀ option ਵਿੱਚ http:// ਵਿਚੋਲੇ ਨਾਲ ਸੰਬੰਧ ਦਾ ਵਰਣਨ ਕਰਦਾ ਹੈ। ਇਸ ਨੂੰ https:// ਵਿੱਚ ਬਦਲੋ ਸਿਰਫ਼ ਅਜਿਹੇ ਪ੍ਰੌਕਸੀ ਐਂਡਪੌਇੰਟ ਲਈ ਜੋ ਅਸਲ ਵਿੱਚ TLS ਸਵੀਕਾਰ ਕਰਦਾ ਹੈ ਅਤੇ ਅਜਿਹੇ libcurl build ਲਈ ਜੋ ਇਸ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ।
ਪ੍ਰਭਾਵੀ ਰਾਹ ਨੂੰ ਜਾਣ-ਬੁੱਝ ਕੇ ਬਣਾਓ
ਸਪਸ਼ਟ ਪ੍ਰੌਕਸੀ 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 ਚੁਣੌਤੀ ਨੂੰ ਮੰਜ਼ਿਲ ਦੀ ਸਥਿਤੀ ਤੋਂ ਵੱਖ ਰੱਖੋ।