OpenITI 开发日志_0909

Rycbartbad

昨天 Cosy 师傅在群里提出“对校园集市进行数据过滤”的想法,感觉会是一个不错的方向。包括之前我所参与的WuHub项目(现已并入 OpenJWC)也是一个校园信息整合项目,但是很遗憾只实现对教务处数据的处理,没能实现多源数据整合的设想。希望这个项目能成为对 OpenJWC 的补充或扩展。

校园集市拥有我校极大的用户群体,但是集市上帖子众多且信息散乱,有很多有价值的数据往往被掩盖。本项目目前以收集各课程评价以及数据量化为主要目标。

令牌获取

对于校园集市数据爬取比较困难的一点是,它要求请求头中带有 X-Sc-Od(登录 token),由微信授权后签发给小程序,而这段 token 全程走在微信内部,所以想拿到它就需要让小程序的流量经过我们搭设的中间人代理。目前的解决方案是使用 mitmproxy 作为临时代理获取 token,然后即可长期维持登录态。

请求头构造

校园集市服务器不支持普通浏览器访问,只接受来自微信小程序发来的请求,所以我们需要构造一个请求头达到伪装小程序的效果。以下为请求头格式:

1
2
3
4
5
6
7
8
9
X-Sc-Nd = 20位随机数字
X-Sc-Td = 当前unix时间戳
X-Sc-Ah = md5(f"{X-Sc-Alias}_{X-Sc-Nd}_{X-Sc-Td}_{secret}")
X-Sc-Od = 登录token
X-Sc-Alias = "xxx"
X-Sc-Appid = 小程序唯一标识符
X-Sc-Version = 赞噢小程序的版本号
X-Sc-Client = 客户端类型标识
UA = 微信Windows小程序UA

其中 secret 密钥由社区开源大佬给出,可翻看开源项目代码查阅

关于API

接口 方法 参数 用途
/thread/v2/list POST from_time、hot、with_comment/with_reply=false 帖子流:最新→旧翻页
/thread/v2/search POST wd、cur_page、cate_id(10=实时,20=历史)、range(1d/3d/7d/1m/6m/1y) 关键词搜索(回溯 1 年历史)
/thread/info POST form: id 帖子详情(title/content/img_paths/统计…)
/comment/list POST id 评论列表(含 reply_list 楼中楼)

目前用到的API只有这些,在搜集API的过程中了解到校园集市所能搜索的时间范围最多只有一年,为有价值的评论也会随时间消失感到可惜。

后续的一些想法

Cosy 师傅正在对 OCR 模型进行测试,之后打算使用 ALBERT 模型进行自然语言处理,暂时不知道效果能否达到预期。

Comments
On this page
OpenITI 开发日志_0909