
Pourquoi les crawlers Ruby sont-ils toujours bloqués ? Essayez ceci
Récemment, beaucoup de petits partenaires utilisant Ruby pour écrire un crawler ont rencontré un mal de tête - le site cible ne bouge pas sur le blocage de l'IP, que j'ai également planté l'année dernière, lorsque trois jours d'affilée pour écrire le script du crawler ne peut pas fonctionner, si en colère que j'ai presque cassé le clavier. Plus tard, j'ai découvert queLe problème est que l'IP est reconnu comme un trafic de machines.. Tout comme vous allez au supermarché et achetez toujours le même type de nouilles instantanées, le caissier peut se souvenir de votre visage, le serveur web n'est pas végétarien.
Les scripts Ruby en catimini
La clé pour ne pas se faire prendre par un crawler est d'apprendre àlit. gilet rotatifC'est une bonne idée. Les gilets mentionnés ici sont des IP proxy, ce qui revient à changer de vêtements et à porter une perruque chaque fois que l'on va au supermarché. Prenons le service d'ipipgo comme marronnier, ils ont une énorme quantité de pool d'IP résidentielles, avec une douceur particulière :
nécessite 'net/http'
proxy_addr = 'gateway.ipipgo.com'
proxy_port = 9021
uri = URI('http://目标网站.com')
Net::HTTP.start(uri.host, uri.port, proxy_addr, proxy_port) do |http|
response = http.get(uri.path)
met response.body
end
Remarquez dans le code queproxy_addrrépondre en chantantport_proxyCes deux paramètres sont nos accessoires furtifs. Le serveur proxy d'ipipgo prend en charge une variété de méthodes d'authentification.Nom d'utilisateur+mot de passe IP de liaisonLe modèle pose beaucoup moins de problèmes que ceux qui nécessitent des CAPTCHA dynamiques.
Guide pratique pour éviter la fosse
Il ne suffit pas d'être capable d'utiliser des proxies, voici quelques nids de poule dans lesquels je me suis aventuré :
| phénomène problématique | méthode régler un problème |
|---|---|
| Elle renvoie soudain une erreur 403 | Changement immédiat de l'adresse IP du proxy, délai de 5 à 10 minutes pour la commutation automatique |
| Connexion interrompue sans réponse | Vérifiez si l'adresse du serveur proxy n'est pas incorrectement renseignée, ipipgo dispose d'une liste en temps réel des nœuds disponibles en arrière-plan. |
| Saisie incomplète des données | Ajouter les caractéristiques du navigateur dans l'en-tête de la requête, comme la rotation aléatoire de User-Agent |
La chose la plus importante à retenir à propos de User-Agent est qu'il ne faut pas utiliser l'identifiant par défaut de Ruby pour gagner du temps. Il est recommandé de créer un tableau de dizaines d'identifiants de navigateurs courants, et d'en sélectionner un au hasard pour chaque requête.
Conseils pour l'entretien des chenilles
L'élevage de reptiles est comparable à celui d'un animal de compagnie : il faut les nourrir et les entretenir régulièrement :
- Vérifier le taux de disponibilité des IP tous les jours, l'arrière-plan d'ipipgo peut voir le taux de réussite de chaque IP.
- Mise en place d'une politique de commutation intelligente pour changer automatiquement d'adresse IP en cas de 3 défaillances consécutives
- Exécuter des tâches portant sur de gros volumes de données entre 2 et 5 heures du matin, lorsque les mécanismes de défense du site sont plus laxistes.
Une fois que j'ai été paresseux pendant un demi-mois sans maintenance, les résultats d'un jour ont soudainement trouvé que l'efficacité du crawler en baisse 70%. Plus tard, j'ai trouvé que le site cible a mis à jour la stratégie anti-climbing, l'ajustement opportun de l'intervalle de demande pour sauver le retour.
Foire aux questions QA
Q : Les proxys gratuits fonctionnent-ils ?
R : Jamais ! J'ai essayé d'utiliser des proxys gratuits l'année dernière et 8 sur 10 n'ont pas fonctionné et j'ai rencontré des proxys de phishing. J'ai ensuite opté pour le service payant d'ipipgo, et la stabilité s'est améliorée de trois crans.
Q : Dois-je changer fréquemment l'adresse IP du proxy ?
R : Cela dépend du scénario de l'entreprise. S'il s'agit d'une collecte très fréquente, il est recommandé de changer d'adresse IP pour chaque demande. Le pool dynamique d'ipipgo dispose de millions d'adresses IP, ce qui est tout à fait suffisant.
Q : Que dois-je faire si un site web me demande un code de vérification ?
R : Dans ce cas, il ne suffit pas de changer d'adresse IP, il faut aussi contrôler la fréquence des requêtes. En réglant l'intervalle de demande de manière aléatoire entre 3 et 8 secondes, vous pouvez réduire efficacement la probabilité de déclencher le CAPTCHA.
Enfin, il est important d'être un bon "crawler".Développement durableLa première chose que j'ai faite a été d'utiliser le service proxy d'ipipgo + la stratégie de planification intelligente. Le mois dernier, j'ai aidé l'entreprise d'un ami à mettre au point un système de crawler. Grâce au service proxy d'ipipgo et à la stratégie de planification intelligente, le fonctionnement continu et stable a duré 28 jours sans être bloqué, et l'efficacité de la collecte a également été améliorée de 40%.

