proyectos ejemplos python login python-requests

ejemplos - Python solicita el inicio de sesión con la redirección



django (1)

Aquí hay un sitio http://pro.wialon.com/ donde quiero iniciar sesión con el módulo de solicitudes de python. El inicio de sesión y el pase son demo.

import requests with requests.Session()as c: url = ''http://pro.wialon.com/'' payload = dict(user=''demo'', passw=''demo'', login_action=''login'') r = c.post(url, data=payload, allow_redirects=True) print(r.text)

Francamente, quiero obtener un informe (en la pestaña del informe) como respuesta. Pero no puedo entender cómo iniciar sesión.


La url de la publicación es incorrecta y le faltan datos de formulario, también debe hacer una solicitud inicial, publicar en la url correcta y luego obtener http://pro.wialon.com/service.html :

data = {"user": "demo", "passw": "demo", "submit": "Enter", "lang": "en", "action": "login"} head = {"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"} with requests.Session() as c: c.get(''http://pro.wialon.com/'') url = ''http://pro.wialon.com/login_action.html'' c.post(url, data=data, headers=head) print(c.get("http://pro.wialon.com/service.html").content)

Puede ver la publicación en las herramientas chrome dev en la pestaña de red:

Además, el valor predeterminado para las solicitudes de envío o recepción es permitir los redireccionamientos, por lo que no es necesario que lo especifique aquí.

Puede ver en el origen de la página de inicio de sesión, la acción del formulario:

<form class="login_bg_form" id="login_form" action="login_action.html" method="POST">

En lugar de codificar el camino, podemos analizarlo desde el formulario, use bs4 :

import requests from bs4 import BeautifulSoup from urlparse import urljoin data = {"user": "demo", "passw": "demo", "submit": "Enter", "lang": "en", "action": "login"} head = {"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"} with requests.Session()as c: soup = BeautifulSoup(c.get(''http://pro.wialon.com/'').content) redir = soup.select_one("#login_form")["action"] url = ''http://pro.wialon.com/login_action.html'' c.post(url, data=data, headers=head) print(c.get(urljoin("http://pro.wialon.com/", redir)).content)

El único problema ahora es que la mayoría de los datos se rellenan con solicitudes ajax, por lo que si desea raspar datos deberá imitar las solicitudes.