2011-08-23 6 views
2

Avant de dire quoi que ce soit, j'ai regardé autour de SO et les solutions ne fonctionnaient pas. Je dois faire une demande de publication à un script de connexion en Python. L'URL ressemble à http://example.com/index.php?act=login, puis il accepte username et password via POST. Quelqu'un pourrait-il m'aider avec ça?Demande POST via urllib/urllib2?

J'ai essayé:

import urllib, urllib2, cookielib 

cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
opener.addheaders.append(('User-agent', 'Mozilla/4.0')) 
opener.addheaders.append(('Referer', 'http://www.hellboundhackers.org/index.php')) 

login_data = urllib.urlencode({'username' : '[redacted]', 
           'password' : '[redacted]' 
           }) 

resp = opener.open('http://[redacted].org/index.php?act=login', login_data) 
print resp.read() 
resp.close() 

et un peu modifié:

import urllib, urllib2, cookielib 

cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
opener.addheaders.append(('User-agent', 'Mozilla/4.0')) 
opener.addheaders.append(('Referer', 'http://www.hellboundhackers.org/index.php')) 

login_data = urllib.urlencode({'act' : 'login', 
           'username' : '[redacted]', 
           'password' : '[redacted]' 
           }) 

resp = opener.open('http://[redacted].org/index.php', login_data) 
print resp.read() 
resp.close() 
+1

Il est certainement possible de faire une demande de publication depuis Python. S'il vous plaît montrer ce que vous avez essayé, sinon nous ne pouvons pas vous dire ce qui ne va pas. –

+0

Soyez précis et quelle est la solution que vous avez essayée, et quel est le problème/l'erreur que vous avez rencontré. –

+0

Je viens d'éditer le post. Merci! –

Répondre

1

Vous aurez probablement besoin de regarder la source HTML pour savoir ce que le formulaire de connexion URL d'action est. Parfois, c'est la même chose que l'URL de la page, mais c'est probablement différent. Mais puisque vous n'avez pas montré de véritables URL, nous ne pouvons pas vous aider.

L'élément <form> pourrait ressembler à:

<form method="POST" action="/do_login"> 

Dans ce cas, vous devez utiliser /do_login dans votre URL POST.

+0

J'ai parlé avec l'administrateur du site, il a dit qu'il utilise POST. Mais je vais vérifier quand même. Merci '

' –

+0

Ok, donc c'est la même page. Alors, comment savez-vous que ça ne marche pas? Avez-vous des erreurs? –

+0

J'ai étudié la sortie ('print resp.read()'), et en haut, les boutons login/inscription étaient toujours présents. J'ai aussi essayé 'test = opener.open ('http: // [expurgé] .org/index.php? Act =" app_view') 'et ensuite' print test.read() 'après les lignes resp, dit I ' m pas connecté, donc je n'ai pas accès à cette page –