Código fuente de Rpn
Selecciona los datos necesarios para iniciar sesión.
Iniciar sesión en el sitio
Rastrear los datos requeridos.
En este tutorial utilicé los siguientes paquetes (se pueden encontrar en requisitos.txt):
Requisitos
lxml
Paso uno : Investiga el sitio web.
Abrir página de inicio de sesión
Ir a la siguiente página "". Verá la página que se muestra a continuación (si ya ha iniciado sesión, cierre la sesión).
Mirando de cerca los detalles que necesitamos extraer para iniciar sesión.
En esta sección, crearemos un diccionario para almacenar los detalles de la ejecución del inicio de sesión:
1. Haga clic derecho en el campo Nombre de usuario o Correo electrónico y seleccione Ver elemento". Usaremos el valor del cuadro de entrada cuyo atributo "nombre" es "nombre de usuario". "Nombre de usuario" será el valor clave y nuestro nombre de usuario/correo electrónico será el valor correspondiente (en otros sitios web, estos valores clave pueden ser "correo electrónico", "nombre de usuario", "iniciar sesión", etc.).
2. Haga clic derecho en el campo de contraseña y seleccione Ver elementos. En el script, necesitamos usar el valor del cuadro de entrada con el atributo "nombre" como "contraseña". "contraseña" será el valor clave del diccionario, y la contraseña que ingresemos será el valor correspondiente (en otros sitios web, el valor clave puede ser "contraseña de usuario", "contraseña de inicio de sesión", "contraseña", etc.). p>
3. En la página del código fuente, busque un token de entrada oculto llamado "csrfmiddlewaretoken". "csrfmiddlewaretoken" será el valor clave y el valor correspondiente será el valor de entrada oculto (en otros sitios web, el valor puede ser un valor de entrada oculto llamado "csrftoken" y "authenticationtoken"). Las columnas son las siguientes: "vy 00 PE 3 ra 6 aiswkbrpn 72s FM l 00 icuv 8".
Finalmente, obtendremos un diccionario como este:
Payload = {
"username":"<username>",
p>"password":" & ltpassword>,
" csrfmiddlewaretoken ":" & lt;CSRF_TOKEN>
}
Recuerde, este es un caso específico para este sitio web. Aunque esta forma de inicio de sesión es simple, otros sitios web pueden requerir que revisemos los registros de solicitudes del navegador para encontrar las claves y valores relevantes que deben usarse en el paso de inicio de sesión.
Paso 2: Inicia sesión en el sitio web.
Para este script, solo necesitamos importar lo siguiente:
Solicitud de importación
Importar html desde lxml
Primero, necesitamos para crear un objeto de sesión. Este objeto nos permitirá guardar todas las solicitudes de sesión de inicio de sesión.
Solicitud de sesión = request.session()
En segundo lugar, necesitamos extraer la etiqueta csrf utilizada al iniciar sesión desde esta página web. En este ejemplo, usamos lxml y xpath para extraer datos, también podemos usar expresiones regulares u otros métodos para extraer datos.
login_url = " "
resultado = session_requests.get(url de inicio de sesión)
árbol = html de cadena(resultado. texto)
authenticity _ token = list(set(tree . . En esta etapa enviamos una solicitud POST a la URL de inicio de sesión. Usamos la carga útil creada en el paso anterior como datos. También puede usar encabezados para la solicitud y agregar una referencia clave de la misma URL.
resultado = session_requests.post(
login_url,
datos = carga útil,
encabezados = dict(referer=login_url) p>
)
Paso 3: Rastrear el contenido
Ahora que hemos iniciado sesión correctamente, realizaremos la operación de rastreo real desde la página del panel de Bitbucket.
url = ' '
resultado = session_requests.get(
url,
encabezados = dict(referer = url) p>
p>
)
Para probar lo anterior, tomamos la lista de proyectos de la página del panel de Bitbucket. Usaremos xpath nuevamente para encontrar el elemento de destino, borrar el texto y los espacios en nuevas líneas e imprimir los resultados. Si todo funciona bien, el resultado debería ser una lista de depósitos/proyectos en su cuenta de bitbucket.
árbol = html . de cadena(resultado . contenido)
bucket_elems = árbol.findall(".//span[@class='repo-name']/) p> p>
bucket _ nombres = [bucket . text _ content . reemplazar (" n ", " ") del depósito en bucket_elems
Imprimir el nombre del depósito
<". p >También puede verificar los resultados de estas solicitudes verificando el código de estado devuelto por cada solicitud. No siempre le permitirá saber si la fase de inicio de sesión fue exitosa, pero puede usarse como indicador de verificación. p>Por ejemplo:Result.ok #nos dirá si la última solicitud fue exitosa
Result.status_code #devolverá el estado de nuestra última solicitud
.Eso es todo.