Fara da sakamakon cURL lokacin da shafi da aka sauke ta proxy ya yi kama da bai cika ba. Amsa gajere, canji da ya kasa da cikakken shafin toshewa suna bukatar bayani daban-daban.

Tare da CURLOPT_RETURNTRANSFER a kunne a kan handle ɗin da aka riga aka saita:

$body = curl_exec($ch);
if ($body === false) {
    throw new RuntimeException(curl_error($ch), curl_errno($ch));
}

$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$downloaded = curl_getinfo($ch, CURLINFO_SIZE_DOWNLOAD_T);
$declared = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T);

Tattara waɗannan ƙima kafin ka saki handle ɗin. Tsananin kwatancen yana bambanta gazawar canji daga jikin da ya yi nasara kamar zaren fanko ko “0”. Matakan kuskuren HTTP ba gazawar curl_exec bane kai tsaye, don haka fassara matsayin kuma.

Ma’aunin abin da aka sauke ba ya haɗa da kawuna. Ƙimar da aka bayyana ta fito ne daga Content-Length kuma tana zama -1 lokacin da ba a san girman ba. Amsa na iya barin Content-Length bisa doka; ƙimar da ba a sani ba ba ita ce gano fayil ɗin da aka yanke ba.

Rarraba abun ciki ta atomatik yana kawo wani bambanci. Content-Length galibi yana bayyana wakilcin da aka matse, yayin da zaren PHP na iya ɗauke da bytes da aka buɗe. Kwatanta strlen($body) da wannan kawun yana kwatanta wakilci daban-daban.

cURL na iya ba da rahoton CURLE_PARTIAL_FILE lokacin da canjin ya keta girman da ake tsammani. Ka adana wannan kuskuren maimakon ɗaukar duk wani fitarwa marar fanko a matsayin nasara. Sabanin haka, nasarar canji tare da ƙaramin amsa 200 na iya zama dukan shafin da asalin ko proxy ya zaɓa ya mayar.

A ƙarshe duba abun cikin da ake bukata. HTML da cURL ya samo ba ya aikata JavaScript don cika shafin. Sassan da mai bincike ke nunawa na iya kasancewa ba su cikin ainihin amsar ko da kowane byte da aka aika ya iso.

Labarai masu alaƙa