A fejlécsorokat a válasz törzsétől elkülönítve gyűjtse. A proxyn keresztüli átvitel egyetlen műveletben szállíthat CONNECT-, hitelesítési-, átirányítási és célválasz-fejléceket:

$headerLines = [];
curl_setopt($handle, CURLOPT_HEADERFUNCTION,
    function ($handle, $line) use (&$headerLines) {
        $headerLines[] = $line;
        return strlen($line);
    }
);

Ez a visszahívás megőrzi a nyers sorrendet, és visszaadja az elfogadott bájtok számát. Teljes sorokat kap; azonban még nem csoportosítja őket válaszokba, és nem választja ki a végső webhely fejléceit.

Értelmezze a sorozatot blokkokként

Egy HTTP státuszsor válaszblokkot kezd, és egy üres sor zárja le annak fejléceit. Őrizze meg ezeket a határokat, mielőtt a végső célválaszt kiválasztja. A köztes hitelesítési kísérletek és átirányítások külön-külön is hozzáadhatnak blokkokat.

A trailerek később érkezhetnek a visszahíváson keresztül. Tartson fenn elegendő elemzőállapotot, hogy megkülönböztesse őket a kezdeti fejlécektől, ahelyett hogy minden későbbi mezőt az első válaszhoz csatolna.

Tartsa meg vagy nyomja el az alagút bizonyítékát

Olvassa a CURLINFO_HTTP_CONNECTCODE külön az HTTPS-alagút CONNECT állapotához. Az elfogadott alagút nem bizonyít sikeres webhelyválaszt.

Ha a gyűjtőnek nincs szüksége CONNECT-fejlécekre, a CURLOPT_SUPPRESS_CONNECT_HEADERS szabályozza azok továbbítását a beállított fejléc-kimenethez és a visszahívási útvonalakhoz. Ellenőrizze a támogatást a kapcsolt libcurl-ben és PHP-buildben. Az elnyomás egyszerűsíti a gyűjtést, de eltávolítja a fejléc szintű alagút-bizonyítékot, amely segíthet a diagnózisban.

Ne állítsa helyre a törzset fix eltolással vagy HTML-címke keresésével. A fejlécek mérete változik, a köztes válaszok eltérnek, és a törzs lehet bináris vagy üres. Egy régi, kiadásspecifikus hibajelentés nem indokolja a becsült eltolást.

Tartsa külön a törzs kezelését, és őrizze meg az átviteli hibát a megfigyelt válaszszakaszokkal együtt, ha a gyűjtés vagy az elemzés meghiúsul. Ez megkülönbözteti a megszakított visszahívást, a hibás alkalmazásadatokat és az elutasított proxycserét.

Kapcsolódó cikkek