Connexion aux sites Web avec Python

Connexion aux sites Web avec Python
La fonction de connexion est une fonctionnalité importante dans les applications Web d'aujourd'hui. Cette fonctionnalité permet de conserver le contenu spécial des non-utilisateurs du site et est également utilisé pour identifier également les utilisateurs premium. Par conséquent, si vous avez l'intention de gratter un site Web, vous pouvez trouver la fonction de connexion si le contenu n'est disponible que pour les utilisateurs enregistrés.

Les tutoriels de grattement sur le Web ont été couverts dans le passé, donc ce didacticiel ne couvre que l'aspect de l'accès aux sites Web en vous connectant avec du code au lieu de le faire manuellement en utilisant le navigateur.

Pour comprendre ce tutoriel et être en mesure d'écrire des scripts pour vous connecter aux sites Web, vous auriez besoin d'une certaine compréhension de HTML. Peut-être pas assez pour créer des sites Web impressionnants, mais suffisamment pour comprendre la structure d'une page Web de base.

Installation

Cela se ferait avec les demandes et les bibliothèques Beautiful Python. En tant que bibliothèques Python, vous auriez besoin d'un bon navigateur tel que Google Chrome ou Mozilla Firefox car ils seraient importants pour l'analyse initiale avant d'écrire du code.

Les demandes et les bibliothèques BeautifulSoup peuvent être installées avec la commande PIP à partir du terminal comme indiqué ci-dessous:

Demandes d'installation PIP
pip install BeautifulSoup4

Pour confirmer le succès de l'installation, activez le shell interactif de Python qui se fait en tapant python dans le terminal.

Puis importez les deux bibliothèques:

Demandes d'importation
De BS4 Import BeautifulSoup

L'importation est réussie s'il n'y a pas d'erreurs.

Le processus

La connexion à un site Web avec des scripts nécessite une connaissance de HTML et une idée de la façon dont le Web fonctionne. Voyons brièvement comment fonctionne le Web.

Les sites Web sont composés de deux pièces principales, du côté client et du côté serveur. Le côté client fait partie d'un site Web avec lequel l'utilisateur interagit, tandis que le côté serveur fait partie du site Web où la logique métier et d'autres opérations de serveur telles que l'accès à la base de données sont exécutées.

Lorsque vous essayez d'ouvrir un site Web via son lien, vous faites une demande au côté serveur pour vous chercher les fichiers HTML et d'autres fichiers statiques tels que CSS et JavaScript. Cette demande est connue sous le nom de demande de GET. Cependant, lorsque vous remplissez un formulaire, en téléchargeant un fichier multimédia ou un document, créant un message et cliquez sur un bouton de soumission, vous envoyez des informations sur le côté serveur. Cette demande est connue sous le nom de demande de poste.

Une compréhension de ces deux concepts serait importante lors de l'écriture de notre script.

Inspecter le site Web

Pour pratiquer les concepts de cet article, nous utiliserions le site Web des citations pour gratter.

La connexion aux sites Web nécessite des informations telles que le nom d'utilisateur et un mot de passe.

Cependant, comme ce site Web est juste utilisé comme preuve de concept, tout se passe. Par conséquent, nous utiliserions administrer comme le nom d'utilisateur et 12345 Comme le mot de passe.

Premièrement, il est important de visualiser la source de page car cela donnerait un aperçu de la structure de la page Web. Cela peut être fait en cliquant avec le bouton droit sur la page Web et en cliquant sur «Afficher la source de la page». Ensuite, vous inspectez le formulaire de connexion. Vous faites cela en cliquant avec le bouton droit sur l'une des cases de connexion et en cliquant inspecter l'élément. En inspectant l'élément, vous devriez voir saisir Tags puis un parent former Tag quelque part au-dessus. Cela montre que les connexions sont essentiellement des formes POSTEEd au côté serveur du site Web.

Maintenant, notez le nom Attribut des balises d'entrée pour le nom d'utilisateur et les boîtes de mot de passe, elles seraient nécessaires lors de la rédaction du code. Pour ce site, le nom attribut pour le nom d'utilisateur et le mot de passe sont nom d'utilisateur et mot de passe respectivement.

Ensuite, nous devons savoir s'il y a d'autres paramètres qui seraient importants pour la connexion. Expliquons rapidement cela. Pour augmenter la sécurité des sites Web, les jetons sont généralement générés pour empêcher les attaques de contrefaçon de site croisé.

Par conséquent, si ces jetons ne sont pas ajoutés à la demande de poste, la connexion échouerait. Alors, comment savons-nous de tels paramètres?

Il faudrait utiliser l'onglet réseau. Pour obtenir cet onglet sur Google Chrome ou Mozilla Firefox, ouvrez les outils du développeur et cliquez sur l'onglet réseau.

Une fois que vous êtes dans l'onglet réseau, essayez de rafraîchir la page actuelle et vous remarqueriez les demandes à venir. Vous devriez essayer de surveiller les demandes de poste envoyées lorsque nous essayons de vous connecter.

Voici ce que nous ferions ensuite, tout en onglet réseau qui s'ouvre. Mettez les détails de connexion et essayez de vous connecter, la première demande que vous verriez devrait être la demande de poste.

Cliquez sur la demande de publication et affichez les paramètres du formulaire. Vous remarqueriez que le site Web a un csrf_token paramètre avec une valeur. Cette valeur est une valeur dynamique, donc nous aurions besoin de capturer de telles valeurs en utilisant le OBTENIR Demande d'abord avant d'utiliser le POSTE demande.

Pour d'autres sites Web sur lesquels vous travailleriez, vous ne verriez probablement pas le csrf_token mais il peut y avoir d'autres jetons générés dynamiquement. Au fil du temps, vous iriez mieux à connaître les paramètres qui comptent vraiment pour faire une tentative de connexion.

Le code

Tout d'abord, nous devons utiliser les demandes et BeautifulSoup pour accéder au contenu de la page de la page de connexion.

à partir des demandes de session d'importation
De BS4 Import BeautifulSoup comme BS
avec session () comme s:
site = s.get ("http: // citations.toscrap.com / connexion ")
imprimer (site.contenu)

Cela imprimerait le contenu de la page de connexion avant de vous connecter et si vous recherchez le mot-clé «Connexion». Le mot-clé serait trouvé dans le contenu de la page montrant que nous n'avons pas encore de connexion.

Ensuite, nous recherchons le csrf_token Mot-clé qui a été trouvé comme l'un des paramètres lors de l'utilisation de l'onglet réseau plus tôt. Si le mot-clé affiche une correspondance avec un saisir Tag, alors la valeur peut être extraite à chaque fois que vous exécutez le script en utilisant BeautifulSoup.

à partir des demandes de session d'importation
De BS4 Import BeautifulSoup comme BS
avec session () comme s:
site = s.get ("http: // citations.toscrap.com / connexion ")
bs_content = bs (site.Contenu, "HTML.analyseur ")
token = bs_content.find ("input", "name": "csrf_token") ["valeur"]
login_data = "nom d'utilisateur": "admin", "mot de passe": "12345", "csrf_token": jeton
s.Post ("http: // citations.toscrap.com / login ", login_data)
home_page = s.get ("http: // citations.toscrap.com ")
imprimer (home_page.contenu)

Cela imprimerait le contenu de la page après la connexion, et si vous recherchez le mot-clé «déconnexion». Le mot-clé serait trouvé dans le contenu de la page montrant que nous avons pu nous connecter avec succès.

Jetons un coup d'œil à chaque ligne de code.

à partir des demandes de session d'importation
De BS4 Import BeautifulSoup comme BS

Les lignes de code ci-dessus sont utilisées pour importer l'objet de session à partir de la bibliothèque de requêtes et de l'objet BeautifulSoup de la bibliothèque BS4 à l'aide d'un alias de bs.

avec session () comme s:

La session des demandes est utilisée lorsque vous avez l'intention de garder le contexte d'une demande, afin que les cookies et toutes les informations de cette session de demande puissent être stockées.

bs_content = bs (site.Contenu, "HTML.analyseur ")
token = bs_content.find ("input", "name": "csrf_token") ["valeur"]

Ce code ici utilise la bibliothèque BeautifulSoup pour le csrf_token peut être extrait de la page Web puis affecté à la variable de jeton. Vous pouvez apprendre à extraire des données de nœuds à l'aide de belles-groupe.

login_data = "nom d'utilisateur": "admin", "mot de passe": "12345", "csrf_token": jeton
s.Post ("http: // citations.toscrap.com / login ", login_data)

Le code ici crée un dictionnaire des paramètres à utiliser pour se connecter. Les clés des dictionnaires sont les nom Les attributs des balises d'entrée et les valeurs sont les valeur Attributs des balises d'entrée.

Le poste La méthode est utilisée pour envoyer une demande post-post avec les paramètres et nous connecter.

home_page = s.get ("http: // citations.toscrap.com ")
imprimer (home_page.contenu)

Après une connexion, ces lignes de code ci-dessus extraient simplement les informations de la page pour montrer que la connexion a réussi.

Conclusion

Le processus de connexion aux sites Web à l'aide de Python est assez facile, mais la configuration des sites Web n'est pas la même, donc certains sites se révéleraient plus difficiles à se connecter que d'autres. Il y a plus à faire pour surmonter les défis de connexion que vous avez.

La chose la plus importante dans tout cela est la connaissance du HTML, des demandes, de BeautifulSoup et la possibilité de comprendre les informations obtenues de l'onglet réseau des outils de développeur de votre navigateur Web.