要自动签到,最简单的是打开页面分析请求,然后我们用脚本实现请求的自动化。但是发现食行没有页面,只有 APP,这不是一个好消息,这意味着需要抓包处理了。
有需要Python学习资料的小伙伴吗?小编整理【一套Python资料、源码和PDF】,感兴趣者可以关注小编后私信学习资料(是关注后私信哦)反正闲着也是闲着呢,不如学点东西啦
不过还好,我们有微信。
在微信里面,我们发现也可以登录食行,这时选择在浏览器中打开页面,~哎~ ,柳暗花明了,我们找到了一个可用的网页地址: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"
}
}
只要 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资料、源码和PDF】,548加上377还有875感兴趣者可以进下这个群,反正闲着也是闲着呢,不如学点东西啦**
360每日自动签到,领取积分 (java httpclient4.x)
如何登陆360,并每日自动签到这次的难点主要集中在登陆这里了,开始抓包发现360登陆验证很麻烦,但是后来发现一个简单的方法.因为我安装了360安全卫士,发现点击那个金币的按钮能直接验证登陆,哈哈~所以 ...
利用python开发app实战
你说,我们的未来 被装进棺材,染不上尘埃 *** 我很早之前就想开发一款app玩玩,无奈对java不够熟悉,之前也没有开发app的经验,因此一直耽搁了.最近想到尝试用python开发一款app,goo ...
python写的自动签到脚本。
等以后有时间补上. 附上代码: #! /usr/bin/env python # coding:utf-8 #-----------------------------------------学号和密 ...
孩子王app自动签到送现金券
今天在某商场的孩子王店给小孩买东西时发现,app连续签到3天即可获得一张5元现金券. 回到家中,花几分钟Fiddler抓包分析写了个自动签到的代码. var cookies = new string[ ...
Python 实现 T00ls 自动签到脚本(邮件+钉钉通知)
T00ls 每日签到是可以获取 TuBi 的,由于常常忘记签到,导致损失了很多 TuBi .于是在 T00ls 论坛搜索了一下,发现有不少大佬都写了自己的签到脚本,签到功能实现.定时任务执行以及签到提 ...
利用python对微信自动进行消息推送
from wxpy import * #该库主要是用来模拟与对接微信操作的 import requests from datetime import datetime import time impo ...
Python 实现「食行生鲜」签到领积分
用过食行生鲜的同学应该知道,每天可以在食行生鲜签到,签到可以领到 20 积分,在购物时可以抵 2 毛钱.钱虽少,但是积少成多,买菜时可以抵扣一两块钱还是不错的. 今天我们就用 Python 来实现自动 ...
如何利用Python实现自动打卡签到
需求描述 我们需要登录考勤系统(网页端,非手机端)进行签到,如果不想每天都早早起来打卡签到,就可以通过写程序实现这一功能. 业务梳理 通过长时间的早起打卡签到发现规律,我每天只是不停的点击,签到,都是 ...
利用python自动生成verilog模块例化模板
一.前言 初入职场,一直忙着熟悉工作,就没什么时间更新博客.今天受“利奇马”的影响,只好宅在家中,写写技术文章.芯片设计规模日益庞大,编写脚本成了芯片开发人员必要的软技能.模块端口动不动就几十上百个, ...
随机推荐
swift学习笔记之-枚举
//枚举定义 import UIKit //枚举定义 (枚举.结构体.类的名字首字母必须大写,表示为定义了新的类型) /*枚举为一组相关的值定义了一个共同的类型,使你可以在你的代码中以类型安全的方式来 ...
C# 反射操作方法
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.R ...
VulToEs
VulntoES https://github.com/ChrisRimondi/VulntoES
JavaWeb学习总结(四十九)——简单模拟Sping MVC
在Spring MVC中,将一个普通的java类标注上Controller注解之后,再将类中的方法使用RequestMapping注解标注,那么这个普通的java类就够处理Web请求,示例代码如下: ...
Vue2.x中的父子组件相互通信
业务场景:(这里指的是直接父子级关系的通信) 美女(子组件)将消息发送给大群(父组件) 大群(父组件)收到美女发送的消息后再回个信息给美女(子组件) 父组件 template
JavaScript实现动画效果
说到JavaScript实现动画效果,不得不想到两个函数,setTimeout和setInterval. setTimeout的常用的使用方法为 setTimeout(callback, delay) ...
DEDE中 field:rel 是什么意思,起一个什么样的作用效果
DEDE中 field:rel 是什么意思,起一个什么样的作用效果 这是一段调用导航栏目的代码 {dede:channel type='top' row='10' } [field:typename/ ...
mysql安装出现问题(The service already exists)
1.管理员身份运行cmd(系统win10) 2.输入命令cd /d F:\mysql-5.7.19-win32\bin(此为mysql要安装的目录) 3.输入安装命令mysqld install 出现 ...
java FileUtil工具类
网上的版本太多,整合了一下适合自己用的工具类,包括读取.保存.拷贝文件等. public class FileUtil { /** * 私有构造方法,防止类的实例化,因为工具类不需要实例化. */ p ...
PHP连接数据库实现多条件查询与分页功能——关于租房页面的完整实例操作
租房页面如图: 代码如下: