PHP cURL proksi başlıqları: CONNECT və hədəf cavabları
PHP cURL ötürməsi proksi istifadə etdikdə CONNECT, autentifikasiya, yönləndirmə və son cavab başlıqlarını ayrı saxlayın.
Başlıq sətirlərini cavabın gövdəsindən ayrı toplayın. Proksidən keçən ötürmə CONNECT, autentifikasiya, yönləndirmə və hədəf cavab başlıqlarını bir əməliyyatda çatdıra bilər:
$headerLines = [];
curl_setopt($handle, CURLOPT_HEADERFUNCTION,
function ($handle, $line) use (&$headerLines) {
$headerLines[] = $line;
return strlen($line);
}
);
Bu callback xam sətir ardıcıllığını saxlayır və qəbul edilən bayt sayını qaytarır. Tam sətirləri alır; hələ onları cavablara qruplaşdırmır və son vebsayt başlıqlarını seçmir.
Ardıcıllığı bloklar kimi şərh edin
HTTP status sətri cavab blokunu başladır, boş sətir isə onun başlıqlarını bitirir. Son hədəf cavabını seçməzdən əvvəl bu sərhədləri qoruyun. Aralıq autentifikasiya cəhdləri və yönləndirmələr hər biri bloklar əlavə edə bilər.
Trailer-lər sonra callback vasitəsilə gələ bilər. Hər sonrakı sahəni birinci cavaba bağlamaq yerinə, onları ilkin başlıqlardan ayırmaq üçün kifayət qədər parser vəziyyəti saxlayın.
Tunel dəlilini saxlayın və ya bastırın
HTTPS tunelinin CONNECT statusu üçün CURLINFO_HTTP_CONNECTCODE ayrıca oxuyun. Qəbul edilmiş tunel uğurlu vebsayt cavabı yaratmır.
Toplayıcı üçün CONNECT başlıqları lazım deyilsə, CURLOPT_SUPPRESS_CONNECT_HEADERS onların konfiqurasiya edilmiş başlıq çıxışına və callback yollarına çatdırılmasını idarə edir. Bağlı libcurl və PHP buraxılışında dəstəyi yoxlayın. Bastırma toplamanı sadələşdirir, lakin diaqnostikaya kömək edən başlıq səviyyəli tunel dəlilini silir.
Gövdəni sabit ofsetlə və ya HTML teqi axtararaq bərpa etməyin. Başlıq ölçüləri dəyişir, aralıq cavablar fərqlənir və gövdə binar və ya boş ola bilər. Köhnə buraxılışa aid xəta hesabatı təxmin edilən ofseti əsaslandırmır.
Gövdə emalını ayrı saxlayın və toplama və ya analiz uğursuz olarsa, ötürmə xətasını müşahidə edilən cavab mərhələləri ilə birlikdə saxlayın. Bu, kəsilmiş callback-i, pozulmuş tətbiq məlumatlarını və rədd edilmiş proksi mübadiləsini ayırd edir.