Quin proxy va fer servir aquesta transferència multi-cURL de PHP?
Conserveu les metadades del proxy amb cada handle cURL i distingiu la ruta configurada de l'IP de sortida que observa la destinació.
Les transferències multi-cURL acaben en el seu propi ordre. Si heu assignat un proxy diferent a cada handle, el primer resultat completat no pertany necessàriament al primer proxy de la vostra llista d'entrada.
Adjunteu un identificador de transferència estable mentre configureu cada handle. Si proveu punts finals públics seleccionables, la llista de proxys HTTP proporciona candidats HTTP. PHP exposa el mecanisme de dades privades de libcurl:
$id = 'job-17';
curl_setopt($handle, CURLOPT_PROXY, 'http://203.0.113.10:8080');
curl_setopt($handle, CURLOPT_PRIVATE, $id);
Quan curl_multi_info_read() informa d'una transferència completada, feu servir el handle retornat per recuperar l'identificador:
$id = curl_getinfo($message['handle'], CURLINFO_PRIVATE);
Manteniu un registre d'aplicació indexat per aquest identificador que contingui la destinació, el proxy configurat i el número d'intent. Un reintent a través d'un altre proxy mereix un registre d'intent nou, encara que pertanyi al mateix treball global.
Manteniu tres tipus d'adreça separats
El punt final del proxy configurat és l'adreça proporcionada a cURL. L'adreça de l'igual d'una connexió descriu la connexió de xarxa que cURL va obrir. Una IP de sortida observada per la destinació és informació reportada des de l'altre costat. Poden diferir, especialment amb proxys encadenats o gestionats pel proveïdor.
Les metadades privades registren la vostra configuració prevista; no poden demostrar quina IP va observar la destinació. A l'inrevés, la resposta IP d'una destinació no us diu automàticament quin handle del vostre programa la va produir.
Emmagatzemeu un identificador de proxy segur als registres rutinaris. Si el punt final complet conté credencials, registrar aquesta URL per a cada transferència fallida escampa la contrasenya per tota la vostra col·lecció d'errors.
Aquest petit pas de comptabilitat fa que els resultats mixtos siguin més fàcils de llegir: un treball, un intent, un proxy seleccionat i un resultat real. També evita dependre de representacions incidentals del handle que van canviar entre les API cURL de PHP basades en recursos i basades en objectes.