
Apprentissage pratique de l'utilisation de Jsoup pour récupérer des données sans bloquer le numéro
Crawler vieux fer devrait comprendre, maintenant le site anti-climbing de plus en plus stricte. La semaine dernière, mon disciple avec Jsoup a juste saisi 200 données, l'IP directement dans la liste noire. Aujourd'hui, avec les gars qui me harcèlent, comment utiliser un proxy IP avec Jsoup, pour que le crawler vive un peu plus longtemps.
Examen du fonctionnement de base de Jsoup
Tout d'abord, le code Jsoup le plus basique, pour le débutant qui vient de se réveiller. Notez queNe l'amenez jamais directement sur un site commercial.Les procès-verbaux sont bloqués :
Document doc = Jsoup.connect("https://目标网站.com")
.timeout(5000)
.timeout(5000) ; .get() ;
Elements items = doc.select(".product-item") ;
Il ne faudra pas plus d'une demi-heure pour que ce code déclenche un "reverse crawl", vous ne me croyez pas ? Ne me demandez pas comment je le sais...
Les IP proxy à la rescousse
Les sites web s'appuient fortement sur ces trois astuces pour identifier les robots d'indexation :
| Méthode de détection | Programme de réponse |
|---|---|
| Fréquence des demandes d'IP | Rotation des adresses IP des mandataires |
| Caractéristiques de l'en-tête de la demande | Simulation de navigateur |
| Analyse des trajectoires comportementales | Intervalle d'opération aléatoire |
L'une des choses les plus préjudiciables est le blocage d'IP, c'est-à-dire le fait de devoir recourir à des IP proxy pourlit. la cigale perd sa carapace (idiome) ; fig. disparaître en laissant une coquille vide. Par exemple, avec les proxys résidentiels d'ipipgo, le site ne peut pas savoir s'il s'agit d'une machine ou d'une personne réelle, chaque demande étant adressée à une IP différente.
Jsoup avec code proxy
Passons directement aux choses sérieuses, en prêtant attention à la section relative aux paramètres du proxy :
// Informations sur le proxy d'ipipgo
String proxyHost = "gateway.ipipgo.com" ;
int proxyPort = 9021 ;
Chaîne proxyUser = "votre compte" ; int
String proxyPass = "Mot de passe" ;
// Authentification par proxy
Authenticator.setDefault(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(proxyUser, proxyPass.toCharArray()) ;
}
}) ;
// Requête avec proxy
Document doc = Jsoup.connect("https://目标网站")
.proxy(proxyHost, proxyPort)
.userAgent("Mozilla/5.0 (Windows NT 10.0 ; Win64 ; x64) AppleWebKit...")
.timeout(30000)
.timeout(30000) ; .get().
A noter quelques arrêts au stand :
1) Ne réglez pas le délai d'attente trop court, il est recommandé de le fixer à plus de 20 secondes.
2. l'agent utilisateur doit être doté d'un ensemble complet de fonctions de navigation.
3. il est préférable de changer d'IP proxy pour chaque requête (l'API d'ipipgo peut effectuer une rotation automatique)
Conseils avancés contre le crawl inversé
Il ne suffit pas de faire appel à un agent, il faut aussi lui mettre des œillères :
// Attente aléatoire contre la détection de la fréquence
Thread.sleep((long)(Math.random() 3000 + 2000)) ;
// Fausser l'en-tête complet de la requête
Connexion conn = Jsoup.connect(url)
.header("Accept-Language", "zh-CN,zh;q=0.9")
.header("Accept-Encoding", "gzip, deflate, br")
.header("Cache-Control", "max-age=0") ;
Il ne sert à rien d'utiliser le meilleur agent si l'on ne prête pas attention à ces détails. C'est comme porter une chemise de nuit pour voler quelque chose, et se retrouver avec des chaussures fluorescentes aux pieds...
Session d'assurance qualité
Q : Que dois-je faire si mon IP proxy ne fonctionne pas ?
R : Il est recommandé d'utiliser le proxy résidentiel dynamique d'ipipgo, leur pool d'IP est mis à jour tous les jours 2 millions +, commutation automatique sans avoir à s'en soucier.
Q : Comment casser le CAPTCHA lorsque je le rencontre ?
R : Cela relève d'un autre domaine technique. Vous pouvez utiliser le proxy à session fixe d'ipipgo pour conserver la même IP afin de gérer le processus de vérification.
Q : L'agent est-il trop lent pour affecter l'efficacité ?
R : Il est très important de choisir le bon type d'agent. L'agent statique du centre de données d'ipipgo peut contrôler le temps de latence dans les 200 ms, ce qui est adapté à la nécessité de réagir rapidement sur les lieux !
Pourquoi recommander ipipgo
Après avoir utilisé de nombreux services proxy, j'ai fini par opter pour ipipgo pour trois raisons principales :
- soutienpaiement au volumeDes projets peu coûteux ne font pas de mal.
- exclusivitéDétection de survie IPFonction, filtrage automatique des IP non valides
- fournir unJournal des demandesC'est particulièrement pratique pour le débogage.
Récemment, ils ont organisé un événement, les nouveaux utilisateurs reçoivent 1G de trafic, et lorsque vous vous inscrivez, vous pouvez obtenir 20% de trafic supplémentaire en remplissant [JSOUP2023]. Si vous avez besoin d'aller sur le site officiel pour jeter un coup d'œil, nous ne mettrons pas le lien ici (pour ne pas faire de publicité).
Enfin, la technologie est une arme à double tranchant, et l'exploration des données doit se faire dans le respect des règles de l'Union européenne.Protocole des robotsrépondre en chantantLois et règlements pertinents. Ne vous mettez pas en danger pour quelques données, cela n'en vaut pas la peine !

