用过食行生鲜的同学应该知道,每天可以在食行生鲜签到,签到可以领到 20 积分,在购物时可以抵 2 毛钱。钱虽少,但是积少成多,买菜时可以抵扣一两块钱还是不错的。
今天我们就用 Python 来实现自动签到,省得我每天打开 APP 来操作了。
分析
要自动签到,最简单的是打开页面分析请求,然后我们用脚本实现请求的自动化。但是发现食行没有页面,只有 APP,这不是一个好消息,这意味着需要抓包处理了。
不过还好,我们有微信。
在微信里面,我们发现也可以登录食行,这时选择在浏览器中打开页面,~哎~ ,柳暗花明了,我们找到了一个可用的网页地址:wechatx.34580.com
下面的操作就好办了,在电脑端的浏览器打开网址,按下 F12,开始起飞~
登录分析
点击签到后,会跳转到用户登录页面: https://wechatx.34580.com/mart/#/sign/in,输入登录信息后,点击登录,同时关注开发调试栏的网络交互信息 。
可以发现,登录的请求地址是: https://wechatx.34580.com/sz/Sign/SignInV2,并且会在请求时带着登录信息 :
{ "SourceType": "9", "Phone": "18800000000", "PassWord": "98a53578bd74e150", "ZhuGeDeviceMd5": "164edd53b71674-02922cef4808a-47e1039-e1000-164edd53b7222e", "DeviceId": ""}
现在,还无法确定哪些字段是必填的,哪些是可以不传的。
有一个问题是,密码是经过加密的,我在页面输入的 000000 ,这里变成了 98a53578bd74e150。这里我找了半天是如何加密的,也没有找到,若是有大神有办法,还请留言告知!
不过还好,加密方式是固定的,也就是 000000 一直对应的是 98a53578bd74e150,我们只要记下这个加密后的密码,在登录时,传入后台即可。
登录成功后,请求会响应一些 token 数据:
{ "Error": 0, "Message": "返回正确", "Data": { "CustomerGuid": "d8cd7c84-xxxx-4369-xxxx-b1e86c027407", "Phone": "18800000000", "AccessToken": "73c7b5fxxxxxxx" }}
新闻热点
疑难解答