Quale proxy ha usato quel trasferimento PHP multi-cURL?
Conserva i metadati del proxy con ogni handle cURL e distingui il percorso configurato da un IP di uscita osservato dalla destinazione.
I trasferimenti multi-cURL terminano nel loro ordine. Se hai assegnato un proxy diverso a ogni handle, il primo risultato completato non appartiene necessariamente al primo proxy della tua lista di input.
Allega un identificatore di trasferimento stabile mentre configuri ogni handle. Se stai testando endpoint pubblici selezionabili, la lista di proxy HTTP fornisce candidati HTTP. PHP espone il meccanismo dei dati privati di libcurl:
$id = 'job-17';
curl_setopt($handle, CURLOPT_PROXY, 'http://203.0.113.10:8080');
curl_setopt($handle, CURLOPT_PRIVATE, $id);
Quando curl_multi_info_read() segnala un trasferimento completato, usa l'handle restituito per recuperare l'identificatore:
$id = curl_getinfo($message['handle'], CURLINFO_PRIVATE);
Tieni un record applicativo indicizzato da quell'identificatore contenente la destinazione, il proxy configurato e il numero di tentativo. Un nuovo tentativo tramite un altro proxy merita un nuovo record di tentativo, anche se appartiene allo stesso lavoro complessivo.
Tieni separati tre tipi di indirizzo
L'endpoint del proxy configurato è l'indirizzo fornito a cURL. L'indirizzo peer di una connessione descrive la connessione di rete aperta da cURL. Un IP di uscita osservato dalla destinazione è un'informazione riportata dall'altro lato. Possono differire, soprattutto con proxy concatenati o gestiti dal provider.
I metadati privati registrano la configurazione prevista; non possono dimostrare quale IP abbia osservato la destinazione. Viceversa, la risposta IP di una destinazione non ti dice automaticamente quale handle del tuo programma l'abbia prodotta.
Archivia un identificatore di proxy sicuro nei log di routine. Se l'endpoint completo contiene credenziali, registrare quell'URL per ogni trasferimento fallito diffonde la password in tutta la tua raccolta di errori.
Questo piccolo passaggio di contabilità rende i risultati misti più facili da leggere: un lavoro, un tentativo, un proxy selezionato e un esito reale. Evita anche di affidarsi a rappresentazioni accidentali dell'handle che sono cambiate tra le API cURL di PHP basate su risorse e su oggetti.