我正在尝试将POST消息发送到设备的Web界面,以便我可以使用cookie来卷曲设备上的文件(设备的API非常有限)。
问题:我的POST请求似乎不起作用,因为代码返回登录源页面内容并且没有cookie。我认为我使用的表单数据不正确但不确定有什么问题?
我想如果POST请求有效,我会看到状态码302?我收到了Chrome开发工具的POST请求,链接如下。
非常感谢任何帮助。
Python代码
import requests
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
headers = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Content-Type':'application/x-www-form-urlencoded',
'Origin' : 'https://172.110.35.61',
'Referer': 'https://172.110.35.61/',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36',}
login_url = 'https://172.110.35.61/'
payload = {'_z': '0', 'page':'login', 'username': 'TestAccount', 'passwd':'stack!!', 'submit':' Log In'}
my_request = requests.post(login_url, data=payload, verify=False)
print my_request.text
print my_request.cookies.values()
设备登录网络界面的源代码
<div id="login">
<form action="/" name="login" method="post">
<input type=hidden name="_z" value="0">
<input type="hidden" name="page" value="login">
<table>
<tr>
<td align="right">
Username:
</td>
<td>
<input class="username" type="text" name="username"maxlength="18" size="18" style="width: 15em;" value="">
</td>
</tr>
<tr>
<td align="right">
Password:
</td>
<td>
<input class="passwd" type="password" name="passwd" maxlength="18" size="18" style="width: 15em;" value="">
</td>
</tr>
<tr><td colspan="2"></td></tr>
<tr>
<td>
<input class="button" type="submit" name="submit" value=" Log In ">
</td>
</tr>
</table>
</form>
</div>
<script type=text/javascript>
document.login.username.focus();
document.cookie="noscript=0;";
</script>
所以我看到了来自行动:<form action="/" name="login" method="post">
当我使用表单数据登录时,这是POST请求: POST Request
答案 0 :(得分:0)
我设法解决了这个问题,如果我在帖子标题中传递了一个带有32个字符的PHPSESSID,我就可以对探测器进行身份验证。我还使用requests.session在成功通过身份验证后能够卷曲数据。
php_session = 'PHPSESSID={}; noscript=0'.format('1'*32)