Welke proxy gebruikte die PHP multi-cURL-overdracht?
Bewaar proxy-metadata bij elke cURL-handle en onderscheid de geconfigureerde route van een exit-IP dat de bestemming waarneemt.
Multi-cURL-overdrachten eindigen in hun eigen volgorde. Als je aan elke handle een andere proxy hebt toegewezen, hoort het eerst voltooide resultaat niet noodzakelijk bij de eerste proxy in je invoerlijst.
Voeg een stabiele overdrachtsidentificatie toe terwijl je elke handle configureert. Als je selecteerbare openbare eindpunten test, levert de HTTP-proxylijst HTTP-kandidaten. PHP stelt het private-data-mechanisme van libcurl beschikbaar:
$id = 'job-17';
curl_setopt($handle, CURLOPT_PROXY, 'http://203.0.113.10:8080');
curl_setopt($handle, CURLOPT_PRIVATE, $id);
Wanneer curl_multi_info_read() een voltooide overdracht meldt, gebruik de teruggegeven handle om de identificatie terug te halen:
$id = curl_getinfo($message['handle'], CURLINFO_PRIVATE);
Houd een applicatierecord bij dat op die identificatie is gesleuteld en de bestemming, de geconfigureerde proxy en het pogingsnummer bevat. Een nieuwe poging via een andere proxy verdient een nieuw pogingsrecord, ook al hoort die bij dezelfde overkoepelende taak.
Houd drie soorten adressen gescheiden
Het geconfigureerde proxy-eindpunt is het adres dat aan cURL wordt gegeven. Het peer-adres van een verbinding beschrijft de netwerkverbinding die cURL opende. Een exit-IP dat de bestemming waarneemt, is informatie die van de andere kant wordt gemeld. Ze kunnen verschillen, vooral bij geketende of door de provider beheerde proxies.
Private metadata leggen je bedoelde configuratie vast; ze kunnen niet bewijzen welk IP de bestemming zag. Omgekeerd zegt een IP-antwoord van een bestemming niet automatisch welke handle in je programma het heeft geproduceerd.
Bewaar een veilige proxy-identificatie in routinelogs. Als het volledige eindpunt inloggegevens bevat, verspreidt het loggen van die URL bij elke mislukte overdracht het wachtwoord over je hele foutverzameling.
Deze kleine boekhoudstap maakt gemengde resultaten makkelijker leesbaar: één taak, één poging, één gekozen proxy en één werkelijk resultaat. Het vermijdt ook te vertrouwen op toevallige handle-weergaven die veranderden tussen de resource- en objectgebaseerde cURL-API's van PHP.