Hvilken proxy brugte den PHP multi-cURL-overførsel?
Behold proxy-metadata sammen med hvert cURL-handtag, og skelne den konfigurerede rute fra en udgangs-IP, som destinationen ser.
Multi-cURL-overførsler afsluttes i deres egen rækkefølge. Hvis du tildelte en anden proxy til hvert handtag, hører det første afsluttede resultat ikke nødvendigvis til den første proxy i din inputliste.
Vedhæft en stabil overførselsidentifikator, når du konfigurerer hvert handtag. 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 afsluttet overførsel, skal du bruge det returnerede handtag til at gendanne identifikatoren:
$id = curl_getinfo($message['handle'], CURLINFO_PRIVATE);
Hold en applikationspost nøglet af den identifikator, der indeholder destinationen, den konfigurerede proxy og forsøgsnummeret. Et nyt forsøg gennem en anden proxy fortjener en ny forsøgspost, selv om det hører til samme overordnede opgave.
Hold tre slags adresser adskilt
Det konfigurerede proxy-endepunkt er den adresse, der gives til cURL. En forbindelses peer-adresse beskriver den netværksforbindelse, cURL åbnede. En udgangs-IP, som destinationen ser, er information rapporteret fra den anden side. De kan afvige, især med kædede eller udbyderstyrede proxyer.
Private metadata registrerer din tilsigtede konfiguration; de kan ikke bevise, hvilken IP destinationen så. Omvendt fortæller en destinations IP-svar ikke automatisk, hvilket handtag i dit program der producerede det.
Gem en sikker proxy-identifikator i rutinelogs. Hvis det fulde endepunkt indeholder legitimationsoplysninger, spreder logning af denne URL for hver mislykket overførsel adgangskoden i hele din fejlsamling.
Dette lille bogføringstrin gør blandede resultater lettere at læse: én opgave, ét forsøg, én valgt proxy og ét faktisk resultat. Det undgår også at stole på tilfældige handtagsrepræsentationer, der ændrede sig mellem PHPs ressourcebaserede og objektbaserede cURL-API'er.