通过urllib/urllib2发送POST请求?

2 投票
1 回答
4891 浏览
提问于 2025-04-17 00:10

在你说任何话之前,我想告诉你,我已经在Stack Overflow上查过了,但那些解决方案都没用。我需要用Python向一个登录脚本发送一个POST请求。这个网址是 http://example.com/index.php?act=login,然后它通过POST接收 usernamepassword。有人能帮我一下吗?

我试过:

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

撰写回答