Files
python----/智慧校园/本部/登入学生账号.ipynb
T
admin aac9f5934d feat: 添加多个功能模块和工具脚本
- 新增websocket客户端和服务端实现
- 添加图片压缩工具和快速压缩脚本
- 实现学生信息处理相关API
- 添加MQTT客户端和消息处理功能
- 更新.gitignore忽略更多文件类型
- 添加数据库操作工具和示例
- 实现多个测试脚本和工具类
2026-04-13 14:47:50 +08:00

24 KiB

In [1]:
from requests import get,post
import pandas as pd
import time
teamId = 19
ip = "http://band.hxzhxy.cn"
param = {
    "username": "zhongwei",
    "password": "123456a",
    "client_id": "client",
    "grant_type": "password",
    "client_secret": "123456",
}
data = get(url=f"http://band.hxzhxy.cn/oauth/token?username=zhongwei&password=123456a&client_id=client&grant_type=password&client_secret=123456").json()
token = data["access_token"]
header = {
    "content-type": "application/json",
    "authorization": f"Bearer {token}",
}
In [2]:
#25届
studentInfos = get(f"https://www.hxzhxy.cn/hxyd-api/uc/student/pageInfo?teamId=19&gradeId=124&type=0&pageSize=500&pageNumber=0&orderDirection=asc&access_token={token}").json()["data"]["content"]
In [ ]:
# studentInfos = get(f"https://www.hxzhxy.cn/hxyd-api/uc/student/pageInfo?teamId=19&gradeId=120&name=&type=0&pageSize=30&pageNumber=1&orderDirection=asc&access_token={token}").json()["data"]["content"]
In [23]:
import time
In [34]:
def getSportInfo(wristbandNo):
    my_time = time.time()*1000
    res = get(f"{ip}/parent/band/day",params={
        "date":1762504686000,
        "wristbandNo":wristbandNo,
    },headers=header).json()
    print(res)
In [ ]:
for stu in studentInfos:
    userName = stu['userName']
    stuNo= f"{stu['stuNo']}a"
    res =  get(f"{ip}/oauth/token?username={userName}&password={stuNo}&client_id=client&grant_type=password&client_secret=123456").json()
    if res.get("access_token",False) and stu["type"]==5:
        count = 2
        if stu["wxPhone"]:
            count-=1
        if stu["wxPhones"]:
            count-=1
            
        print(f"{stu['stuName']} 未改密码,{count}个联系方式未绑定")
        # getSportInfo(stu["seralNo"])
白芮羽 未改密码,0个联系方式未绑定
白宇强 未改密码,0个联系方式未绑定
曾妙涵 未改密码,0个联系方式未绑定
曾奕璟 未改密码,1个联系方式未绑定
陈佳逸 未改密码,2个联系方式未绑定
陈奕冰 未改密码,1个联系方式未绑定
陈雨泽 未改密码,0个联系方式未绑定
程彦萌 未改密码,0个联系方式未绑定
崔绪程 未改密码,1个联系方式未绑定
邓馨怡 未改密码,1个联系方式未绑定
邓雅心 未改密码,0个联系方式未绑定
丁晨曦 未改密码,0个联系方式未绑定
董思淇 未改密码,0个联系方式未绑定
董思睿 未改密码,1个联系方式未绑定
段梓锽 未改密码,1个联系方式未绑定
樊子妘 未改密码,1个联系方式未绑定
樊梓皓 未改密码,1个联系方式未绑定
方一渊 未改密码,1个联系方式未绑定
付琦宁 未改密码,0个联系方式未绑定
甘浩源 未改密码,1个联系方式未绑定
高竟然 未改密码,1个联系方式未绑定
苟语欣 未改密码,0个联系方式未绑定
苟紫阳 未改密码,0个联系方式未绑定
何柏翰 未改密码,0个联系方式未绑定
---------------------------------------------------------------------------
KeyboardInterrupt                         Traceback (most recent call last)
Cell In[4], line 4
      2 userName = stu['userName']
      3 stuNo= f"{stu['stuNo']}a"
----> 4 res =  get(f"{ip}/oauth/token?username={userName}&password={stuNo}&client_id=client&grant_type=password&client_secret=123456").json()
      5 if res.get("access_token",False) and stu["type"]==5:
      6     count = 2

File d:\Anaconda3\Lib\site-packages\requests\api.py:73, in get(url, params, **kwargs)
     62 def get(url, params=None, **kwargs):
     63     r"""Sends a GET request.
     64 
     65     :param url: URL for the new :class:`Request` object.
   (...)
     70     :rtype: requests.Response
     71     """
---> 73     return request("get", url, params=params, **kwargs)

File d:\Anaconda3\Lib\site-packages\requests\api.py:59, in request(method, url, **kwargs)
     55 # By using the 'with' statement we are sure the session is closed, thus we
     56 # avoid leaving sockets open which can trigger a ResourceWarning in some
     57 # cases, and look like a memory leak in others.
     58 with sessions.Session() as session:
---> 59     return session.request(method=method, url=url, **kwargs)

File d:\Anaconda3\Lib\site-packages\requests\sessions.py:589, in Session.request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
    584 send_kwargs = {
    585     "timeout": timeout,
    586     "allow_redirects": allow_redirects,
    587 }
    588 send_kwargs.update(settings)
--> 589 resp = self.send(prep, **send_kwargs)
    591 return resp

