
Pourquoi le crawler PHP est-il toujours bloqué ? Essayez cette astuce
Les frères engagés dans l'exploration du web savent qu'avec PHP, l'écriture d'un crawler est le plus grand casse-tête de l'IP bloqué. Le mois dernier, un frère qui compare les prix du commerce électronique m'a contacté pour me dire que son script s'exécutait en moins d'une demi-heure lors de l'arrêt, et que trois serveurs n'avaient pas fonctionné. Cette chose ah, pour le dire franchement n'est pas bon proxy IP cette arme magique.
// Code typique d'un crawler bloqué
$html = file_get_contents('https://目标网站.com') ;
La connexion directe susmentionnée revient à prendre un haut-parleur et à crier "Je suis un reptile", si vous ne bloquez pas, vous bloquez qui ? Nous devons apprendre à utiliser l'IP proxy pour nous couvrir.
Apprenez à écrire des crawlers avec des IP proxy !
Tout d'abord, permettez-moi de vous raconter une histoire vraie : après avoir aidé ce commerçant en ligne à passer à la solution de proxy IP, il a fonctionné pendant trois jours sans aucun problème. Ici, le service proxy ipipgo est un marronnier, son interface est très simple :
$proxy = 'http://username:password@gateway.ipipgo.com:9020' ;
$context = stream_context_create([
'http' => [
'proxy' => $proxy, 'request_fulluri' => true
'request_fulluri' => true
]
]) ;
$html = file_get_contents('destination URL', false, $context) ;
Attention à ne pas marcher dans ces nids-de-poule :
- ① N'oubliez pas de changer le mot de passe de votre compte pour celui que vous avez reçu d'ipipgo.
- ② différents types de proxy (HTTP/HTTPS/SOCKS5) pour choisir le bon port
- ③ Il est préférable que le délai d'attente ne dépasse pas 10 secondes.
Compétences pratiques : faire vivre la chenille longtemps trois axes
| jeu | Ce qu'il faut faire. | Paramètres recommandés |
|---|---|---|
| Rotation de la période d'enquête | Différents mandataires par demande | Paquets dynamiques d'ipipgo |
| intervalle de demande | Hibernation aléatoire 1-5 secondes | sleep(rand(1,5)) |
| Déguisement de l'en-tête | Informations sur le navigateur analogique | Définition de l'agent utilisateur |
Donnez un exemple complet de changement automatique d'IP :
function getProxyList() {
// Ici, nous appelons l'API ipipgo pour obtenir la dernière liste de proxy.
return json_decode(file_get_contents('https://api.ipipgo.com/proxy_pool')) ;
}
$retry = 3 ;
while($retry--) {
$proxies = getProxyList() ;
foreach($proxies as $proxy) {
try {
// Configure le proxy et envoie la requête
$html = doRequest($targetUrl, $proxy) ;
// Traite les données...
break ; }
} catch(Exception $e) {
// Enregistrement de l'échec dans le journal
continue ; } catch(Exception $e) { // Enregistrer l'échec dans le journal.
}
}
}
Foire aux questions QA
Q : Que dois-je faire si mon IP proxy ne fonctionne pas ?
R : choisissez ipipgo, qui peut remplacer automatiquement le pool d'IP des fournisseurs de services, leur famille mettant à jour chaque minute 2000 + nouvelles IP, ne peut tout simplement pas être épuisée !
Q : À quoi dois-je prêter attention lors de l'exploration d'un site web HTTPS ?
R : N'oubliez pas d'ajouter ces deux phrases au code :
stream_context_set_default(['ssl' => ['verify_peer' => false ] ]) ;
Cependant, la pratique formelle doit être configurée avec un certificat CA, vous pouvez demander une solution au support technique d'ipipgo.
Q : Comment savoir si un agent est vraiment efficace ?
A : Écrire un script de détection de battements de cœur qui visite périodiquement le serveurhttps://api.ipipgo.com/check_ipPour cette interface, un code d'état de 200 est renvoyé, indiquant que l'IP est disponible.
Enfin, je voudrais dire quelques mots du fond du cœur : cette histoire de crawler, c'est engager une bataille de longue haleine avec le site web. Avec le bon proxy IP, c'est comme si on portait un gilet pare-balles, on n'économise pas une demi-étoile. En particulier pour la collecte de données à grande échelle, directement sur le paquet ipipgo édition entreprise, il y a des personnes spéciales pour vous aider à déboguer la configuration, que leur propre jet beaucoup plus fort.

