Iniciar sesión en sitios web con Python

Iniciar sesión en sitios web con Python
La función de inicio de sesión es una funcionalidad importante en las aplicaciones web de hoy. Esta característica ayuda a mantener contenido especial de los no usuarios del sitio y también se utiliza para identificar a los usuarios premium. Por lo tanto, si tiene la intención de raspar una web un sitio web, podría encontrarse con la función de inicio de sesión si el contenido solo está disponible para usuarios registrados.

Los tutoriales de raspado web se han cubierto en el pasado, por lo tanto, este tutorial solo cubre el aspecto de obtener acceso a los sitios web iniciando sesión con código en lugar de hacerlo manualmente utilizando el navegador.

Para comprender este tutorial y poder escribir scripts para iniciar sesión en sitios web, necesitaría una comprensión de HTML. Quizás no sea suficiente para crear sitios web increíbles, pero lo suficiente como para comprender la estructura de una página web básica.

Instalación

Esto se haría con las solicitudes y las bibliotecas de las hermosas Python. Asides esas bibliotecas de Python, necesitaría un buen navegador como Google Chrome o Mozilla Firefox, ya que serían importantes para el análisis inicial antes de escribir código.

Las solicitudes y las bibliotecas de BeautifulSoup se pueden instalar con el comando PIP desde el terminal como se ve a continuación:

Solicitudes de instalar PIP
PIP install beautifulSoup4

Para confirmar el éxito de la instalación, active la carcasa interactiva de Python que se realiza escribiendo pitón en la terminal.

Luego importe ambas bibliotecas:

Solicitudes de importación
de bs4 import beautifulsoup

La importación es exitosa si no hay errores.

El proceso

Iniciar sesión en un sitio web con scripts requiere conocimiento de HTML y una idea de cómo funciona la web. Veamos brevemente cómo funciona la web.

Los sitios web están hechos de dos partes principales, el lado del cliente y el lado del servidor. El lado del cliente es la parte de un sitio web con el que el usuario interactúa, mientras que el lado del servidor es la parte del sitio web donde se ejecutan las operaciones de la lógica comercial y otras operaciones del servidor, como acceder a la base de datos.

Cuando intenta abrir un sitio web a través de su enlace, está haciendo una solicitud al lado del servidor para obtener los archivos HTML y otros archivos estáticos como CSS y JavaScript. Esta solicitud se conoce como la solicitud GET. Sin embargo, cuando está llenando un formulario, cargando un archivo de medios o un documento, creando una publicación y haciendo clic en Digamos un botón de envío, está enviando información al lado del servidor. Esta solicitud se conoce como solicitud de publicación.

Comprender esos dos conceptos sería importante al escribir nuestro guión.

Inspeccionar el sitio web

Para practicar los conceptos de este artículo, estaríamos utilizando las citas para raspar el sitio web.

Iniciar sesión en sitios web requiere información como el nombre de usuario y una contraseña.

Sin embargo, dado que este sitio web se usa como una prueba de concepto, todo vale. Por lo tanto, estaríamos usando administración como el nombre de usuario y 12345 Como la contraseña.

En primer lugar, es importante ver la fuente de la página, ya que esto daría una visión general de la estructura de la página web. Esto se puede hacer haciendo clic derecho en la página web y haciendo clic en "Ver fuente de página". A continuación, inspecciona el formulario de inicio de sesión. Hace esto haciendo clic derecho en uno de los cuadros de inicio de sesión y haciendo clic en inspeccionar elemento. En el elemento de inspección, debería ver aporte Etiquetas y luego un padre forma etiqueta en algún lugar por encima de él. Esto muestra que los inicios de sesión son básicamente formas CORREOED al lado del servidor del sitio web.

Ahora, tenga en cuenta el nombre Atributo de las etiquetas de entrada para los cuadros de nombre de usuario y contraseña, serían necesarios al escribir el código. Para este sitio web, el nombre atributo para el nombre de usuario y la contraseña son nombre de usuario y contraseña respectivamente.

A continuación, tenemos que saber si hay otros parámetros que serían importantes para iniciar sesión. Expliquemos rápidamente esto. Para aumentar la seguridad de los sitios web, los tokens generalmente se generan para evitar ataques de falsificación del sitio cruzado.

Por lo tanto, si esos tokens no se agregan a la solicitud de publicación, el inicio de sesión fallaría. Entonces, ¿cómo sabemos sobre tales parámetros??

Tendríamos que usar la pestaña de red. Para obtener esta pestaña en Google Chrome o Mozilla Firefox, abra las herramientas de desarrollador y haga clic en la pestaña de red.

Una vez que esté en la pestaña de red, intente actualizar la página actual y notaría que las solicitudes entran. Debe intentar tener cuidado con las solicitudes de publicación que se envían cuando intentemos iniciar sesión.

