
Les données de PHP catch sont toujours bloquées ? Essayez cette astuce
Récemment, de nombreux frères m'ont demandé d'utiliser PHP curl pour saisir les données du site cible est toujours bloqué IP, anxieux de sauter directement aux pieds. C'est quelque chose que j'ai également rencontré il y a trois ans, et j'ai découvert plus tard que l'utilisation de l'IP proxy est comme donner le programme portant un gilet, aujourd'hui pour briser la porte aux gars.
Comprendre ce qui se passe avec les IP proxy
L'IP proxy équivaut à la demande de votre réseau pour trouver un acteur de substitution, comme si vous alliez au supermarché pour acheter des cigarettes et que vous étiez toujours reconnu par le patron, changez d'ami pour vous aider à aller acheter sur celui-ci. Il existe trois types de proxys sur le marché :
Proxy transparent - l'équivalent de prendre un ami et de s'annoncer (en révélant sa véritable IP)
Proxy anonyme - l'ami va seul mais porte vos vêtements (cache l'IP mais a des fonctions de proxy)
Proxy hautement anonyme - l'ami est complètement déguisé en passant (recommandé)
Voilà ce qu'il faut savoir ! Vous devez choisir votre agent.ipipgoCe type d'agents spécialisés, qui disposent d'une grande réserve d'adresses IP, peut, à chaque demande, changer de façon aléatoire l'armure du cheval, et le site cible ne peut tout simplement pas sentir le poids de la loi.
Vous apprend à mettre en place un proxy pour curl.
Prenons l'exemple de la collecte du prix d'une plateforme de commerce électronique : n'utilisez pas le code de l'agent qui est long comme ceci :
$ch = curl_init() ;
curl_setopt($ch, CURLOPT_URL, "https://目标网站.com") ;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1) ;
$output = curl_exec($ch) ;
en plus de celaipipgoPost-agence :
// Informations sur le proxy à partir du backend ipipgo
$proxy = '123.123.123.123:8888' ;
$auth = 'username:password' ;
$ch = curl_init() ;
curl_setopt($ch, CURLOPT_URL, "https://目标网站.com") ;
curl_setopt($ch, CURLOPT_PROXY, $proxy) ;
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $auth) ; curl_setopt($ch, CURLOPT_PROXYUSERPWD, $auth) ;
curl_setopt($ch, CURLOPT_TIMEOUT, 10) ; // définir un délai court pour le timeout
Notez que vous devez remplacer le nom d'utilisateur et le mot de passe paripipgoLe backend vous donne des informations d'authentification, et leur méthode de vérification par proxy est particulièrement conviviale pour les débutants.
Guide pour éviter le gouffre : 5 erreurs courantes commises par les débutants
1) IP proxy utilisée de manière répétée : la même demande continue d'IP est facile à identifier, il est recommandé que chaque demande d'IP différente soit traitée de la même manière.
2. le délai d'attente est trop long : il est recommandé qu'il soit inférieur à 10 secondes et, s'il est supérieur à 10 secondes, que l'adresse IP suivante soit modifiée.
3) Oublier la gestion des exceptions : après curl_exec pour vérifier si $output est null
4. l'en-tête UA n'est pas déguisé : n'oubliez pas de définir l'UA du navigateur courant avec curl_setopt
5) Ignorer les certificats HTTPS : ajoutez cette ligne pour éviter les problèmes de validation des certificats.
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false) ;
AQ pratique : Vous demandez, je réponds
Q : Que puis-je faire pour remédier à la lenteur de la vitesse IP du proxy ?
A : Préféréipipgo的国内BGP线路,实测能控制在200ms内
Q : Comment puis-je vérifier si l'agent est en fonction ?
R : Visitez http://httpbin.org/ip pour voir si l'IP renvoyée est une IP proxy.
Q : Que dois-je faire si je rencontre une erreur 403 ?
R : trois étapes : 1. vérifier si l'IP est bloquée 2. changer User-Agent 3. réduire la fréquence de collecte
Jeu de mise à niveau : commutation automatique des pools d'adresses IP
dépense ou fraisipipgoAPI pour obtenir des IP de manière dynamique, obtenir un script de gestion de pool d'IP :
// Obtenir le pool d'IP
$ip_list = json_decode(file_get_contents('https://api.ipipgo.com/getips?num=20')) ;
// Choisir une IP aléatoire
$rand_key = array_rand($ip_list) ;
$current_ip = $ip_list[$rand_key]['ip'].' :'.$ip_list[$rand_key]['port'] ;
Il est recommandé de changer l'IP toutes les 5 fois de collecte, avec le multithreading, l'efficacité peut être améliorée de 10 fois. Mais attention à la stratégie anti-climbing du site cible, il ne faut pas que les serveurs des autres soient bloqués.
Enfin, un mot, choisir le service proxy ne pas être avide de bon marché, avant d'utiliser un proxy gratuit, le résultat de la collecte de données sont tous les sites de phishing insérés dans la publicité. Maintenant, utilisezipipgoLa stabilité de l'ensemble des droits de propriété intellectuelle exclusifs est vraiment excellente, et le cœur du projet est solide.

