Ktorý proxy použil ten PHP multi-cURL prenos?
Uchovávajte metadáta proxy pri každom cURL handle a odlišujte nakonfigurovanú trasu od výstupnej IP pozorovanej cieľom.
Prenosy multi-cURL končia vo vlastnom poradí. Ak ste každému handle priradili iný proxy, prvý dokončený výsledok nemusí patriť prvému proxy vo vašom vstupnom zozname.
Pri konfigurácii každého handle pripojte stabilný identifikátor prenosu. Ak testujete voliteľné verejné koncové body, zoznam HTTP proxy poskytuje HTTP kandidátov. PHP sprístupňuje mechanizmus súkromných dát libcurl:
$id = 'job-17';
curl_setopt($handle, CURLOPT_PROXY, 'http://203.0.113.10:8080');
curl_setopt($handle, CURLOPT_PRIVATE, $id);
Keď curl_multi_info_read() ohlási dokončený prenos, použite vrátený handle na obnovenie identifikátora:
$id = curl_getinfo($message['handle'], CURLINFO_PRIVATE);
Vedieme záznam aplikácie kľúčovaný týmto identifikátorom obsahujúci cieľ, nakonfigurovaný proxy a číslo pokusu. Opakovaný pokus cez iný proxy si zaslúži nový záznam pokusu, aj keď patrí k tej istej celkovej úlohe.
Držte tri druhy adries oddelene
Nakonfigurovaný koncový bod proxy je adresa odovzdaná cURL. Adresa partnera spojenia opisuje sieťové spojenie, ktoré cURL otvoril. Výstupná IP pozorovaná cieľom je informácia hlásená z druhej strany. Môžu sa líšiť, najmä pri reťazených proxy alebo proxy spravovaných poskytovateľom.
Súkromné metadáta zaznamenávajú zamýšľanú konfiguráciu; nemôžu dokázať, akú IP cieľ pozoroval. Naopak, IP odpoveď cieľa vám automaticky nepovie, ktorý handle vo vašom programe ju vytvoril.
Ukladajte bezpečný identifikátor proxy do bežných logov. Ak plný koncový bod obsahuje prihlasovacie údaje, logovanie tejto URL pri každom neúspešnom prenose rozšíri heslo po celej vašej zbierke chýb.
Tento malý účtovný krok uľahčuje čítanie zmiešaných výsledkov: jedna úloha, jeden pokus, jeden vybraný proxy a jeden skutočný výsledok. Tiež sa vyhýba spoliehaniu na náhodné reprezentácie handle, ktoré sa zmenili medzi cURL API PHP založenými na zdrojoch a na objektoch.