Esto es lo que haríamos a continuación, mientras se abre la pestaña de red. Ponga los detalles de inicio de sesión e intente iniciar sesión, la primera solicitud que vería debe ser la solicitud de publicación.

Haga clic en la solicitud de publicación y vea los parámetros del formulario. Notaría que el sitio web tiene un csrf_token Parámetro con un valor. Ese valor es un valor dinámico, por lo tanto, necesitaríamos capturar dichos valores utilizando el CONSEGUIR Solicitar primero antes de usar el CORREO pedido.

Para otros sitios web en los que estaría trabajando, es probable que no vea el csrf_token pero puede haber otros tokens que se generan dinámicamente. Con el tiempo, mejoraría para conocer los parámetros que realmente importan para hacer un intento de inicio de sesión.

El código

En primer lugar, necesitamos usar solicitudes y beautifulsoup para obtener acceso al contenido de la página de la página de inicio de sesión.

de la sesión de importación de solicitudes
de bs4 import beautifulsoup como BS
con session () como S:
sitio = S.Get ("http: // cotizaciones.raspar.com/inicio de sesión ")
Impresión (sitio.contenido)

Esto imprimiría el contenido de la página de inicio de sesión antes de iniciar sesión y si busca la palabra clave "Iniciar sesión". La palabra clave se encontraría en el contenido de la página que demuestra que aún no tenemos sesión.

A continuación, buscaríamos el csrf_token Palabra clave que se encontró como uno de los parámetros cuando se usa la pestaña de red antes. Si la palabra clave muestra una coincidencia con un aporte etiqueta, entonces el valor se puede extraer cada vez que ejecuta el script usando beautifulsoup.

de la sesión de importación de solicitudes
de bs4 import beautifulsoup como BS
con session () como S:
sitio = S.Get ("http: // cotizaciones.raspar.com/inicio de sesión ")
bs_content = bs (sitio.contenido ", html.analizador ")
token = bs_content.find ("entrada", "nombre": "csrf_token") ["valor"]
login_data = "nombre de usuario": "admin", "contraseña": "12345", "csrf_token": token
s.post ("http: // cotizaciones.raspar.com/login ", login_data)
home_page = s.Get ("http: // cotizaciones.raspar.com ")
imprimir (home_page.contenido)

Esto imprimiría el contenido de la página después de iniciar sesión, y si busca la palabra clave "cierre de sesión". La palabra clave se encontraría en el contenido de la página que muestra que pudimos iniciar sesión con éxito.

Echemos un vistazo a cada línea de código.

de la sesión de importación de solicitudes
de bs4 import beautifulsoup como BS

Las líneas de código de arriba se utilizan para importar el objeto de sesión desde la biblioteca de solicitudes y el objeto BeautifulSoup desde la biblioteca BS4 utilizando un alias de bs.

con session () como S:

La sesión de solicitudes se utiliza cuando tiene la intención de mantener el contexto de una solicitud, por lo que se pueden almacenar las cookies y toda la información de esa sesión de solicitud.

bs_content = bs (sitio.contenido ", html.analizador ")
token = bs_content.find ("entrada", "nombre": "csrf_token") ["valor"]

Este código aquí utiliza la biblioteca beautiful para que la csrf_token se puede extraer de la página web y luego asignarse a la variable token. Puede aprender sobre la extracción de datos de los nodos utilizando beautifulsoup.

login_data = "nombre de usuario": "admin", "contraseña": "12345", "csrf_token": token
s.post ("http: // cotizaciones.raspar.com/login ", login_data)

El código aquí crea un diccionario de los parámetros que se utilizarán para iniciar sesión. Las claves de los diccionarios son las nombre atributos de las etiquetas de entrada y los valores son el valor Atributos de las etiquetas de entrada.

El correo El método se utiliza para enviar una solicitud de publicación con los parámetros y registrarnos en.

home_page = s.Get ("http: // cotizaciones.raspar.com ")
imprimir (home_page.contenido)

Después de un inicio de sesión, estas líneas de código anteriores simplemente extraen la información de la página para mostrar que el inicio de sesión fue exitoso.

Conclusión

El proceso de iniciar sesión en sitios web que usan Python es bastante fácil, sin embargo, la configuración de los sitios web no es el mismo, por lo tanto, algunos sitios resultarían más difíciles de iniciar sesión que otros. Se puede hacer más para superar cualquier desafío de inicio de sesión que tenga.

Lo más importante en todo esto es el conocimiento de HTML, solicitudes, beautifulsoup y la capacidad de comprender la información obtenida de la pestaña de red de las herramientas de desarrollador de su navegador web.