import
requests
from
base64
import
b64encode
class
Hfx(
object
):
def
__init__(
self
):
self
.user
=
{
'userName'
: '',
'password'
: ''
}
self
.userInfo
=
{}
self
.cookies
=
{
'hfs-session-id'
: ''
}
self
.headers
=
{
'Accept'
:
'application/json, text/plain, */*'
,
'Content-Type'
:
'application/json;charset=UTF-8'
,
'Origin'
:
'https://www.haofenshu.com'
,
'Referer'
:
'https://www.haofenshu.com/'
,
'Sec-Fetch-Dest'
:
'empty'
,
'Sec-Fetch-Mode'
:
'cors'
,
'Sec-Fetch-Site'
:
'cross-site'
,
'User-Agent'
:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36'
,
'deviceType'
:
'3'
,
'sec-ch-ua'
:
'"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"'
,
'sec-ch-ua-mobile'
:
'?0'
,
'sec-ch-ua-platform'
:
'"macOS"'
,
}
self
.base_url
=
'https://hfs-be.yunxiao.com'
def
login(
self
):
json_data
=
{
'loginName'
:
self
.user[
'userName'
],
'password'
: b64encode(hfx.user[
'password'
].encode(
'utf-8'
)).decode(
'utf-8'
),
'roleType'
:
2
,
'loginType'
:
1
,
'rememberMe'
:
2
,
}
response
=
requests.post(f
'{self.base_url}/v2/users/sessions'
, cookies
=
self
.cookies, headers
=
self
.headers,
json
=
json_data).json()
if
response[
'code'
]
=
=
0
:
self
.userInfo
=
response[
'data'
]
token
=
self
.userInfo[
'token'
]
self
.cookies[
'hfs-session-id'
]
=
token
self
.headers[
'Hfs-Token'
]
=
token
self
.getUserSnapshot()
else
:
print
(response[
'msg'
])
def
getUserSnapshot(
self
):
response
=
requests.get(f
'{self.base_url}/v2/user-center/user-snapshot'
, cookies
=
self
.cookies,
headers
=
self
.headers).json()
if
response[
'code'
]
=
=
0
:
linkedStudent
=
response[
'data'
][
'linkedStudent'
]
keys
=
list
(linkedStudent.keys())
for
key
in
keys:
self
.userInfo[key]
=
linkedStudent[key]
print
(f
'{self.userInfo["studentName"]} --- {self.userInfo["schoolName"]}·{self.userInfo["sgrade"]}'
f
'{self.userInfo["className"]}班'
)
self
.getExamList()
else
:
print
(response[
'msg'
])
def
getExamList(
self
):
params
=
{
'start'
:
'-1'
}
response
=
requests.get(f
'{self.base_url}/v3/exam/list'
, params
=
params, headers
=
self
.headers).json()
if
response[
'code'
]
=
=
0
:
data
=
response[
'data'
]
list
=
data[
'list'
]
print
(f
'\n{data["limitTip"]}\n'
)
for
paper
in
list
:
self
.getOverviewExam(paper[
'examId'
])
else
:
print
(response[
'msg'
])
def
getOverviewExam(
self
, examId):
response
=
requests.get(f
'{self.base_url}/v3/exam/{examId}/overview'
, cookies
=
self
.cookies,
headers
=
self
.headers).json()
if
response[
'code'
]
=
=
0
:
data
=
response[
'data'
]
papers
=
data[
'papers'
]
print
(f
'● 年级总人数:{data["gradeStuNum"]}人 \t 班级总人数:{data["classStuNum"]}人'
)
print
(
'-----------------------------------'
)
print
(f
'● {data["name"]}\n'
)
print
(f
'\t得分:{data["score"]}分/{data["manfen"]}分,得分评级:{data["scoreS"]},班级评级:{data["classRankS"]}'
)
for
paper
in
papers:
print
(f
'\t{paper["name"]}\t\t{paper["score"]}分/{paper["manfen"]}分,得分评级:{paper["scoreS"]}'
)
print
(
'\n\n'
)
else
:
print
(response[
'msg'
])
if
__name__
=
=
'__main__'
:
hfx
=
Hfx()
hfx.login()