elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Python] Enviar un dato a traves de un input HTML
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Python] Enviar un dato a traves de un input HTML  (Leído 15,868 veces)
Kasswed
Colaborador
***
Desconectado Desconectado

Mensajes: 5.295

Rolling Stones


Ver Perfil
[Python] Enviar un dato a traves de un input HTML
« en: 19 Agosto 2009, 13:52 pm »

Hola.

Necesito hacer en python lo siguiente:

Tengo un archivo HTML con diversos inputs, y necesito rellenar uno de esos inputs y darle al boton de enviar. Para todo ello necesito estar logueado, creo que ya consigo hacer el login, pero no consigo hacer lo del input.

Alguna sugerencia?


En línea

"He who allows himself to be insulted, deserves to be."

Repórtame cualquier falta a las normas del foro por mensaje privado.
6666

Desconectado Desconectado

Mensajes: 146


Wikileaks.org


Ver Perfil
Re: [Python] Enviar un dato a traves de un input HTML
« Respuesta #1 en: 19 Agosto 2009, 14:09 pm »

Bueno no tengo ni idea de python pero mira:

Código:
import urllib2_file
import urllib2

data = {'name': 'value',
        'file':  open('/etc/services')
       }
urllib2.urlopen('http://site.com/script_upload.php', data)

Ahi se envia por metodo post la info a un upload y los input serian "name" y "file" con sus respectivos valores.

lo que puedes hacer es .. ver como se loguea .. crear una funcion logear() o algo asi .. y  luego hacer otra funcion con lo que quieres hacer.

además ese code es muy facil de entender y modificar .. un poco más de info:



Python, web forms and cookies:
http://therning.org/magnus/archives/270



« Última modificación: 19 Agosto 2009, 14:11 pm por l0ve » En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [Python] Enviar un dato a traves de un input HTML
« Respuesta #2 en: 19 Agosto 2009, 15:48 pm »

Buenas

Básicamente lo que te ha dicho l0ve debería de servir, con urlopen de urllib2 puedes hacer el envío de los datos, a esta función debes de pasarle la url base y los parámetros que siguen (los tomas del formulario)

Eso si .. ten en cuenta 1 cosa ... antes del envío de los datos debes de convertir la url (parámetros) al formato correcto, para lo cual puedes hacer uso de urlencode de urllib, a esta solo debes de pasar tuplas de datos (clave/variable - valor), y te devuelve una cadena con la url "armada" :P

Código
  1. camposform = urllib.urlencode({"usuario":"Kasswed","contraseña":"mipass","lang":"es"})

Continuando con el primer ejemplo que te han dejado sería como codificar data

Saludos

« Última modificación: 19 Agosto 2009, 16:03 pm por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Kasswed
Colaborador
***
Desconectado Desconectado

Mensajes: 5.295

Rolling Stones


Ver Perfil
Re: [Python] Enviar un dato a traves de un input HTML
« Respuesta #3 en: 20 Agosto 2009, 08:49 am »

Gracias por la ayuda pero no me ha funcionado.

Un ejemplo de uso seria, por ejemplo, la web www.meneame.net

La pagina de login es:

http://meneame.net/login.php

Y luego el input a rellenar seria el de:

http://meneame.net/sneak.php

Lo estoy probando con esta web y nada.

Alguna idea?

Mirad mi codigo:

Código
  1. import urllib, urllib2, cookielib, ClientForm
  2.  
  3. username = 'Kasswed'
  4. password = 'm3tronch0yBerroncho'
  5.  
  6. cj = cookielib.CookieJar()
  7. opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
  8.  
  9. login_data = urllib.urlencode({"username":username,"password":password})
  10.  
  11. urllib2.urlopen('http://meneame.net/login.php', login_data)
  12.  
  13. mensaje = urllib.urlencode({"comment": "hallo"})
  14. urllib2.urlopen('http://meneame.net/sneak.php', mensaje)
En línea

"He who allows himself to be insulted, deserves to be."

Repórtame cualquier falta a las normas del foro por mensaje privado.
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [Python] Enviar un dato a traves de un input HTML
« Respuesta #4 en: 20 Agosto 2009, 15:45 pm »

Que versión de Python tienes? yo estoy probando ahora en la 3 ... la verdad que hay muchas cosas que no he tocado luego de migrar .. y es lindo cuando ves que le han hecho tantos cambios ... sobre todo cuando la mitad de las cosas ya no funcionan, ni los import, ni las funciones :¬¬ (por ejemplo ya no existe urllib2)

He creado un código pero es bastante diferente al tuyo y no lo puedo probar correctamente porque hasta dentro de 2 hrs no puedo comentar (me acabo de crear una cuenta a modo de prueba en meneame), además de que no estoy en mi pc y acabo de meterle python a esta donde estoy

Pero eso si ..he visto algo que al menos a mi me causaba problemas en el login .. si revisas justamente el login que tienes actualmente verás que la web de menéame no devuelve nada como respuesta al ingreso de usuario y pass, ni que esta bien, ni que esta mal, simplemente recarga la web (esto lo he visto con read()).

El problema en esto esta en que revisando el formulario de autentificación veo dos parametros más ... processlogin=1 y return="", así que deberías de pasarlos también

Código
  1. import urllib, urllib2, cookielib, ClientForm
  2.  
  3. username = 'Kasswed'
  4. password = 'm3tronch0yBerroncho'
  5.  
  6. opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
  7. urllib2.install_opener(opener)
  8.  
  9. login_data = urllib.urlencode({"username":username,"password":password,"processlogin":"1","return":""})
  10.  
  11. opener.open('http://meneame.net/login.php', login_data)
  12.  
  13. mensaje = urllib.urlencode({"comment": "hallo"})
  14. opener.open('http://meneame.net/sneak.php', mensaje)
Así si debería de ir :D .. igual si te fijas verás que además de la linea de login_data le he hecho un par de cambios más;

  • La cookie no es necesaria referenciarla, ya que se crea sola (salvo que quieras utilizarla para otra cosa o definir tu propia cookie) y el HTTPCookieProcessor se encarga de lo demás
  • Se establece el openerdirectory por defecto por medio de install_opener, para utilizar el mismo opener/cookies en respectivos request (así no se pierde la cookie)
  • Se utiliza la referencia al opener y la función open, en lugar de urllib2.urlopen, ya que al igual que antes, trabajamos con la referencia y cookies almacenadas.

Obviamente prueba primero con tu code simplemente modificando los parámetros del login .. y si no sirve prueba con este segundo (el cual no esta probado por lo comentado antes)

Saludos
« Última modificación: 24 Agosto 2009, 02:45 am por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Kasswed
Colaborador
***
Desconectado Desconectado

Mensajes: 5.295

Rolling Stones


Ver Perfil
Re: [Python] Enviar un dato a traves de un input HTML
« Respuesta #5 en: 20 Agosto 2009, 15:56 pm »

Muchísimas gracias, mañana lo pruebo ya que en la máquina donde estoy no tengo python ni nada.

Editaré el post con los resultados que obtenga, de nuevo, gracias!

PD: Uso la versión 2 de python!
« Última modificación: 20 Agosto 2009, 16:08 pm por Kasswed » En línea

"He who allows himself to be insulted, deserves to be."

Repórtame cualquier falta a las normas del foro por mensaje privado.
Kasswed
Colaborador
***
Desconectado Desconectado

Mensajes: 5.295

Rolling Stones


Ver Perfil
Re: [Python] Enviar un dato a traves de un input HTML
« Respuesta #6 en: 21 Agosto 2009, 08:22 am »

Nada, no funciona :(

Algun dia podremos... xD
En línea

"He who allows himself to be insulted, deserves to be."

Repórtame cualquier falta a las normas del foro por mensaje privado.
Jubjub


Desconectado Desconectado

Mensajes: 708


Lay Ladie lay,...


Ver Perfil WWW
Re: [Python] Enviar un dato a traves de un input HTML
« Respuesta #7 en: 21 Agosto 2009, 10:52 am »

Cambia el user agent, muchas veces las paginas bloquean a los user angets de la urllib y curl, y demas hierbas :D
En línea

Jugando con Fósforoshacking con un tono diferente


.
porno
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [Python] Enviar un dato a traves de un input HTML
« Respuesta #8 en: 21 Agosto 2009, 14:06 pm »

XD ... pero creo que ahora esta bien y el problema lo tienes en otro lado :-X

Llegas a logarte? ... prueba modificando un poco el script aquí...

Código
  1. respuesta = opener.open('http://meneame.net/login.php', login_data)
  2. print(respuesta.read())

Esto para verificar lo que imprime .. y si corresponde con lo que debería de salir luego de logarte, para que sea más gráfico sin que tengas que ponerte a programar algo más, puedes comentar las líneas siguientes (las que están después de las que he puesto antes) y directamente redireccionar la salida del script a un html

Código
  1. python.exe elscript.py > print.html

Si esto funciona .. entonces el script sirve ... solo que seguimos con los problemas de los parámetros a la hora de publicar un mensaje XD
De donde salió esa url sneak.php? porque no doy con ella :-\ ... y por otra parte a la hora de comentar una noticia tengo varias cosas que pasarle para poder publicarla, ej:




Además como se ve si tendrás que referencias la cookie, ya que necesitas leer su contenido para obtener el user_id, además necesitas identificar el id de la noticia, etc

En definitiva, que el problema puede que sea otro y no necesariamente el script, ya que en este tipo de "programas" el problema es justamente el identificar todos los campos/parámetros que hay que pasar, además de como obtener o generar estos :P

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Kasswed
Colaborador
***
Desconectado Desconectado

Mensajes: 5.295

Rolling Stones


Ver Perfil
Re: [Python] Enviar un dato a traves de un input HTML
« Respuesta #9 en: 21 Agosto 2009, 15:38 pm »

No no, lo de publicar la noticia ya es demasiado avanzado xD

Yo quiero comentar aquí:

http://meneame.net/sneak.php

Es como un chat.

Probaré lo que dices, pero ya te digo que no hay forma.

Gracias de nuevo!
En línea

"He who allows himself to be insulted, deserves to be."

Repórtame cualquier falta a las normas del foro por mensaje privado.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
python castear a dato/objeto?
Scripting
Kase 2 5,977 Último mensaje 20 Marzo 2011, 00:00 am
por lnvisible
Enviar un dato a MySQL
Desarrollo Web
Meta 3 2,896 Último mensaje 27 Abril 2012, 07:29 am
por engel lex
llenar inputs dependiente del dato de otro input
Desarrollo Web
matrixre9 1 15,804 Último mensaje 13 Diciembre 2013, 03:05 am
por #!drvy
[Resuelto] input de Python en C++?
Programación C/C++
Br1ant 7 4,385 Último mensaje 28 Junio 2015, 19:31 pm
por Br1ant
(Python 3.5) 2 veces un input
Scripting
BigKaz 3 2,344 Último mensaje 14 Diciembre 2016, 04:13 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines