Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: campe43 en 19 Mayo 2011, 02:03 am



Título: Login web python
Publicado por: campe43 en 19 Mayo 2011, 02:03 am
Hola a todos. Estoy intentando poder hacer login con python automáticamente en una web. He mirado multitud de códigos y el que tengo implementado es así:

import urllib2, cookielib, re

url = 'http://www.ejemplo.com/Index.php' #pagina de ejemplo


username = "***" #put your account here
passwd = "***"   #put your password here


cj = cookielib.CookieJar()

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

opener.addheaders = [('Referer', url)]

usock = opener.open(url)

the_page = usock.read()

print the_page

usock.close()

El problema es que teniendo el pass y la cuenta bien me sale la misma página que si el login estuviera mal. El posible error puede deberse a que la página en la que me estoy tratando de loguear se llama igual antes del login que después, es decir, en el navegador me aparece antes y después de loguearme como ..../Index.php. Puede ser ese el fallo?

Pd: no sé si está en la sección correcta, si no es así por favor muévanlo y disculpad las molestias. Muchas gracias.


Título: Re: Login web python
Publicado por: LeXeL en 19 Mayo 2011, 21:46 pm
hmm ok primero en el codigo nunca usas el username ni la password...
segundo tienes que ver si la web hace un GET/POST request la gran mayoria lo hacen en post.
Para esto te recomiendo que busques como usar Tamper Data(firefox) y con este programita puedes ver si es POST y el tipo de codificacion que usa el server.

Si es GET pues seria muy muy sencillo aqui te dejo un script para que veas como funciona:
Código
  1. mport urllib
  2. import urllib2
  3. encode = urllib.urlencode({'username':'admin','password':'password','Login':'Login'})
  4. url = "http://localhost/dvwa/vulnerabilities/brute/"
  5. opener = urllib2.build_opener(urllib2.HTTPHandler())
  6. opener.addheaders = [('User-agent', 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)')]
  7. urllib2.install_opener(opener)
  8. source = urllib2.urlopen(url+'?'+encode)
  9. source.read()

Cualquier duda enviame un PM y con gusto te ayudo