通过urllib/urllib2发送POST请求?
在你说任何话之前,我想告诉你,我已经在Stack Overflow上查过了,但那些解决方案都没用。我需要用Python向一个登录脚本发送一个POST请求。这个网址是 http://example.com/index.php?act=login,然后它通过POST接收 username
和 password
。有人能帮我一下吗?
我试过:
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()
还有稍微修改过的:
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 个回答
1
你可能需要查看一下网页的HTML源代码,才能找到登录表单的操作网址。有时候这个网址和页面的网址是一样的,但大多数情况下是不同的。不过因为你没有提供具体的网址,我们也无法帮你解决这个问题。
这个 <form>
元素可能看起来像这样:
<form method="POST" action="/do_login">
在这种情况下,你需要在你的POST请求的网址中使用 /do_login
。