如何将密码输入网页表单并以Python格式发布?

时间:2017-05-30 11:04:18

标签: python urllib2 urllib

我正在尝试登录一个非常简单的Web界面。这应该包括输入和提交密码;我不希望需要跟踪cookie,也没有用户名。

网页如下所示,其中包含一个用于POST密码的简单表单:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- saved from url=(0039)http://start.ubuntu.com/wless/index.php -->
<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Wireless Authorisation Page</title>
</head>

<body>
<h1>Title</h1>
<h2>Wireless Access Authorisation Page</h2>

Hello<br>
<form action="http://start.ubuntu.com/wless/index.php" method="POST"><input type="hidden" name="action" value="auth">PIN: <input type="password" name="pin" size="6"><br><input type="submit" value="Register"></form>
<h3>Terms of use</h3><p>some text</p>

</body>
</html>

我尝试使用urllib和urllib2进行以下操作:

import urllib
import urllib2

URL      = "http://start.ubuntu.com/wless/index.php"
data     = urllib.urlencode({"password": "verysecretpasscode"})
response = urllib2.urlopen(URL, data)
response.read()

这没有用(返回相同的页面并且登录失败)。我哪里可能出错?

2 个答案:

答案 0 :(得分:3)

表单有两个命名的输入字段,您只发送一个:

<form action="http://start.ubuntu.com/wless/index.php" method="POST">
         <input type="hidden" name="action" value="auth">
    PIN: <input type="password" name="pin" size="6"><br>
         <input type="submit" value="Register">
</form>

第二个名为pin,而非password,因此您的数据字典应如下所示:

{"pin": "verysecretpasscode", "action": "auth"}

答案 1 :(得分:1)

您可能想尝试使用requests

之类的内容

这允许你

import requests
print(requests.post(url, data={"password": "verysecretpasscode"}))