最近在研究 BOT,今天突发奇想,想把 OfferShow 的功能集成在 BOT 上,于是就开启了这一段坎坷之旅;
此篇仅用来学术交流,若有其他行为,请行为人自己负责!
由于 OfferShow 是微信小程序,所以最早就用 Stream 进行抓包,其实那时候离结果很近了,但是没怎么注意…
下面是直接抓到了请求接口的包,直接 curl:
curl 'https://www.ioffershow.com/V4/search_salary' -H 'Host: www.ioffershow.com' -H 'Connection: keep-alive' -H 'Content-Length: 100' -H 'token: ...' -H 'content-type: application/x-www-form-urlencoded' -H 'Accept-Encoding: gzip,compress,br,deflate' -H 'User-Agent: ...' -H 'Referer: https://servicewechat.com/.../.../page-frame.html' --data 'ordertype=2&content=content&search_priority=1&part_school=&xueli=&year='
成功拿到返回值,本来是万事大吉了,但是 token 有时效性,大概是十分钟左右,再次请求:
{'result': 1, 'msg': 'Token过期', 'data': '', 'code': -1}
因此,现在要做的就是找到返回 token 的接口,这是在通过 Wireshark 进行分析之后回头来看才发现的,回来自己早抓到了这个接口:

但当时没有细看,因为不是主打流量分析的,对这些词汇并没有这么敏感,而且点进去看,发现请求体里带着 token,就草草地略过了…

直接 [ 痛苦面具.jpg ] …
最初是误以为 Stream 没有抓到自己想要的包,因此想通过 Fiddler 再进行尝试,结果更是一塌糊涂;
在做好前期的准备工作后开始抓包,在同一局域网下,使用 Fiddler 进行代理访问 OfferShow,结果发现卡在进去的界面了,然后 Fiddler 也没有捕获到相关的数据包;
去谷歌了一下,得知现在版本的微信只信任自己带有的证书,并没有详细去查能不能在微信里安装证书,因此,Fiddler 的证书是不被信任的,因此就造成了连接失败,无法访问 ;
然后又看到有说电脑微信开小程序可以被抓到,就根据网上教程,做了一些如何抓取 HTTPS 数据包的设置,不过给我返回数据全是乱码,参照别人的解决方法也无济于事,因此就放弃了,转而使用 Wireshark 了;
最终无奈之下,只能开启流量分析神器 Wireshark 了,直接上图,我已经把关于 OfferShow 的流量包都过滤出来了:

经典的 HTTPS 握手过程:

在建立连接之后,就是进行数据的传输了:

服务器在接收到通过 TCP 传输的数据包后,做出了响应,发送给请求方 token:

之后就是带着这 token 去进行请求了,

之后就会拿到响应数据,不过需要进行 Unicode 解码;

直接复制到在线解码网站就行,这种现在还是很多的,比如站长工具:

其实也可以直接 追踪流 -> HTTP 流

这样就比较快捷易看;

总结得出,只要我们能获取到 js_code,我们就能够获取到 token;
但是 js_code 是一次性的,且好像需要 APPID 和 APPKEY 等,大概就是用户不太能主动获取的样子…

因为 js_code 的特殊性,关于 OfferShow 的接口调用也就暂时先告一段落了,之后再看看能不能另辟蹊径吧,总的来说还是有收获的,不错!
此篇仅用来学术交流,若有其他行为,请行为人自己负责!