აშკარა პროქსის დაყენება 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 გამოწვევა დანიშნულების სტატუსისგან ცალკე შეინახეთ.