本文针对于WX端接口展开分析
某天发现之前给宿舍写的查电费软件不能用了。自己琢磨了两天,发现新接口不和之前一样抓到接口后直接请求就能用。这一次更新添加了身份验证的步骤。
(文章所包含本人信息等关键字符串在发布前均测试为失效)
直接说一下基本流程:
1. 用户使用WX浏览器获取用户code
2. 利用code获取openid及token
3. 使用openid及token获取正确session
4. 使用正确session请求电量数据
以上步骤在Fidder中如下图所示
大致讲解如下:
1. #1 行开始获取WX浏览器中WX用户code并赋值于 #2 行使用 (写文章时code过期啦)
2. #2 行将用户的code及token传送到服务器后请求 #3,在 #3 返回数据的请求头中包含下一步跳转的链接,该链接包含用户的openid及token。token实质为uuid,但其生成算法未知。若未正确请求该接口将会返回状态码200且提示错误,正确请求应为302跳转。
3. 请求 #3 的链接后,之后步骤必要参数session将会出现。未经过以上步骤操作使用正确的用户openid及token访问将会返回假session及200状态码。正确访问将302跳转至用户页面
4.在后续请求中session起到关键作用,所有请求的请求头必须包含该session。与其相存在的是SERVERID。该id在每次请求后都会更新。需要注意的是,Referer也必须包含在请求头。
总结:
微信code在一般自己写的请求脚本中很难获取,且请求中需要使用WX用户的openid,在一定程度上实现了实名请求,也更加难获取到真实的数据。
发表回复