Kurį proxy naudojo tas PHP multi-cURL perdavimas?
Laikykite proxy metaduomenis su kiekvienu cURL handle ir atskirkite sukonfigūruotą maršrutą nuo paskirties vietos matomo išėjimo IP.
Multi-cURL perdavimai baigiasi savo tvarka. Jei kiekvienam handle priskyrėte skirtingą proxy, pirmasis baigtas rezultatas nebūtinai priklauso pirmajam proxy jūsų įvesties sąraše.
Konfigūruodami kiekvieną handle pridėkite stabilų perdavimo identifikatorių. Jei bandote pasirenkamus viešuosius galinius taškus, HTTP proxy sąrašas siūlo HTTP kandidatus. PHP atskleidžia libcurl privataus duomenų mechanizmą:
$id = 'job-17';
curl_setopt($handle, CURLOPT_PROXY, 'http://203.0.113.10:8080');
curl_setopt($handle, CURLOPT_PRIVATE, $id);
Kai curl_multi_info_read() praneša apie baigtą perdavimą, naudokite grąžintą handle identifikatoriui atgauti:
$id = curl_getinfo($message['handle'], CURLINFO_PRIVATE);
Tvarkykite programos įrašą, kurio raktas yra tas identifikatorius, su paskirties vieta, sukonfigūruotu proxy ir bandymo numeriu. Pakartotinis bandymas per kitą proxy vertas naujo bandymo įrašo, net jei jis priklauso tai pačiai bendrai užduočiai.
Laikykite tris adresų tipus atskirai
Sukonfigūruotas proxy galinis taškas yra adresas, perduodamas cURL. Ryšio partnerio adresas apibūdina tinklo ryšį, kurį atidarė cURL. Paskirties vietos matomas išėjimo IP yra informacija, pranešama iš kitos pusės. Jie gali skirtis, ypač naudojant grandininius ar paslaugų teikėjo valdomus proxy.
Privatūs metaduomenys įrašo jūsų numatytą konfigūraciją; jie negali įrodyti, kurį IP matė paskirties vieta. Atvirkščiai, paskirties vietos IP atsakymas automatiškai nepasako, kuris jūsų programos handle jį sukūrė.
Saugokite saugų proxy identifikatorių įprastuose žurnaluose. Jei visame galiniame taške yra prisijungimo duomenų, to URL registravimas kiekvienam nepavykusiam perdavimui paskleidžia slaptažodį visoje jūsų klaidų kolekcijoje.
Šis mažas apskaitos žingsnis palengvina mišrių rezultatų skaitymą: viena užduotis, vienas bandymas, vienas pasirinktas proxy ir vienas tikras rezultatas. Jis taip pat padeda išvengti priklausomybės nuo atsitiktinių handle atvaizdavimų, kurie pasikeitė tarp PHP cURL API, pagrįstų ištekliais ir objektais.