# Pywikibot/login.py

El script login.py es una herramienta fundamental de Pywikibot diseñada para autenticar a los usuarios en los proyectos Wikimedia. Es útil para automatizar tareas en wikis que requieren la autenticación de usuarios, especialmente para realizar acciones que no pueden ser ejecutadas por usuarios anónimos, como la edición masiva de páginas o la carga de archivos. El script garantiza que las acciones realizadas con Pywikibot se asocien a una cuenta de usuario específica, cumpliendo con las políticas de los proyectos de Wikimedia.

## ¿Cuándo es útil?

* Ediciones en masa: Si estás utilizando Pywikibot para editar múltiples páginas de un proyecto, necesitarás estar autenticado para que las acciones se registren bajo tu cuenta.
* Tareas administrativas: Algunas tareas, como la eliminación de páginas o el bloqueo de usuarios, requieren privilegios que solo están disponibles para usuarios autenticados.
El uso de login.py asegura que tu cuenta esté correctamente autenticada antes de ejecutar cualquier script que realice cambios en las páginas.

## Sección teórica

El script login.py emplea las credenciales configuradas previamente en Pywikibot para autenticar al usuario. Pywikibot almacena estas credenciales en su archivo de configuración y las utiliza para enviar una solicitud de inicio de sesión al servidor de Wikimedia. Una vez que el usuario está autenticado, Pywikibot puede realizar solicitudes en nombre de la cuenta a través de la API de MediaWiki.

### ¿Cómo funciona?

* API de MediaWiki: El script envía una solicitud de autenticación utilizando la API de MediaWiki, que comprueba las credenciales y, si son correctas, devuelve una "cookie" de sesión que se usa para las futuras solicitudes.
* Persistencia de sesión: Pywikibot guarda esta cookie para que el usuario no tenga que autenticarse de nuevo en cada sesión.
Es importante que los usuarios comprendan el flujo de autenticación en proyectos Wikimedia y cómo Pywikibot gestiona las credenciales para asegurar la continuidad del inicio de sesión.

## Requisitos previos

Antes de ejecutar el script login.py, debes cumplir con los siguientes requisitos:
* Instalación de Pywikibot: Asegúrate de tener Pywikibot correctamente instalado en tu entorno local. Si no lo tienes, sigue las instrucciones de instalación aquí.
* Configuración de user-config.py: Debes haber configurado el archivo user-config.py con la información de tu cuenta de usuario y el proyecto en el que deseas trabajar. Este archivo contiene detalles como:
** Nombre de usuario.
** Sitio de Wikimedia (Wikipedia, Wikidata, etc.).
* Credenciales de usuario: Asegúrate de tener una cuenta de usuario activa en el proyecto de Wikimedia donde deseas trabajar y de haber guardado las credenciales en Pywikibot.

## Ejecutar el script login.py

Para iniciar sesión en un proyecto Wikimedia usando Pywikibot, sigue estos pasos:
* Abrir una terminal: Navega al directorio donde tienes instalado Pywikibot.
* Ejecutar el comando de inicio de sesión:
Este comando iniciará el proceso de autenticación. Pywikibot te pedirá tu nombre de usuario y contraseña si no los ha guardado previamente.
* Verificar el inicio de sesión: Si el inicio de sesión es exitoso, deberías ver un mensaje similar a:
* Iniciar sesión en otro proyecto (opcional): Si necesitas autenticarte en más de un proyecto, puedes especificar un sitio específico:
Este proceso asegura que estés autenticado antes de realizar cualquier acción en el sitio.

## Desafío: Autenticarte en varios proyectos Wikimedia

Tu tarea es iniciar sesión en dos proyectos Wikimedia distintos: Wikipedia en español y Wikidata. Sigue estos pasos:
* Inicia sesión en Wikipedia en español con el comando:
* Luego, autentícate en Wikidata con:
* Preguntas para reflexionar:
** ¿En qué se diferencia el inicio de sesión entre diferentes proyectos Wikimedia?
** ¿Qué ocurre si intentas ejecutar un script sin haber iniciado sesión previamente?
** ¿Cómo puedes mejorar la eficiencia de autenticación en múltiples proyectos?

## Opciones avanzadas y parámetros

El script login.py tiene opciones avanzadas que permiten modificar su comportamiento según sea necesario. A continuación, se muestran algunos ejemplos útiles:
* Autenticar en un sitio específico: Puedes autenticarte en una edición particular de Wikipedia o en cualquier otro proyecto Wikimedia usando la opción -site:
* Cerrar sesión (logout): Aunque Pywikibot no tiene un comando explícito para cerrar sesión, puedes eliminar manualmente las cookies de autenticación borrando el archivo de cookies almacenado en tu directorio de Pywikibot:
Explora estas opciones para ajustarlas a tus necesidades específicas.

## Resolución de problemas comunes
### Problema: Error de autenticación (Login failed)

* Causa: Las credenciales almacenadas pueden estar desactualizadas o incorrectas.
* Solución: Verifica que las credenciales de tu archivo de configuración son correctas y que no has cambiado tu contraseña recientemente.

### Problema: No se puede iniciar sesión en múltiples sitios

* Causa: Pywikibot puede estar guardando una sesión anterior.
* Solución: Borra el archivo de cookies para eliminar las sesiones previas y vuelve a intentar iniciar sesión en el nuevo sitio.

## Discusión y reflexión

* Pregunta de discusión: ¿Qué medidas de seguridad implementarías al usar scripts de automatización con credenciales almacenadas? ¿Cómo podrías proteger tus credenciales en el entorno de trabajo?
* Reflexión: Piensa en cómo las sesiones autenticadas pueden influir en la eficiencia de tu trabajo con Pywikibot y cómo gestionar múltiples cuentas o roles en diferentes proyectos Wikimedia.

## Conclusión

En este artículo, aprendiste a utilizar el script login.py para autenticarte en los proyectos Wikimedia mediante Pywikibot. La autenticación es esencial para realizar tareas automatizadas de manera efectiva y segura en estos proyectos. A medida que avances, puedes explorar cómo combinar este script con otros scripts avanzados para realizar tareas más complejas. Si deseas profundizar más en las funcionalidades de Pywikibot, revisa la documentación oficial de Pywikibot.