
Apprendre à utiliser le proxy IP en PHP pour récupérer les données.
Engagé dans le web crawler les gars ont dû rencontrer la mauvaise chose 403 Forbidden, cette fois leIP proxyCela vous sauvera la vie. Aujourd'hui, nous utilisons la méthode la plus simple pour expliquer comment ajouter la fonctionnalité de proxy IP à cURL en PHP.
Pourquoi ne pas utiliser un crawl nu ?
De nombreux sites sont dotés de mécanismes anti-crawler, par exemple :
- Les visites fréquentes de la même adresse IP seront inscrites sur la liste noire.
- Les serveurs peuvent reconnaître les segments IP de la salle des serveurs
- Certains PI régionaux bénéficieront d'un traitement spécial
Cette fois, avec le pool d'adresses IP proxy d'ipipgo, c'est comme si l'on mettait un masque à gaz sur le crawler pour éviter efficacement ces pièges de surveillance.
Code pratique à utiliser
Examinons une version de base de la configuration :
$ch = curl_init() ;
curl_setopt($ch, CURLOPT_URL, "Destination URL") ;
curl_setopt($ch, CURLOPT_PROXY, "Proxy IP address:Port") ; curl_setopt($ch, CURLOPT_PROXY, "Proxy IP address:Port") ;
curl_setopt($ch, CURLOPT_PROXYUSERPWD, "account:password") ; curl_setopt($ch, CURLOPT_PROXYUSERPWD, "Account:Password") ;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1) ;
$output = curl_exec($ch) ;
Concentrez-vous sur ces trois paramètres :
| paramètres | correspond à l'anglais -ity, -ism, -ization |
|---|---|
| CURLOPT_PROXY | Remplir l'adresse du serveur proxy |
| CURLOPT_PROXYTYPE | Type d'agent (peut être omis) |
| CURLOPT_PROXYUSERPWD | Informations sur la certification |
Commutation automatique de l'IP
Si vous voulez avoir un fonctionnement stable et de longue durée, vous devez apprendre à changer d'IP automatiquement. Le service de proxy dynamique d'ipipgo est recommandé ici, et son API peut obtenir les dernières IP en temps réel :
// Obtenir le pool d'adresses IP du proxy à partir d'ipipgo
$ipPool = json_decode(file_get_contents("https://api.ipipgo.com/getips?type=php")) ;
foreach($ipPool as $proxy){
curl_setopt($ch, CURLOPT_PROXY, $proxy->ip." :".$proxy->port) ;
// Ajouter la logique de gestion des erreurs ici
if(curl_errno($ch) == 0){
break ; // sortir de la boucle en cas de succès
}
}
Un guide indispensable pour éviter le gouffre
1. Ne soyez pas paresseux avec les paramètres du délai d'attenteCURLOPT_TIMEOUT : Il est recommandé de fixer CURLOPT_TIMEOUT à 8-15 secondes, ce qui est trop court pour les faux positifs.
2. N'oubliez pas de nettoyer vos traces.CURLOPT_USERAGENT : Ajoutez CURLOPT_USERAGENT pour masquer le navigateur.
3. Vérifier la validité du proxy: vérifier périodiquement le code d'état de la réponse à l'aide de curl_getinfo
Foire aux questions QA
Q : Les adresses IP proxy ne fonctionnent pas lorsque je les utilise ?
R : Dans ce cas, il est recommandé d'utiliser le proxy dynamique à courte durée de vie d'ipipgo, dont le temps de survie de l'IP peut être précis à la minute près.
Q : Les données renvoyées sont toujours incomplètes ?
A : Essayez d'ajouter le paramètre CURLOPT_ENCODING, certains serveurs proxy compressent les données !
Q : Comment puis-je savoir si une procuration est anonyme ?
R : En utilisant l'interface de détection fournie par ipipgo, l'en-tête X-FORWARDED-FOR est renvoyé.
Enfin, pour être honnête, maintenir un pool d'IP proxy par soi-même est à la fois coûteux et épuisant. Les fournisseurs de services professionnels comme ipipgo offrent non seulementDes dizaines de millions de ressources IPLa première est que le SDK PHP est un bon paquet, et que la documentation de l'interface est également écrite de manière humaine. Leur kit de développement PHP est tout à fait parfait, la documentation sur le docking est également écrite en termes humains, il est recommandé de l'utiliser directement.

