Melyik proxyt használta az a PHP multi-cURL átvitel?
Tartsa meg a proxy metaadatait minden cURL handle mellett, és különböztesse meg a beállított útvonalat a cél által látott kilépő IP-től.
A multi-cURL átvitelek a saját sorrendjükben fejeződnek be. Ha minden handle-hez más proxyt rendelt, az első befejezett eredmény nem feltétlenül a bemeneti listája első proxyjához tartozik.
Csatoljon stabil átvitel-azonosítót minden handle beállításakor. Ha kiválasztható nyilvános végpontokat tesztel, a HTTP proxy lista HTTP jelölteket kínál. A PHP feltárja a libcurl privát adatok mechanizmusát:
$id = 'job-17';
curl_setopt($handle, CURLOPT_PROXY, 'http://203.0.113.10:8080');
curl_setopt($handle, CURLOPT_PRIVATE, $id);
Amikor a curl_multi_info_read() befejezett átvitelről számol be, a visszaadott handle-lel kérje vissza az azonosítót:
$id = curl_getinfo($message['handle'], CURLINFO_PRIVATE);
Vezessen egy alkalmazásrekordot, amelynek kulcsa ez az azonosító, és tartalmazza a célt, a beállított proxyt és a kísérlet számát. Egy másik proxyn keresztüli újrapróbálkozás új kísérletrekordot érdemel, még akkor is, ha ugyanahhoz az átfogó feladathoz tartozik.
Tartsa külön a háromféle címet
A beállított proxy végpont a cURL-nek átadott cím. Egy kapcsolat peer címe a cURL által megnyitott hálózati kapcsolatot írja le. A cél által látott kilépő IP a másik oldalról jelentett információ. Ezek eltérhetnek, különösen láncolt vagy szolgáltató által kezelt proxyk esetén.
A privát metaadatok a szándékolt konfigurációt rögzítik; nem tudják bizonyítani, melyik IP-t látta a cél. Fordítva, a cél IP-válasza nem mondja meg automatikusan, hogy a programjában melyik handle állította elő.
Tároljon biztonságos proxy-azonosítót a rutinnaplókban. Ha a teljes végpont hitelesítő adatokat tartalmaz, akkor az URL naplózása minden sikertelen átvitelnél szétterjeszti a jelszót a teljes hibagyűjteményében.
Ez a kis könyvelési lépés könnyebben olvashatóvá teszi a vegyes eredményeket: egy feladat, egy kísérlet, egy kiválasztott proxy és egy tényleges eredmény. Elkerüli azt is, hogy a PHP erőforrás- és objektumalapú cURL API-jai között megváltozott véletlen handle-reprezentációkra támaszkodjon.