PHP cURL პროქსის სათაურები: CONNECT და დანიშნულების პასუხები
გამოყავით CONNECT-ის, ავთენტიფიკაციის, გადამისამართებისა და საბოლოო პასუხის სათაურები, როცა PHP cURL გადაცემა პროქსის იყენებს.
სათაურის სტრიქონები პასუხის სხეულისგან ცალკე შეაგროვეთ. პროქსის გავლით გადაცემამ შეიძლება ერთ ოპერაციაში მოგაწოდოს CONNECT-ის, ავთენტიფიკაციის, გადამისამართებისა და დანიშნულების პასუხის სათაურები:
$headerLines = [];
curl_setopt($handle, CURLOPT_HEADERFUNCTION,
function ($handle, $line) use (&$headerLines) {
$headerLines[] = $line;
return strlen($line);
}
);
ეს callback ინახავს ნედლი სტრიქონების თანმიმდევრობას და აბრუნებს მიღებული ბაიტების რაოდენობას. ის სრულ სტრიქონებს იღებს; თუმცა ჯერ არ აჯგუფებს მათ პასუხებად და არ ირჩევს საბოლოო ვებსაიტის სათაურებს.
განმარტეთ თანმიმდევრობა ბლოკებად
HTTP სტატუსის სტრიქონი იწყებს პასუხის ბლოკს, ხოლო ცარიელი სტრიქონი ამთავრებს მის სათაურებს. შეინახეთ ეს საზღვრები საბოლოო დანიშნულების პასუხის არჩევამდე. შუალედური ავთენტიფიკაციის მცდელობები და გადამისამართებები შეიძლება თითოეულმა ბლოკები დაამატოს.
Trailer-ები შეიძლება მოგვიანებით მოვიდეს callback-ის მეშვეობით. შეინახეთ პარსერის საკმარისი მდგომარეობა, რომ ისინი საწყისი სათაურებისგან გამოყოთ, ყოველი შემდგომი ველის პირველ პასუხზე მიმაგრების ნაცვლად.
შეინახეთ ან ჩაახშვით გვირაბის მტკიცებულება
HTTPS გვირაბის CONNECT სტატუსისთვის CURLINFO_HTTP_CONNECTCODE ცალკე წაიკითხეთ. მიღებული გვირაბი არ ადასტურებს ვებსაიტის წარმატებულ პასუხს.
თუ შემგროვებელს CONNECT-ის სათაურები არ სჭირდება, CURLOPT_SUPPRESS_CONNECT_HEADERS აკონტროლებს მათ მიწოდებას კონფიგურირებულ სათაურის გამოსავალზე და callback-ის ბილიკებზე. შეამოწმეთ მხარდაჭერა დაკავშირებულ libcurl-სა და PHP build-ში. ჩახშობა ამარტივებს შეგროვებას, მაგრამ აშორებს სათაურის დონის გვირაბის მტკიცებულებას, რომელიც დიაგნოსტიკას დაეხმარება.
ნუ აღადგენთ სხეულს ფიქსირებული ოფსეტით ან HTML ტეგის ძებნით. სათაურების ზომები იცვლება, შუალედური პასუხები განსხვავდება, ხოლო სხეული შეიძლება იყოს ბინარული ან ცარიელი. ძველი გამოშვებაზე სპეციფიკური შეცდომის ანგარიში არ ამართლებს გამოცნობილ ოფსეტს.
სხეულის დამუშავება ცალკე შეინახეთ და გადაცემის შეცდომა დაკვირვებულ პასუხის ეტაპებთან ერთად შეინახეთ, თუ შეგროვება ან ანალიზი ვერ მოხერხდა. ეს განასხვავებს შეწყვეტილ callback-ს, დამახინჯებულ აპლიკაციის მონაცემებს და უარყოფილ პროქსის გაცვლას.