Test Foro de elhacker.net SMF 2.1

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 (python) [Seleccionar]
import urllib, urllib2

try:
parametros = urllib.urlencode({"txtUser": "alexa", "txtPass": "a"})
peticion = urllib2.urlopen("http://localhost/PoC/index.php", parametros)
    print peticion.read()
    peticion.close()
except HTTPError, e:
    print "Ocurrio un error"
    print e.code
except URLError, e:
    print "Ocurrio un error"
    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 (python) [Seleccionar]

import httplib, urllib, re, string

conn = httplib.HTTPConnection("www.alertbucks.com")
#cod = urllib.urlencode({'username':'TU_USER','password':'TU_PASS','code':'458939','loginsubmit':'Login'})
#headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}

#conn.request("GET", "/login.php?",cod,headers)#?username=TU_USER&password=TU_PASS&code=598423&loginsubmit=Login") #"/view.php?ad=426")

#print cod, '\n\n\n'
conn.request("GET","/view.php?ad=553")


#params = urllib.urlencode({'': 1, 'eggs': 2, 'bacon': 0})
#headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
#conn = httplib.HTTPConnection("musi-cal.mojam.com:80")
#conn.request("POST", "/cgi-bin/query", params, headers)


response = conn.getresponse()
#print response.status, response.reason

data = response.read()
conn.close()

#print data

#m = re.search('(?<=")\10+', data)
#print m.group(1)

#print '\n-----------------------------------------\n'

pattern = re.compile (';')

m= pattern.split(data)
print m
#print string.split(m[3].strip(),'"')[1]
#print string.split(m[4].strip(),'"')[1]
#for i in m:
#    print i,'\n'

#'success.php?ad=%d&code=%d&verify=1' % (ads, code)


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

Código (python) [Seleccionar]

import urllib,urllib2

aut_h = urllib2.HTTPBasicAuthHandler() 
aut_h.add_password('TU_USER') 
 
opener = urllib2.build_opener(aut_h)
urllib2.install_opener(opener)

#params = urllib.urlencode({'username':'TU_USER','password':'TU_PASS','code':'722443','loginsubmit':'Login'})

f = urllib.urlopen("http://www.alertbucks.com/login.php?%s" % params)
print f.read()
f.close()


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
Cita de: 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 (python,5) [Seleccionar]
import urllib, urllib2

try:
parametros = urllib.urlencode({"txtUser": "alexa", "txtPass": "a"})
peticion = urllib2.urlopen("http://localhost/PoC/index.php?%s", parametros)
    print peticion.read()
    peticion.close()
except HTTPError, e:
    print "Ocurrio un error"
    print e.code
except URLError, e:
    print "Ocurrio un error"
    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 (python) [Seleccionar]

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