Maison  >  Article  >  développement back-end  >  Comment faire un anti-crawling en python

Comment faire un anti-crawling en python

(*-*)浩
(*-*)浩original
2019-07-01 14:10:112997parcourir

Un robot d'exploration Web est un programme qui extrait automatiquement des pages Web. Il télécharge des pages Web du World Wide Web pour les moteurs de recherche et constitue un composant important des moteurs de recherche. Mais lorsque les robots d'exploration du Web sont exploités à mauvais escient, trop de choses homogènes apparaissent sur Internet et l'originalité ne peut être protégée. En conséquence, de nombreux sites Web ont commencé à lutter contre les robots d’exploration et ont essayé par tous les moyens de protéger leur contenu.

Comment faire un anti-crawling en python

1 : User-Agent + Détection de référents (apprentissage recommandé : Tutoriel vidéo Python)

Utilisateur -Agent est un champ du protocole HTTP. Sa fonction est de décrire certaines informations sur le terminal qui émet la requête HTTP.

Permet au serveur d'identifier le système d'exploitation et la version, le type de processeur, le navigateur et la version, le moteur de rendu du navigateur, la langue du navigateur, le plug-in du navigateur, etc. utilisés par le client.

Le serveur peut utiliser ce champ pour savoir qui visite le site Web. Bloquez les utilisateurs qui ne sont pas des navigateurs normaux.

Solution :

Déguiser l'agent utilisateur du navigateur, car l'agent utilisateur de chaque navigateur est différent et tous les utilisateurs peuvent utiliser un navigateur. Toute détection UA ​​peut être résolue en conditionnant l'agent utilisateur du navigateur à chaque requête

Le référent fait partie de l'en-tête Lorsque le navigateur envoie une requête au serveur Web, il amène généralement le référent et indique au serveur lequel. page à partir de laquelle j'ai créé un lien ? Par exemple, certains sites Web d'images détecteront la valeur de votre référent lorsque vous demandez une image. Si le référent ne correspond pas, les images normales ne seront pas renvoyées.

Solution :

Dans la requête de détection du référent, porter la valeur du référent correspondant.

Deux : obfuscation et rendu js

La soi-disant obscurcissement JavaScript est essentiellement :

1. Supprimer certaines choses. qui ne sont pas réellement appelés fonction.

2. Combinez les déclarations de variables dispersées.

3. Simplification des fonctions logiques.

4. Simplification des noms de variables. Cela dépend des avantages et des inconvénients des différents outils de compression. Les outils courants incluent UglifyJS, JScrambler et d'autres outils.

Le rendu JS est en fait une modification de la page HTML. Par exemple, certaines pages Web elles-mêmes ne renvoient pas de données. Les données sont ajoutées au HTML après le chargement de js. Lorsque nous rencontrons cette situation, nous devons savoir que le robot n'effectuera pas d'opérations JavaScript. Il faut donc traiter ce problème autrement.

Solution :

1. Trouvez le code clé en lisant le code source js du site Web et implémentez-le en python.

2. Trouvez le code clé en lisant le code source js du site Web et utilisez PyV8, execjs et d'autres bibliothèques pour exécuter directement le code js.

3. Simulez directement l'environnement du navigateur via la bibliothèque Selenium

3 : Fréquence limite IP

Les systèmes WEB sont connectés au conteneur WEB via le protocole http Oui, chaque requête générera au moins une connexion TCP entre le client et le serveur.

Pour le serveur, vous pouvez voir clairement les requêtes initiées par une adresse IP dans une unité de temps.

Lorsque le nombre de requêtes dépasse une certaine valeur, cela peut être déterminé comme une demande anormale de l'utilisateur.

Solution :

1. Concevez votre propre pool de proxy IP et emportez une adresse proxy différente à chaque demande par rotation.

2. La numérotation dynamique ADSL a une fonctionnalité unique. Chaque fois que vous composez un numéro, vous obtenez une nouvelle adresse IP. Autrement dit, son adresse IP n'est pas fixe.

Quatre : Code de vérification

Le code de vérification (CAPTCHA) est un "test PublicTuring entièrement automatisé pour distinguer les ordinateurs et les humains" (test de Turing entièrement automatisé pour distinguer les ordinateurs et les humains ) ) est un programme public entièrement automatisé qui distingue si l'utilisateur est un ordinateur ou un humain.

Il peut empêcher : le piratage malveillant des mots de passe, la fraude aux tickets, l'inondation des forums et empêche efficacement un pirate informatique d'utiliser un programme spécifique pour forcer brutalement un utilisateur enregistré spécifique à effectuer des tentatives de connexion continues.

Cette question peut être générée et jugée par un ordinateur, mais seul un humain peut y répondre. Puisque les ordinateurs ne peuvent pas répondre aux questions CAPTCHA, l’utilisateur qui répond aux questions peut être considéré comme un humain.

Solution :

1. Identification manuelle du code de vérification

2. Identification pytesseract du code de vérification simple

3. Plateforme de codage

4. Apprentissage automatique

Pour plus d'articles techniques liés à Python, veuillez visiter la colonne Tutoriel Python pour apprendre !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn