Inici de sessió a llocs web amb Python

Logging Into Websites With Python



La funció d’inici de sessió és una funcionalitat important a les aplicacions web actuals. Aquesta característica ajuda a mantenir contingut especial de no usuaris del lloc i també s’utilitza per identificar usuaris premium. Per tant, si teniu intenció de rascar un lloc web, podeu trobar la funció d'inici de sessió si el contingut només està disponible per a usuaris registrats.

Els tutorials de rascat web s’han tractat anteriorment, per tant, aquest tutorial només cobreix l’aspecte d’accedir als llocs web iniciant sessió amb codi en lloc de fer-ho manualment mitjançant el navegador.







Per entendre aquest tutorial i poder escriure scripts per iniciar la sessió a llocs web, necessiteu una comprensió de l'HTML. Potser no n'hi ha prou per crear llocs web fantàstics, però sí prou per entendre l'estructura d'una pàgina web bàsica.



Això es faria amb les biblioteques de sol·licituds i BeautifulSoup Python. A part d’aquestes biblioteques Python, necessitareu un bon navegador com Google Chrome o Mozilla Firefox, ja que serien importants per a l’anàlisi inicial abans d’escriure codi.



Les biblioteques de sol·licituds i BeautifulSoup es poden instal·lar amb l'ordre pip des del terminal, tal com es mostra a continuació:





peticions d'instal·lació de pip
pip instal·la BeautifulSoup4

Per confirmar l’èxit de la instal·lació, activeu l’intèrpret d’ordres interactiu de Python que es fa escrivint pitó al terminal.

A continuació, importeu les dues biblioteques:



importaciósol·licituds
des deBS4importacióBeautifulSoup

La importació és correcta si no hi ha errors.

El procés de

Iniciar sessió en un lloc web amb scripts requereix coneixements d’HTML i una idea de com funciona el web. Vegem breument com funciona el web.

Els llocs web es componen de dues parts principals, la del client i la del servidor. El costat del client és la part d’un lloc web amb què l’usuari interactua, mentre que el del servidor és la part del lloc web on s’executen la lògica empresarial i altres operacions del servidor, com ara accedir a la base de dades.

Quan intenteu obrir un lloc web a través del seu enllaç, feu una sol·licitud al servidor per obtenir els fitxers HTML i altres fitxers estàtics, com ara CSS i JavaScript. Aquesta sol·licitud es coneix com a sol·licitud GET. Tanmateix, quan ompliu un formulari, pengeu un fitxer multimèdia o un document, creeu una publicació i feu clic a diguem un botó d’enviament, envieu informació al servidor. Aquesta sol·licitud es coneix com a sol·licitud POST.

La comprensió d’aquests dos conceptes seria important a l’hora d’escriure el nostre guió.

Inspecció del lloc web

Per practicar els conceptes d’aquest article, faríem servir el fitxer Cites per rascar lloc web.

Per iniciar la sessió a llocs web es requereix informació com ara el nom d’usuari i una contrasenya.

Tanmateix, atès que aquest lloc web només s’utilitza com a prova de concepte, tot funciona. Per tant, faríem servir administrador com a nom d'usuari i 12345 com a contrasenya.

En primer lloc, és important veure la font de la pàgina, ja que donaria una visió general de l'estructura de la pàgina web. Per fer-ho, feu clic dret a la pàgina web i feu clic a Veure font de la pàgina. A continuació, inspeccioneu el formulari d'inici de sessió. Per fer-ho, feu clic dret a un dels quadres d’inici de sessió i feu clic a inspeccionar element . En inspeccionar l’element, hauríeu de veure entrada etiquetes i després un pare forma etiqueta en algun lloc a sobre. Això demostra que els inicis de sessió són bàsicament formes que són POST al servidor del lloc web.

Ara, tingueu en compte el fitxer nom atribut de les etiquetes d’entrada per als quadres de nom d’usuari i contrasenya, serien necessaris a l’hora d’escriure el codi. Per a aquest lloc web, el nom són l'atribut del nom d'usuari i la contrasenya nom d'usuari i contrasenya respectivament.

A continuació, hem de saber si hi ha altres paràmetres que serien importants per iniciar la sessió. Expliquem-ho ràpidament. Per augmentar la seguretat dels llocs web, normalment es generen fitxes per evitar atacs de falsificació de llocs creuats.

Per tant, si aquestes fitxes no s’afegeixen a la sol·licitud POST, l’inici de sessió fallaria. Llavors, com coneixem aquests paràmetres?

Hauríem d’utilitzar la pestanya Xarxa. Per obtenir aquesta pestanya a Google Chrome o Mozilla Firefox, obriu les eines per a desenvolupadors i feu clic a la pestanya Xarxa.

Un cop esteu a la pestanya de xarxa, proveu d'actualitzar la pàgina actual i notareu que arriben les sol·licituds. Heu de mirar de tenir en compte que s'envien les sol·licituds POST quan provem d'iniciar la sessió.

Això és el que faríem a continuació, tot i que teníem oberta la pestanya Xarxa. Introduïu les dades d’inici de sessió i proveu d’iniciar la sessió, la primera sol·licitud que veuríeu hauria de ser la sol·licitud POST.

Feu clic a la sol·licitud POST i visualitzeu els paràmetres del formulari. Notareu que el lloc web té un csrf_token paràmetre amb un valor. Aquest valor és un valor dinàmic, per tant, hauríem de capturar aquests valors mitjançant ACONSEGUIR sol·liciteu primer abans d'utilitzar el fitxer POST sol·licitud.

Per a altres llocs web en què estigueu treballant, és possible que no vegeu el fitxer csrf_token però pot haver-hi altres fitxes que es generin dinàmicament. Amb el pas del temps, millorareu coneixent els paràmetres que realment importen en fer un intent d’inici de sessió.

El codi

En primer lloc, hem d’utilitzar Sol·licituds i BeautifulSoup per accedir al contingut de la pàgina de la pàgina d’inici de sessió.

des desol·licitudsimportacióSessió
des deBS4importacióBeautifulSoupcombs

ambSessió() coms:
lloc =s.aconseguir('Http://quotes.toscrape.com/login')
imprimir(lloc.contingut)

Això imprimiria el contingut de la pàgina d'inici de sessió abans d'iniciar la sessió i si cerqueu la paraula clau d'inici de sessió. La paraula clau es trobaria al contingut de la pàgina que mostra que encara no hem iniciat la sessió.

A continuació, buscaríem el fitxer csrf_token paraula clau que es va trobar com un dels paràmetres en utilitzar anteriorment la pestanya de xarxa. Si la paraula clau mostra una coincidència amb un fitxer entrada , es pot extreure el valor cada vegada que executeu l'script mitjançant BeautifulSoup.

des desol·licitudsimportacióSessió
des deBS4importacióBeautifulSoupcombs

ambSessió() coms:
lloc =s.aconseguir('Http://quotes.toscrape.com/login')
bs_content=bs(lloc.contingut, 'html.parser')
fitxa =bs_content.trobar('entrada', {'nom':'csrf_token'})['valor']
dades_inici de sessió= {'nom d'usuari':'administrador','contrasenya':'12345', 'csrf_token':fitxa}
s.publicar('Http://quotes.toscrape.com/login',dades_inici de sessió)
pàgina_inici=s.aconseguir('Http://quotes.toscrape.com')
imprimir(pàgina_inici.contingut)

S'imprimiria el contingut de la pàgina després d'iniciar la sessió i si cerqueu la paraula clau de tancament de sessió. La paraula clau es trobaria al contingut de la pàgina que mostra que hem pogut iniciar la sessió amb èxit.

Vegem cada línia de codi.

des desol·licitudsimportacióSessió
des deBS4importacióBeautifulSoupcombs

Les línies de codi anteriors s’utilitzen per importar l’objecte Session de la biblioteca de sol·licituds i l’objecte BeautifulSoup de la biblioteca bs4 mitjançant un àlies de bs .

ambSessió() coms:

La sessió de sol·licituds s’utilitza quan es vol mantenir el context d’una sol·licitud, de manera que es poden emmagatzemar les cookies i tota la informació d’aquesta sessió de sol·licituds.

bs_content=bs(lloc.contingut, 'html.parser')
fitxa =bs_content.trobar('entrada', {'nom':'csrf_token'})['valor']

Aquest codi aquí utilitza la biblioteca BeautifulSoup de manera que csrf_token es pot extreure de la pàgina web i després assignar-la a la variable de testimoni. Podeu obtenir informació sobre com extreure dades de nodes mitjançant BeautifulSoup.

dades_inici de sessió= {'nom d'usuari':'administrador','contrasenya':'12345', 'csrf_token':fitxa}
s.publicar('Http://quotes.toscrape.com/login',dades_inici de sessió)

El codi aquí crea un diccionari dels paràmetres que s’utilitzaran per iniciar la sessió. Les claus dels diccionaris són els fitxers nom els atributs de les etiquetes d'entrada i els valors són valor atributs de les etiquetes d'entrada.

El publicar S’utilitza el mètode per enviar una sol·licitud de publicació amb els paràmetres i iniciar la sessió.

pàgina_inici=s.aconseguir('Http://quotes.toscrape.com')
imprimir(pàgina_inici.contingut)

Després d'un inici de sessió, aquestes línies de codi anteriors simplement extreuen la informació de la pàgina per mostrar que l'inici de sessió ha estat correcte.

Conclusió

El procés d'inici de sessió a llocs web mitjançant Python és bastant fàcil, tot i que la configuració de llocs web no és la mateixa, per tant, alguns llocs resultaran més difícils d'iniciar sessió que d'altres. Es pot fer més per superar els reptes d’inici de sessió que tingueu.

El més important de tot això és el coneixement d’HTML, Sol·licituds, BeautifulSoup i la possibilitat d’entendre la informació obtinguda de la pestanya Xarxa de les eines per a desenvolupadors del navegador web.