Alo
Mulți dintre cei care au scris parserii s-au confruntat cu o situație foarte neplăcută atunci când site-ul blochează cererile frecvente dintr-un singur IP. Dacă setați întârzierea cu somnul (), procesul este foarte lent, ceea ce nu ne ajută foarte mult.
După căutarea unei soluții pentru un timp, toată lumea înțelege că, pentru ca serverul la care sunt trimise cererile să nu le blocheze, trebuie să utilizați servere proxy.
Ei bine, bine, soluția este găsită! Programatorul, mulțumit de el însuși, caută liste proxy. Dacă sarcina pe care trebuie să o execute este mică, el găsește cu succes mai mulți proxy-uri IP, le scrie manual într-un fișier și le folosește cu succes.
Dar dacă trebuie să faceți o mulțime de solicitări, o duzină de proxy nu va fi de ajuns pentru noi. În groază, descoperim vestea că nu există liste mari de procuri, din care 100% ar funcționa și vor fi oferite gratuit.
Proxy-urile gratuite nu mai funcționează adesea după o zi de lucru. Și chiar dacă astăzi copiem câteva sute de procuri pentru noi înșine, în ziua următoare jumătate dintre ei vor fi indisponibili.
Într-o zi m-am confruntat cu această situație. Nu știam ce să fac. Bineînțeles că ați putea cumpăra liste de proxy plătite, dar nu o opțiune, deoarece toate proxy-urile vor fi 100% active.
Așadar, am ajuns la concluzia că trebuie să verifici cumva serverele proxy pentru eficiență înainte de a le folosi. Așa că am decis să scriu un script de verificare, pe care să-i prezint:
După cum puteți vedea, în clasa proxy deja încărcată cu site-ul freeproxylists.com și nu trebuie să caute undeva un proxy, iar apoi să treacă testarea. Totul este deja făcut de mine
Acum, să examinăm câteva metode din această clasă. În primul rând, metoda de verificare (checkProxy ()):
Pentru a executa interogări folosind FLEXIE, sau mai degrabă RollingCurl bibliotecă (descărcați-l puteți cu GitHub), care este construit pe un standard de FLEXIE. Lucrul cu această bibliotecă este foarte convenabil, deoarece puteți folosi așa-numita multithreading, adică mai multe interogări pot fi executate independent una de cealaltă. Astfel, pentru o anumită perioadă de timp, putem verifica un număr mai mare de servere proxy.
Înainte de a utiliza această clasă, trebuie să setați DOMAIN constant, în care specificați domeniul dvs., de exemplu:
Excelent, constanta este setata. Acum trebuie să facem niște interogări printr-un anumit proxy, de unde vom primi răspunsul. Să creați un fișier "replyproxy.php" pentru acest lucru în rădăcina site-ului, în care pur și simplu puneam cuvântul "succes". Nu mai este nevoie de nimic în ea.
Este necesar ca clasa să facă cereri la acest dosar și să primească conținutul său.
În metoda checkProxy, specificăm calitatea funcției de apel invers ca metodă Proxy :: callbackCheck, în care verificăm dacă cuvântul "succes" este prezent în răspuns. Dacă este prezent, amintiți-vă acest proxy, ca lucru.
Ca rezultat, se va face o cerere la fișierul "replyproxy.php" printr-un anumit proxy și, dacă proxy-ul funcționează, vom primi conținutul fișierului "responseproxy.php".
Această clasă implementează, de asemenea, funcția de cache proxy validate pe zi. În metoda loadFromCache, se face o verificare pentru a vedea dacă există proxy-uri stocate pentru ziua curentă în dosarul tmp.
Memoria cache este salvată și citită folosind clasa Tmp, care este reprezentată mai jos:
De fapt, nu puteți folosi această clasă, dar schimbați ușor clasa Proxy pentru a utiliza Redis sau Memcashed.
Pentru a utiliza această clasă, trebuie să specificați constanta TMP, specificând calea de la rădăcină la dosarul în care veți stoca fișierele cu proxy-ul salvat.