Kateri proxy je uporabil ta prenos PHP multi-cURL?
Hranite metapodatke proxyja pri vsakem handle cURL in ločite konfigurirano pot od izhodnega IP, ki ga vidi cilj.
Prenosi multi-cURL se končajo v svojem vrstnem redu. Če ste vsakemu handle dodelili drug proxy, prvi dokončani rezultat ne pripada nujno prvemu proxyju na vašem vhodnem seznamu.
Pri konfiguraciji vsakega handle priložite stabilen identifikator prenosa. Če preizkušate izbirne javne končne točke, seznam proxyjev HTTP ponuja kandidate HTTP. PHP razkrije mehanizem zasebnih podatkov libcurl:
$id = 'job-17';
curl_setopt($handle, CURLOPT_PROXY, 'http://203.0.113.10:8080');
curl_setopt($handle, CURLOPT_PRIVATE, $id);
Ko curl_multi_info_read() poroča o dokončanem prenosu, uporabite vrnjeni handle za obnovitev identifikatorja:
$id = curl_getinfo($message['handle'], CURLINFO_PRIVATE);
Vodite zapis aplikacije s ključem tega identifikatorja, ki vsebuje cilj, konfigurirani proxy in številko poskusa. Ponoven poskus prek drugega proxyja si zasluži nov zapis poskusa, tudi če spada k isti skupni nalogi.
Tri vrste naslovov hranite ločeno
Konfigurirana končna točka proxyja je naslov, ki se preda cURL. Naslov partnerja povezave opisuje omrežno povezavo, ki jo je odprl cURL. Izhodni IP, ki ga vidi cilj, so informacije, sporočene z druge strani. Lahko se razlikujejo, zlasti pri verižnih proxyjih ali proxyjih, ki jih upravlja ponudnik.
Zasebni metapodatki beležijo predvideno konfiguracijo; ne morejo dokazati, kateri IP je videl cilj. Nasprotno, odgovor IP cilja vam ne pove samodejno, kateri handle v vašem programu ga je ustvaril.
Shranjujte varen identifikator proxyja v rutinskih dnevnikih. Če celotna končna točka vsebuje poverilnice, beleženje tega URL pri vsakem neuspešnem prenosu razširi geslo po celotni zbirki napak.
Ta majhen računovodski korak olajša branje mešanih rezultatov: ena naloga, en poskus, en izbran proxy in en dejanski izid. Izogne se tudi zanašanju na naključne predstavitve handle, ki so se spremenile med cURL API PHP na osnovi virov in na osnovi objektov.