Python实现App自动签到领取积分功能


Posted in Python onSeptember 29, 2018

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

Python实现App自动签到领取积分功能

Python实现App自动签到领取积分功能

下面的操作就好办了,在电脑端的浏览器打开网址,按下 F12,开始起飞~

登录分析

点击签到后,会跳转到用户登录页面: https://wechatx.34580.com/mart/#/sign/in,输入登录信息后,点击登录,同时关注开发调试栏的网络交互信息 。

Python实现App自动签到领取积分功能

可以发现,登录的请求地址是: 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,就代表登录成功!

签到分析

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

Python实现App自动签到领取积分功能

发现进来还是一个签到按钮,套娃啊!再点它!

终于签到成功!

发现签到的请求: https://wechatx.34580.com/sz/SignUp/CustomerSignUp

Python实现App自动签到领取积分功能

签到请求中有两个重要的参数,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 调用Java实例详解
Jun 02 Python
Python实现变量数值交换及判断数组是否含有某个元素的方法
Sep 18 Python
解决yum对python依赖版本问题
Jul 05 Python
Python测试模块doctest使用解析
Aug 10 Python
Python 共享变量加锁、释放详解
Aug 28 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
Oct 11 Python
python自动生成model文件过程详解
Nov 02 Python
详解Python中的分支和循环结构
Feb 11 Python
Python3 selenium 实现QQ群接龙自动化功能
Apr 17 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
Jun 28 Python
Python常用数据分析模块原理解析
Jul 20 Python
python实现双向链表原理
May 25 Python
10个Python小技巧你值得拥有
Sep 29 #Python
实例分析python3实现并发访问水平切分表
Sep 29 #Python
3个用于数据科学的顶级Python库
Sep 29 #Python
使用Python机器学习降低静态日志噪声
Sep 29 #Python
python实现字符串和字典的转换
Sep 29 #Python
python实现字符串中字符分类及个数统计
Sep 28 #Python
python中使用zip函数出现错误的原因
Sep 28 #Python
You might like
超级简单的php+mysql留言本源码
2009/11/11 PHP
php setcookie函数的参数说明及其用法
2014/04/20 PHP
用jQuery向div中添加Html文本内容的简单实现
2016/07/13 Javascript
Javascript中级语法快速入手
2016/07/30 Javascript
文件上传插件SWFUpload的使用指南
2016/11/29 Javascript
详解前后端分离之VueJS前端
2017/05/24 Javascript
详解React Native网络请求fetch简单封装
2017/08/10 Javascript
React Native 搭建开发环境的方法步骤
2017/10/30 Javascript
js动态获取时间的方法分析
2019/08/02 Javascript
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
uniapp 仿微信的右边下拉选择弹出框的实现代码
2020/07/12 Javascript
[03:09]2014DOTA2国际邀请赛 赛场上的美丽风景线 中国Coser也爱DOTA2
2014/07/20 DOTA
[01:32]DOTA2次级联赛——首支职业女子战队选拔赛全记录
2014/10/23 DOTA
python使用reportlab实现图片转换成pdf的方法
2015/05/22 Python
python 性能优化方法小结
2017/03/31 Python
Python实现动态图解析、合成与倒放
2018/01/18 Python
TensorFlow搭建神经网络最佳实践
2018/03/09 Python
Python实现繁体中文与简体中文相互转换的方法示例
2018/12/18 Python
python实现AES加密与解密
2019/03/28 Python
Django框架中序列化和反序列化的例子
2019/08/06 Python
Python 3.9的到来到底是意味着什么
2020/10/14 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
使用before和:after伪类制作css3圆形按钮
2014/04/08 HTML / CSS
纯css3实现鼠标经过图片显示描述的动画效果
2014/09/01 HTML / CSS
法国购买二手电子产品网站:Asgoodasnew
2020/03/27 全球购物
保安员岗位职责
2013/11/17 职场文书
学期研究性学习个人的自我评价
2014/01/09 职场文书
酒店大堂副理的职责范文
2014/02/13 职场文书
网络工程师自荐书范文
2014/04/01 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
销售代理协议书
2014/09/30 职场文书
法人代表证明书格式
2014/10/01 职场文书
酒店辞职信怎么写
2015/02/27 职场文书
毕业生个人总结
2015/02/28 职场文书
【海涛dota解说】一房久违的影魔魂守二连发
2022/04/01 DOTA
Windows Server 2012 R2服务器安装与配置的完整步骤
2022/07/15 Servers