Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Shell Root en 27 Octubre 2010, 06:23 am



Título: Petición POST con Python
Publicado por: Shell Root en 27 Octubre 2010, 06:23 am
Pues después de programar algo en C#, se me dio por realizar una petición POST por medio de Python, pero plop, algo me falla. Me ayudan?

Código
  1. import urllib, urllib2
  2.  
  3. try:
  4. parametros = urllib.urlencode({"txtUser": "alexa", "txtPass": "a"})
  5. peticion = urllib2.urlopen("http://localhost/PoC/index.php", parametros)
  6.    print peticion.read()
  7.    peticion.close()
  8. except HTTPError, e:
  9.    print "Ocurrio un error"
  10.    print e.code
  11. except URLError, e:
  12.    print "Ocurrio un error"
  13.    print e.reason


Título: Re: Petición POST con Python
Publicado por: Sancho.Mazorka en 1 Noviembre 2010, 05:00 am
Podrias poner lo que imprime e.code y e.reaseon, asi tendriamos una vision mas amplia de tu problema.


Saludos, Sancho.Mazorka    :P


Título: Re: Petición POST con Python
Publicado por: Sancho.Mazorka en 1 Noviembre 2010, 05:18 am
Aca te pongo 2 ejemplos que hice hace 1 año y algo, el primero es para autoclickear una web de PTC (Paid-To-Click).

Hace un request a la web, descarga el captcha, lo introducis manualmente, se loguea con los datos, entra a un anuncio y listo.

Esta a medio terminar, porque descubri que la web era un scam (estafa), asi que lo deje ahi nomas, pero lo que vos estas intentando hacer funciona.

Código
  1. import httplib, urllib, re, string
  2.  
  3. conn = httplib.HTTPConnection("www.alertbucks.com")
  4. #cod = urllib.urlencode({'username':'TU_USER','password':'TU_PASS','code':'458939','loginsubmit':'Login'})
  5. #headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
  6.  
  7. #conn.request("GET", "/login.php?",cod,headers)#?username=TU_USER&password=TU_PASS&code=598423&loginsubmit=Login") #"/view.php?ad=426")
  8.  
  9. #print cod, '\n\n\n'
  10. conn.request("GET","/view.php?ad=553")
  11.  
  12.  
  13. #params = urllib.urlencode({'': 1, 'eggs': 2, 'bacon': 0})
  14. #headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
  15. #conn = httplib.HTTPConnection("musi-cal.mojam.com:80")
  16. #conn.request("POST", "/cgi-bin/query", params, headers)
  17.  
  18.  
  19. response = conn.getresponse()
  20. #print response.status, response.reason
  21.  
  22. data = response.read()
  23. conn.close()
  24.  
  25. #print data
  26.  
  27. #m = re.search('(?<=")\10+', data)
  28. #print m.group(1)
  29.  
  30. #print '\n-----------------------------------------\n'
  31.  
  32. pattern = re.compile (';')
  33.  
  34. m= pattern.split(data)
  35. print m
  36. #print string.split(m[3].strip(),'"')[1]
  37. #print string.split(m[4].strip(),'"')[1]
  38. #for i in m:
  39. #    print i,'\n'
  40.  
  41. #'success.php?ad=%d&code=%d&verify=1' % (ads, code)
  42.  

Este otro, es muy similar al anterior, pero utilizando otro metodo

Código
  1. import urllib,urllib2
  2.  
  3. aut_h = urllib2.HTTPBasicAuthHandler()  
  4. aut_h.add_password('TU_USER')  
  5.  
  6. opener = urllib2.build_opener(aut_h)
  7. urllib2.install_opener(opener)
  8.  
  9. #params = urllib.urlencode({'username':'TU_USER','password':'TU_PASS','code':'722443','loginsubmit':'Login'})
  10.  
  11. f = urllib.urlopen("http://www.alertbucks.com/login.php?%s" % params)
  12. print f.read()
  13. f.close()
  14.  

Espero te sirva.


Saludos, Sancho.Mazorka    :P


Título: Re: Petición POST con Python
Publicado por: xassiz~ en 1 Noviembre 2010, 12:53 pm
Pues después de programar algo en C#, se me dio por realizar una petición POST por medio de Python, pero plop, algo me falla. Me ayudan?

Código
  1. import urllib, urllib2
  2.  
  3. try:
  4. parametros = urllib.urlencode({"txtUser": "alexa", "txtPass": "a"})
  5. peticion = urllib2.urlopen("http://localhost/PoC/index.php?%s", parametros)
  6.    print peticion.read()
  7.    peticion.close()
  8. except HTTPError, e:
  9.    print "Ocurrio un error"
  10.    print e.code
  11. except URLError, e:
  12.    print "Ocurrio un error"
  13.    print e.reason


Título: Re: Petición POST con Python
Publicado por: Shell Root en 1 Noviembre 2010, 19:27 pm
Pero eso son peticiones GET, no?


Título: Re: Petición POST con Python
Publicado por: xassiz~ en 1 Noviembre 2010, 21:05 pm
No, para una petición GET pones las variables en la URL:

Código
  1. peticion = urllib2.urlopen("http//localhost/PoC/index.php?txtUser=alexa&txtPass=a").read()
  2.