Petición POST con Python

Iniciado por Shell Root, 27 Octubre 2010, 06:23 AM

0 Miembros y 1 Visitante están viendo este tema.

Shell Root

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
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Sancho.Mazorka

Podrias poner lo que imprime e.code y e.reaseon, asi tendriamos una vision mas amplia de tu problema.


Saludos, Sancho.Mazorka    :P
Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html



Sancho.Mazorka

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
Ganador Xeon Web Server ! ! !    Sancho.Mazorka :D
http://foro.elhacker.net/index.php/topic,171903.75.html



xassiz~

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


Shell Root

Pero eso son peticiones GET, no?
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

xassiz~

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()