美文网首页有趣的Python
Python 实现「食行生鲜」签到领积分

Python 实现「食行生鲜」签到领积分

作者: hoxis | 来源:发表于2018-08-06 13:37 被阅读6次

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

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

分析

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

不过还好,我们有微信。

在微信里面,我们发现也可以登录食行,这时选择在浏览器中打开页面, ,柳暗花明了,我们找到了一个可用的网页地址: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 查看请求获取到,然后记下来。

但是,登录密码是怎么加密的,由于本人 js 方面比较薄弱,有能力有兴趣的同学要是能看出来可以留言分享下啊~

另外,怎么知道是不是签到成功了呢,总不能去看定时任务的执行日志吧,是不是可以发送短信通知或者微信通知?这个且看后续分解。


如果觉得有用,欢迎关注我的微信,一起学习,共同进步,不定期推出赠书活动~

你的关注是对我最大的鼓励!你的关注是对我最大的鼓励!

最近搜集到慕课网视频,视频内容涵盖 Python、Java、PHP、前端、小程序、算法、架构、数据库等等!关注本公众号,后台回复「慕课网」即可获取下载地址。

相关文章

  • Python 实现「食行生鲜」签到领积分

    用过食行生鲜的同学应该知道,每天可以在食行生鲜签到,签到可以领到 20 积分,在购物时可以抵 2 毛钱。钱虽少,但...

  • iOS电商项目之我的积分

    我的积分包括签到领积分、积分明细 签到领积分 积分明细 想要系统,具体的学习,请加群-------群号:64765...

  • 1 行代码,实现微信消息发送

    还是接食行生鲜签到的问题,之前我们讲到,将签到结果通过短信发送到手机,但是我发现 twilio 有些不稳定,为了防...

  • 生鲜电商的瓶颈—冷链物流如何发展?

    2016年12月24日,食行生鲜北京站点将暂停配送业务。食行生鲜创始人张洪良表示由于食行生鲜做的是“卖菜”...

  • 2021.0721

    今天好像没有忘记要做什么。 每天固定的几项打卡事宜,淘宝签到,支付宝签到领积分,捐步数,喂鸡,平安签到,微博签到。...

  • 食行生鲜

    最近迷上了在食行生鲜上买买买,几乎每天都会买,每天都会花几分钟看看特价的蔬菜,然后就不自觉地下单,家里的...

  • 投了很多资源但还是做不好积分商城?因为天生就不合适

    积分,现在好像已经变成了一个app的标配: 登陆领积分签到获积分分享奖积分……好像积分成了一种取悦用户的万能药剂,...

  • 利用Python实现App自动签到领取积分

    要自动签到,最简单的是打开页面分析请求,然后我们用脚本实现请求的自动化。但是发现食行没有页面,只有 APP,这不是...

  • 利用Python实现App自动签到领取积分

    要自动签到,最简单的是打开页面分析请求,然后我们用脚本实现请求的自动化。但是发现食行没有页面,只有 APP,这不是...

  • python实现掘金定时签到抽奖

    python实现掘金定时签到抽奖 一. 概述 这里记录一下使用 python 实现掘金定时签到抽奖。首先需要登录掘...

网友评论

    本文标题:Python 实现「食行生鲜」签到领积分

    本文链接:https://www.haomeiwen.com/subject/nuowvftx.html