Estoy intentando iniciar sesión en un sitio web utilizando Python y Mechanize, sin embargo, tengo problemas al intentar que los datos POST se comporten como yo quiero.Python mecanize iniciar sesión en el sitio web
Esencialmente Quiero replicar esto utilizando mecanizar y Python:
wget --quiet --save-cookies cookiejar --keep-session-cookies --post-data "action=login&login_nick=USERNAME&login_pwd=PASSWORD" -O outfile.htm http://domain.com/index.php
El formulario se ve así:
<login POST http://domain.com/index.php application/x-www-form-urlencoded
<TextControl(login_nick=USERNAME)>
<PasswordControl(login_pwd=PASSWORD)>
<CheckboxControl(login_auto=[1])>
<SubmitButtonControl(<None>=) (readonly)>>
Configuración de los valores apropiados y enviar el formulario no es un problema, pero eso deja fuera la "acción = inicio de sesión" - parte.
response = self.browser.open(self.url+"/index.php")
self.browser.select_form(name="login")
self.browser["login_nick"] = self.encoded_username
self.browser["login_pwd"] = self.encoded_password
self.browser.method = "POST"
response = self.browser.open(self.browser.submit())
print (response.read())
Ahora la pregunta es, ¿cómo puedo añadir la parte action=login
?
EDIT: Bueno, por lo que añade un campo oculto llamado acción y establezca el valor de inicio de sesión . Al analizar la secuencia TCP con Wireshark, los datos POST están estructurados de la manera que deberían. Sin embargo, parece que mecanizar está jugando con mi urlencoding (ya he codificado los valores específicamente para el juego de caracteres que usa el sitio web). Por ejemplo, mi nombre de usuario contiene un Å - que he urlencoded a% C5. Sin embargo, cuando se envía con mecanizar, se muestra como% 25C5. ¿Cómo impido que mechanize cambie las cadenas?
EDIT: Me di cuenta de que en lugar de luchar con el mecanizado, podía simplemente no urlencode mis cadenas antes de enviarlas. Caso cerrado.
En lugar de editar su pregunta y agregar la respuesta al cuerpo de la pregunta, debe publicar una respuesta a su pregunta y luego aceptarla. Es más * natural * de esta manera. – Felix
Lo hice. Simplemente no puedo aceptarlo por otros 2 días. –