Python实现“食行生鲜”签到领积分功能

  

用过食行生鲜的同学应该知道,每天可以在食行生鲜签,到签到可以领到积20分,在购物时可以抵2毛钱。钱虽少,但是积少成多,买菜时可以抵扣一两块钱还是不错的。

  

今天我们就用Python来实现自动签,到省得我每天打开应用程序来操作了。

  

  

要自动签,到最简单的是打开页面分析请求,然后我们用脚本实现请求的自动化。但是发现食行没有页面,只有应用,这不是一个好消息,这意味着需要抓包处理了。

  

不过还好,我们有微信。

  

在微信里的面,我们发现也可以登录食行,这时选择在浏览器中打开页面,~哎~,柳暗花明了,我们找到了一个可用的网页地址:wechatx.34580.com

  

 Python实现“食行生鲜”签到领积分功能“> <br/>
  </p>
  <p>下面的操作就好办了,在电脑端的浏览器打开网址,按下F12,开始起飞~ </p>
  <p> </p>
  <p>点击签到后,会跳转到用户登录页面:https://wechatx.34580.com/mart//标志/,输入登录信息后,点击登录,同时关注开发调试栏的网络交互信息。</p>
  <p> <img src=   {   “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,就代表登录成功!

  

  

登录成功后,页面会自动跳转到首页,我们可以看到签到图标,点击它,进入签到页面:

  

 Python实现“食行生鲜”签到领积分功能“> <br/>
  </p>
  <p>发现进来还是一个签到按钮,套娃啊!再点它! </p>
  <p>终于签到成功! </p>
  <p>发现签到的请求:https://wechatx.34580.com/sz/SignUp/CustomerSignUp </p>
  <p> <img src=   {   “错误”: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实现“食行生鲜”签到领积分功能