要自动签到,最简单的是打开页面分析请求,然后我们用脚本实现请求的自动化。但是发现食行没有页面,只有 APP,这不是一个好消息,这意味着需要抓包处理了。
下面的操作就好办了,在电脑端的浏览器打开网址,按下 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" } }
只要 Error 字段为 0,就代表登录成功!
签到分析
登录成功后,页面会自动跳转到首页,我们可以看到签到图标,点击它,进入签到页面:
发现进来还是一个签到按钮,套娃啊!再点它!
终于签到成功!
发现签到的请求: https://wechatx.34580.com/sz/SignUp/CustomerSignUp
签到请求中有两个重要的参数,accesstoken 和 customerguid,这两个参数就是登陆后返回的。
签到请求响应:
{ "Error": 0, "Message": "返回正确", "Data": { "GetPoints": 5, "SumGetPoints": 840 } }
返回说这次签到获得了 5 个积分,其实连续签到 4 天后,每天就可以获得 20 积分了!
实现
通过上面的分析,我们的签到流程也很清晰了,首先就是登陆获取 accesstoken 和 customerguid,然后再去签到就可以了!
import requests, json, sys def login(Phone, PassWord): url = "https://wechatx.34580.com/sz/Sign/SignInV2" payload = { 'SourceType': 9, 'Phone': Phone, 'PassWord': PassWord } # 测试下来发现,连 header 都不需要 response = requests.post(url, data=json.dumps(payload)) data = json.loads(response.text) is_error = data['Error'] # 登录失败直接退出 if is_error: print('登录失败:{}'.format(data['Message'])) sys.exit(1) else: print('登录成功!') return data['Data']['CustomerGuid'], data['Data']['AccessToken'] def signin(customerguid, accesstoken): url = "https://wechatx.34580.com/sz/SignUp/CustomerSignUp" querystring = {"accesstoken": accesstoken, "customerguid": customerguid, "sourcetype": "9"} # 这次不需要 body 中的传入数据 response = requests.post(url, params=querystring) data = json.loads(response.text) is_error = data['Error'] if is_error: print(data['Message']) else: print("签到成功,获取到 {} 个积分".format(data['Data']['GetPoints'])) if __name__ == "__main__": Phone = input('请输入账号:') PassWord = input('请输入密码:') customerguid, accesstoken = login(Phone.strip(), PassWord.strip()) signin(customerguid, accesstoken)
运行:
$ python shsx.py
请输入账号:188xxxxxxxx
请输入密码:98a53578bd74e150
登录成功!
签到成功,获取到 20 个积分
最后,怎么自动执行?把登录信息写死到代码里,然后放到 Linux 下的 crontab 里,每天早上执行一次就行啦~
总结
这里还有一个遗留问题,就是登录密码的获取,现在还只能通过 F12 查看请求获取到,然后记下来。
本文向大家介绍python实现网页自动签到功能,包括了python实现网页自动签到功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python实现网页自动签到功能的具体代码,供大家参考,具体内容如下 第1步、环境准备(用的chrome浏览器) 1.安装selenium包 2.下载chromedriver驱动; 找到符合自己浏览器版本的chromedriver驱动,下载解压后,将c
本文向大家介绍Python 实现网课实时监控自动签到、打卡功能,包括了Python 实现网课实时监控自动签到、打卡功能的使用技巧和注意事项,需要的朋友参考一下 响应国家停课不停学的号召,学生们都开始了网上授课,但由于课程繁多,消息繁杂,经常错过课堂签到,针对这一难题,博客主作为Python爱好者,完全使用Python语言写了本篇博客,希望能够帮助小伙伴们完成上课签到问题(注:只是帮你签到,而不是叫
本文向大家介绍使用python实现微信小程序自动签到功能,包括了使用python实现微信小程序自动签到功能的使用技巧和注意事项,需要的朋友参考一下 功能描述目标 完成多账号微信小程序每天自动签到 输出 签到成功则向微信群发送签到成功的信息 否则提示用户签到失败,需手动签到 包管理 requests itchat time threading 程序的结构设计步骤1 获取要发送的json数据:地址 步
本文向大家介绍Python实现自动装机功能案例分析,包括了Python实现自动装机功能案例分析的使用技巧和注意事项,需要的朋友参考一下 前言 提示:在管理服务器的过程中,发现有很多服务器在启动的过程中默认以PXE方式启动,这就导致我们无法将PXE装机程序放开到所有的交换机端口中,本文是以Python对dell服务器进行了一些控制,更多厂商机器的管理和控制,仍在调研中。 提示:以下是本篇文章正文内容
本文向大家介绍Python脚本实现虾米网签到功能,包括了Python脚本实现虾米网签到功能的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python脚本实现虾米网签到功能的方法。分享给大家供大家参考,具体如下: 概述 这个脚本完成了自动登录虾米网、签到的功能。 大致要用到urllib、urllib2、cookielib这几个模块。其实就是用python实现向指定的url去post数据。
本文向大家介绍Python实现自动发送邮件功能,包括了Python实现自动发送邮件功能的使用技巧和注意事项,需要的朋友参考一下 简单邮件传输协议(SMTP)是一种协议,用于在邮件服务器之间发送电子邮件和路由电子邮件。Python提供smtplib模块,该模块定义了一个SMTP客户端会话对象,可用于使用SMTP或ESMTP侦听器守护程序向任何互联网机器发送邮件。 SMTP通讯的基本流程可以概括为以下