用过食行生鲜的同学应该知道,每天可以在食行生鲜签,到签到可以领到积20分,在购物时可以抵2毛钱。钱虽少,但是积少成多,买菜时可以抵扣一两块钱还是不错的。
今天我们就用Python来实现自动签,到省得我每天打开应用程序来操作了。
要自动签,到最简单的是打开页面分析请求,然后我们用脚本实现请求的自动化。但是发现食行没有页面,只有应用,这不是一个好消息,这意味着需要抓包处理了。
不过还好,我们有微信。
在微信里的面,我们发现也可以登录食行,这时选择在浏览器中打开页面,~哎~,柳暗花明了,我们找到了一个可用的网页地址:wechatx.34580.com
{
“SourceType”:“9”
“电话”:“18800000000”,
“密码”:“98 a53578bd74e150”
“ZhuGeDeviceMd5”:“164 edd53b71674 - 02922 cef4808a - 47 - e1039 -发- 164 edd53b7222e”,
“的DeviceId”:“
}
现在,还无法确定哪些字段是必填的,哪些是可以不传的。
有一个问题是,密码是经过加密的,我在页面输入的000000年,这里变成了98 a53578bd74e150。这里我找了半天是如何加密的,也没有找的到,若是有大神有办法,还请留言告知!
不过还好,加密方式是固定的,也就000000是一直对应的是98 a53578bd74e150,我们只要记下这个加密后的密码,在登录时,传入后台即可。
登录成功后,请求会响应一些令牌数据:
{ “错误”:0, “消息”:“返回正确”, "数据":{ :“CustomerGuid d8cd7c84 - xxxx - 4369 - xxxx b1e86c027407”, “电话”:“18800000000”, “AccessToken”:“73 c7b5fxxxxxxx” } }
只要错误字段为0,就代表登录成功!
登录成功后,页面会自动跳转到首页,我们可以看到签到图标,点击它,进入签到页面:
{
“错误”:0,
“消息”:“返回正确”,
"数据":{
“GetPoints”: 5
“SumGetPoints”: 840
}
}
返回说这次签到获得了5个积分,其实连续签4天到后,每天就可以获得积20分了。
通过上面的分析,我们的签到流程也很清晰了,首先就是登陆获取accesstoken和customerguid,然后再去签到就可以了!
导入请求、json、系统 def登录(电话、密码): url=" https://wechatx.34580.com/sz/Sign/SignInV2 " 有效载荷={ “SourceType”: 9, “电话”:手机, “密码”:密码 } #测试下来发现,连头都不需要=响应请求。帖子(url, data=https://www.yisu.com/zixun/json.dumps(载荷)) data=https://www.yisu.com/zixun/json.loads (response.text) is_error=数据(“错误”) #登录失败直接退出 如果is_error: 打印(“登录失败:{}“.format(数据(“信息”))) sys.exit (1) 其他: 打印(“登录成功!”) 返回数据(“数据”)(“CustomerGuid”),数据(“数据”)(“AccessToken”) def signin (customerguid accesstoken): url=" https://wechatx.34580.com/sz/SignUp/CustomerSignUp " 变量={" accesstoken”: accesstoken, “customerguid”: customerguid,“sourcetype”:“9”} #这次不需要身体中的传入数据=响应请求。帖子(url, params=参数) data=https://www.yisu.com/zixun/json.loads (response.text) is_error=数据(“错误”) 如果is_error: 打印(数据(“信息”)) 其他: 打印(“签到成功,获取到{}个积分“.format(数据(“数据”)[' GetPoints '])) if __name__==癬_main__”: 电话=输入(“请输入账号:') 密码=输入(“请输入密码:') customerguid accesstoken=登录(Phone.strip (), PassWord.strip ()) signin (customerguid accesstoken)Python实现“食行生鲜”签到领积分功能