
Utilisation de PHP pour capturer des données
Que craignez-vous le plus dans la collecte de données ? Bien sûr, c'est le blocage d'IP ! J'ai vu tellement de choses comme ça quand le site web cible est bloqué après avoir exécuté les scripts que j'ai travaillé si dur à écrire. Aujourd'hui, je vais vous apprendre à utiliser CURL natif avec l'IP proxy d'ipipgo pour obtenir un schéma de collecte stable comme un vieux chien.
Configuration de base de CURL à comprendre
Tout d'abord, l'ensemble comprend les paramètres de base de CURL de PHP, ce code est la racine de la collection :
$ch = curl_init() ; curl_setopt($ch, CURLOPT_URL, "destination URL") ; curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1) ; curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1) ; curl_setopt($ch, CURLOPT_HEADER, 0) ; curl_setopt($ch, CURLOPT_HEADER, 0) ; $output = curl_exec($ch) ;
centreCURLOPT_CONNECTTIMEOUT : N'oubliez pas d'ajouter le paramètre de délai d'attente (timeout) ! Il est recommandé de fixer CURLOPT_TIMEOUT à 20 secondes et CURLOPT_CONNECTTIMEOUT à 15 secondes, afin de ne pas laisser le script se bloquer.
La bonne façon d'ouvrir un proxy IP
Allez directement au code de configuration du proxy d'ipipgo, c'est ce qui vous sauvera la vie :
curl_setopt($ch, CURLOPT_PROXY, 'Proxy IP:port') ; curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'Account:password') ;
Lorsque vous utilisez le pool de proxy rotatif d'ipipgo, il est recommandé d'obtenir une nouvelle IP pour chaque requête. leur API pour l'obtenir est simple pour les voleurs :
$ip = file_get_contents('https://api.ipipgo.com/getproxy') ;
Techniques anti-blocage
| gréement | mode normal | modèle d'agence |
|---|---|---|
| collection quotidienne | 500 articles | 500,000+ |
| Durée de conservation | 2 heures | stabilité à long terme |
| probabilité d'être bloqué | 90% | <5% |
Conseils ciblésN'oubliez pas d'ajouter un User-Agent aléatoire dans l'en-tête, le pool d'IP proxy d'ipipgo est doté de cette fonction, ce qui permet d'économiser beaucoup de temps.
Ne pas négliger la gestion des exceptions
Capturer des scripts sans traitement des exceptions, c'est comme conduire une voiture sans ceinture de sécurité. Une triple police d'assurance à ajouter impérativement :
- curl_errno() vérifie les erreurs de réseau
- http_code détermine le statut de la réponse
- Mise en place du mécanisme de réessai automatique
if(curl_errno($ch)){
file_put_contents('error.log', date('Y-m-d H:i:s').''' Erreur:''.curl_error($ch). Erreur:'.curl_error($ch)."" , FILE_APPEND) ;
}
Questions fréquemment posées sur l'AQ
Q : Que dois-je faire si mon IP proxy tombe soudainement en panne ?
R : Avec la fonction de commutation intelligente d'ipipgo, l'API renvoie des adresses IP vérifiées et disponibles.
Q : Que dois-je faire si la vitesse de collecte est lente ?
R : Essayez leur ligne exclusive de proxy à haute vitesse, n'oubliez pas d'ajuster le paramètre de concurrence de CURL !
Q : Que dois-je faire si je dois collecter des sites web à l'étranger ?
R : ipipgo dispose d'adresses IP résidentielles statiques dans plus de 200 pays à travers le monde. Il suffit de choisir le nœud régional correspondant.
Programme de capture amélioré
Pour s'engager dans la collecte à grande échelle d'amis, une astuce : utiliser l'API d'ipipgo + Redis pour s'engager dans la gestion du pool d'IP, la structure du code est à peu près la suivante :
$redis = nouveau Redis() ;
$ipList = $redis->lRange('proxy_pool',0,-1) ;
foreach($ipList as $proxy){
// C'est ici que nous plaçons la logique de collecte
// L'échec de la collecte exclut automatiquement l'IP en cours.
}
N'oubliez pas de mettre en place une tâche programmée pour réapprovisionner automatiquement les IP fraîches via l'API d'ipipgo aux premières heures de chaque jour afin de garantir qu'il y a plus de 50 proxies disponibles dans le pool à tout moment.
Enfin, je voudrais dire quelques mots de mon cœur, n'essayez pas d'être bon marché lorsque vous choisissez un service proxy. Avant d'utiliser quelques services bon marché, 10 IP peuvent avoir 8 échecs. Plus tard, changer le paquet platine d'ipipgo, cher est cher, mais gagne dans la stabilité, le volume d'affaires directement plus de 3 fois. Leur fonction de routage intelligent est vraiment bonne, correspondant automatiquement à la ligne la plus rapide, économisant beaucoup de temps de débogage.

