延安大学校园网剩余流量查询接口
背景:更方便查询,而不需要每次都要登陆校园网后台管理
方案:在10.200.84.3登陆上校园网之后,其实每次都在前端会给我们返回已经使用的流量和相关数据。所以我们只需要登陆后,找到这个 api 即可。
URl:http://10.200.84.3/drcom/chkstatus?callback=dr1002&v
返回数据:
dr1002({
"result":1,
"time":1215,
"flow":14051428,
"fsele":1,
"fee":0,
"m46":0,
"v46ip":"10",
"myv6ip":"",
"oltime":42995,
"olflow":24816,
"lip":"10",
"stime":"2023-11-12 13:30:46",
"etime":"2023-11-12 13:39:28",
"uid":"113009",
"v6af":0,
"v6df":0,
"v46m":0,
"v4ip":"10.",
"v6ip":"::",
"AC":"",
"ss5":"10.",
"ss6":"10",
"vid":0,
"ss1":"",
"ss4":"",
"cvid":0,
"pvid":0,
"hotel":0,
"aolno":6179,
"eport":-1,
"eclass":1,
"zxopt":1,
"NID":"",
"olno":0,
"udate":"",
"olmac":"",
"ollm":10,
"olm1":"00000010",
"olm2":"0000",
"olm3":0,
"olmm":1,
"olm5":0,
"gid":16,
"actM":1,
"actt":,
"actdf":,
"actuf":,
"act6df":0,
"act6uf":0,
"allfm":1,
"d1":0,
"u1":0,
"d2":0,
"u2":0,
"o1":0,
"nd1":,
"nu1":,
"nd2":0,
"nu2":0,
"no1":0
})
需要注意的是返回值并不是标准的json格式。
前面需要删除:dr1002(
,后面需要删除)
使用函数find
截取到按照前后括号的内容即可变成标准json格式。
flow
是已经使用的流量
olflow
是剩余的流量
单位需要除以1024 / 1024换算成GB并%.2f
保留两位小数。
代码:
import requests
import json
url = "http://10.200.84.3/drcom/chkstatus?callback=dr1002&v"
response = requests.get(url)
if response.status_code == 200:
# 获取响应文本
data = response.text
# 找到括号内的内容,即 JSON 数据部分
start_index = data.find('(') + 1 # 开始括号后的位置
end_index = data.rfind(')') # 结束括号的位置
# 提取括号内的部分
json_data = data[start_index:end_index]
try:
# 解析 JSON 数据
parsed_data = json.loads(json_data)
# print(parsed_data['flow'] / 1024 / 1024)
# 保留两位小数
print("已用流量:%.2f GB" % (parsed_data['flow'] / 1024 / 1024))
# 同理提取 olflow 剩余流量
print("剩余流量:%.2f GB" % (parsed_data['olflow'] / 1024 / 1024))
except json.decoder.JSONDecodeError as e:
print("JSON Decode Error:", e)
print("Response Content:", json_data)
else:
print("Failed to retrieve data. Status code:", response.status_code)
编写一个 shell 脚本更便于调用和运行。
#!/bin/bash
Python3 /目标位置/main.py ; exit;