Hvilken proxy brukte den PHP multi-cURL-overføringen?
Behold proxy-metadata sammen med hvert cURL-håndtak, og skille den konfigurerte ruten fra en utgangs-IP som destinasjonen ser.
Multi-cURL-overføringer fullføres i sin egen rekkefølge. Hvis du tildelte en annen proxy til hvert håndtak, tilhører ikke det første fullførte resultatet nødvendigvis den første proxyen i inndatalisten din.
Fest en stabil overføringsidentifikator når du konfigurerer hvert håndtak. Hvis du tester valgbare offentlige endepunkter, leverer HTTP-proxylisten HTTP-kandidater. PHP eksponerer libcurls mekanisme for private data:
$id = 'job-17';
curl_setopt($handle, CURLOPT_PROXY, 'http://203.0.113.10:8080');
curl_setopt($handle, CURLOPT_PRIVATE, $id);
Når curl_multi_info_read() rapporterer en fullført overføring, bruk håndtaket som returneres for å gjenopprette identifikatoren:
$id = curl_getinfo($message['handle'], CURLINFO_PRIVATE);
Hold en applikasjonspost nøklet av den identifikatoren som inneholder destinasjonen, den konfigurerte proxyen og forsøksnummeret. Et nytt forsøk gjennom en annen proxy fortjener en ny forsøkspost, selv om det hører til samme overordnede jobb.
Hold tre typer adresser atskilt
Det konfigurerte proxy-endepunktet er adressen som gis til cURL. En tilkoblings peer-adresse beskriver nettverkstilkoblingen cURL åpnet. En utgangs-IP som destinasjonen ser, er informasjon rapportert fra den andre siden. De kan avvike, spesielt med kjedede eller leverandørstyrte proxyer.
Private metadata registrerer den tiltenkte konfigurasjonen din; de kan ikke bevise hvilken IP destinasjonen så. Omvendt forteller ikke en destinasjons IP-svar automatisk hvilket håndtak i programmet ditt som produserte det.
Lagre en sikker proxy-identifikator i rutinelogger. Hvis det fulle endepunktet inneholder legitimasjon, sprer logging av denne URL-en for hver mislykkede overføring passordet i hele feilsamlingen din.
Dette lille bokføringstrinnet gjør blandede resultater lettere å lese: én jobb, ett forsøk, én valgt proxy og ett faktisk resultat. Det unngår også å stole på tilfeldige håndtaksrepresentasjoner som endret seg mellom PHPs ressursbaserte og objektbaserte cURL-APIer.