File d:\Anaconda3\Lib\site-packages\requests\sessions.py:703, in Session.send(self, request, **kwargs)
    700 start = preferred_clock()
    702 # Send the request
--> 703 r = adapter.send(request, **kwargs)
    705 # Total elapsed time of the request (approximately)
    706 elapsed = preferred_clock() - start

File d:\Anaconda3\Lib\site-packages\requests\adapters.py:589, in HTTPAdapter.send(self, request, stream, timeout, verify, cert, proxies)
    586     timeout = TimeoutSauce(connect=timeout, read=timeout)
    588 try:
--> 589     resp = conn.urlopen(
    590         method=request.method,
    591         url=url,
    592         body=request.body,
    593         headers=request.headers,
    594         redirect=False,
    595         assert_same_host=False,
    596         preload_content=False,
    597         decode_content=False,
    598         retries=self.max_retries,
    599         timeout=timeout,
    600         chunked=chunked,
    601     )
    603 except (ProtocolError, OSError) as err:
    604     raise ConnectionError(err, request=request)

File d:\Anaconda3\Lib\site-packages\urllib3\connectionpool.py:787, in HTTPConnectionPool.urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)
    784 response_conn = conn if not release_conn else None
    786 # Make the request on the HTTPConnection object
--> 787 response = self._make_request(
    788     conn,
    789     method,
    790     url,
    791     timeout=timeout_obj,
    792     body=body,
    793     headers=headers,
    794     chunked=chunked,
    795     retries=retries,
    796     response_conn=response_conn,
    797     preload_content=preload_content,
    798     decode_content=decode_content,
    799     **response_kw,
    800 )
    802 # Everything went great!
    803 clean_exit = True

File d:\Anaconda3\Lib\site-packages\urllib3\connectionpool.py:493, in HTTPConnectionPool._make_request(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length)
    490 # conn.request() calls http.client.*.request, not the method in
    491 # urllib3.request. It also calls makefile (recv) on the socket.
    492 try:
--> 493     conn.request(
    494         method,
    495         url,
    496         body=body,
    497         headers=headers,
    498         chunked=chunked,
    499         preload_content=preload_content,
    500         decode_content=decode_content,
    501         enforce_content_length=enforce_content_length,
    502     )
    504 # We are swallowing BrokenPipeError (errno.EPIPE) since the server is
    505 # legitimately able to close the connection after sending a valid response.
    506 # With this behaviour, the received response is still readable.
    507 except BrokenPipeError:

File d:\Anaconda3\Lib\site-packages\urllib3\connection.py:494, in HTTPConnection.request(self, method, url, body, headers, chunked, preload_content, decode_content, enforce_content_length)
    492 for header, value in headers.items():
    493     self.putheader(header, value)
--> 494 self.endheaders()
    496 # If we're given a body we start sending that in chunks.
    497 if chunks is not None:

File d:\Anaconda3\Lib\http\client.py:1331, in HTTPConnection.endheaders(self, message_body, encode_chunked)
   1329 else:
   1330     raise CannotSendHeader()
-> 1331 self._send_output(message_body, encode_chunked=encode_chunked)

File d:\Anaconda3\Lib\http\client.py:1091, in HTTPConnection._send_output(self, message_body, encode_chunked)
   1089 msg = b"\r\n".join(self._buffer)
   1090 del self._buffer[:]
-> 1091 self.send(msg)
   1093 if message_body is not None:
   1094 
   1095     # create a consistent interface to message_body
   1096     if hasattr(message_body, 'read'):
   1097         # Let file-like take precedence over byte-like.  This
   1098         # is needed to allow the current position of mmap'ed
   1099         # files to be taken into account.

File d:\Anaconda3\Lib\http\client.py:1035, in HTTPConnection.send(self, data)
   1033 if self.sock is None:
   1034     if self.auto_open:
-> 1035         self.connect()
   1036     else:
   1037         raise NotConnected()

File d:\Anaconda3\Lib\site-packages\urllib3\connection.py:325, in HTTPConnection.connect(self)
    324 def connect(self) -> None:
--> 325     self.sock = self._new_conn()
    326     if self._tunnel_host:
    327         # If we're tunneling it means we're connected to our proxy.
    328         self._has_connected_to_proxy = True

File d:\Anaconda3\Lib\site-packages\urllib3\connection.py:198, in HTTPConnection._new_conn(self)
    193 """Establish a socket connection and set nodelay settings on it.
    194 
    195 :return: New socket connection.
    196 """
    197 try:
--> 198     sock = connection.create_connection(
    199         (self._dns_host, self.port),
    200         self.timeout,
    201         source_address=self.source_address,
    202         socket_options=self.socket_options,
    203     )
    204 except socket.gaierror as e:
    205     raise NameResolutionError(self.host, self, e) from e

File d:\Anaconda3\Lib\site-packages\urllib3\util\connection.py:73, in create_connection(address, timeout, source_address, socket_options)
     71 if source_address:
     72     sock.bind(source_address)
---> 73 sock.connect(sa)
     74 # Break explicitly a reference cycle
     75 err = None

KeyboardInterrupt: 
在当前单元格或上一个单元格中执行代码时 Kernel 崩溃。

请查看单元格中的代码,以确定故障的可能原因。

单击<a href='https://aka.ms/vscodeJupyterKernelCrash'>此处</a>了解详细信息。

有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。
In [ ]: