PHP cURL proxy fejlécek: CONNECT kontra célválaszok
Tartsa külön a CONNECT-, hitelesítési-, átirányítási és végső válaszfejléceket, amikor egy PHP cURL átvitel proxyt használ.
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.