我正在自动配置网络设备。我需要登录每个设备,更改网络地址和密码。
使用:Requests Python模块。
首先需要做的是登录。这是一个简单的表单。通过检查网站,我将分析所需的标头和参数。
发生了什么?运行脚本后,我收到了这个输出:
更改有效载荷格式:相同的错误
首先需要做的是登录。这是一个简单的表单。通过检查网站,我将分析所需的标头和参数。
General:
Request URL:http://192.168.7.2:8000/api/login
Request Method:POST
Status Code:200 OK
Remote Address:192.168.7.2:8000
Referrer Policy:no-referrer-when-downgrade
Response Headers:
Transfer-Encoding:chunked
Request Headers:
POST /api/login HTTP/1.1
Host: 192.168.7.2:8000
Connection: keep-alive
Content-Length: 37
Accept: application/json, text/plain, */*
Origin: http://192.168.7.2:8000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36
Content-Type: application/json;charset=UTF-8
Referer: http://192.168.7.2:8000/login.html
Accept-Encoding: gzip, deflate
Accept-Language: pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7
Request Payload:
{"user":"user","password":"password"}
根据我得到的文档,我得到了以下代码:
import requests
import json
url = "http://192.168.7.2:8000/api/login"
payload = {"user":"admin","password":"admin"}
r = requests.post(url,data=payload)
#r.encoding = "UTF-8"
print r.text
发生了什么?运行脚本后,我收到了这个输出:
{"errno":"20"}
,如果我使用错误的用户名/密码登录,也会出现相同的错误。但是,在Web界面中使用这个用户名/密码进行身份验证是成功的。我认为代码有问题。更改有效载荷格式:相同的错误
{"errno":"20"}
。payload = (("user","admin"),("password","admin"))
r = requests.post(url,data=payload)
#r.encoding = "UTF-8"
print r.text
JSON编码: 报告不同的错误:{"errno":"0","key":"fc2d253fb9b25d5880dd4843f439bc7b"}
import requests
import json
url = "http://192.168.7.2:8000/api/login"
payload = {"user":"admin","password":"admin"}
r = requests.post(url,data=json.dumps(payload))
#r.encoding = "UTF-8"
print r.text
直接传递json: 报告 {"errno":"0","key":"6f7ed0ae5f14833f689fcb34c2bf5b77"}
import requests
import json
url = "http://192.168.7.2:8000/api/login"
payload = {"user":"admin","password":"admin"}
r = requests.post(url,json=payload)
#r.encoding = "UTF-8"
print r.text
使用不同的URL:
import requests
import json
url = "http://192.168.7.2:8000/login.html"
payload = {"user":"admin","password":"admin"}
r = requests.post(url,data=payload)
#r.encoding = "UTF-8"
print r.text
这是一份报告 UnicodeEncodeError: 'ascii'编解码器无法对位置3426-3427的字符进行编码:序数不在范围内(128)
打印r.encoding
-> ISO-8859-1
是输出结果。
设置r.encoding="utf-8"
并且 print r.text
输出:UnicodeEncodeError: 'ascii'编解码器无法对位置3426的字符进行编码:序数不在范围内(128)
有人使用过这个库吗?
{"errno":"20'"}
。你认为问题可能是设备固件吗? - Shinomoto Asakura