南岸 发表于 2020-9-26 22:09

【云函数】乐心健康刷微信支付宝步数(随机步数、微信QQ推送)-10.31更新

本帖最后由 南岸 于 2020-10-31 09:07 编辑

# 说在前面
已经解决步数数据不同步第三方应用问题,感谢吾爱破解(https://www.52pojie.cn/?1113315),感谢项目(https://github.com/BBboy01/ChangeStype)

# 测试截图
!(https://i.loli.net/2020/10/30/HyoYs8MNnu9gQjI.png)
!(https://i.loli.net/2020/10/30/ODLjcw3FEpy6ZvK.jpg)

https://static.52pojie.cn/static/image/hrline/1.gif
感谢:@lpy6759

秒刷QQ微信支付宝步数99999步源码,微信最高98800步
https://www.52pojie.cn/thread-1262284-1-1.html

感谢:@可卡因
【基于Python】乐心健康刷微信支付宝步数
https://www.52pojie.cn/thread-1274712-1-1.html
https://static.52pojie.cn/static/image/hrline/1.gif
教程:
0.下载乐心健康APP:官方下载地址:http://www.lifesense.com/app/
1.从应用商店下载乐心健康App,打开软件并选择手机号登录
2.登录之后,点击我的->设置->账号与安全->设置密码(修改密码),设置你自己记得住的密码
3.回到App首页,点击我的->数据共享,绑定你想同步数据的项目注:同步微信运动请按照要求关注【乐心运动】公众号。
4.回到云函数代码,配置好下图参数,运行即可提交步数即可同步至你绑定的所有平台

5.设置好云函数触发规则


运行结果:


```
# -*- coding: utf8 -*-
import requests
import hashlib
import json
import time
import random
requests.packages.urllib3.disable_warnings
def md5(code):
    res=hashlib.md5()
    res.update(code.encode("utf8"))
    return res.hexdigest()

def get_information(mobile,password):
    header = {
      'Content-Type': 'application/json; charset=utf-8',
      "User-Agent": "Dalvik/2.1.0 (Linux; U; Android 9; SM-G9500 Build/PPR1.180610.011)"
    }
    url="https://sports.lifesense.com/sessions_service/login?version=4.5&systemType=2"
    datas = {
      "appType":6,
      "clientId":'8e844e28db7245eb81823132464835eb',
      "loginName":str(mobile),
      "password":md5(str(password)),
      "roleType":0
      }
    response =requests.post(url,headers=header,data=json.dumps(datas))
    return response.text

def update_step(step,information):
    step =int(step)
    url="https://sports.lifesense.com/sport_service/sport/sport/uploadMobileStepV2?version=4.5&systemType=2"
    accessToken=json.loads(information)["data"]["accessToken"]
    userId=json.loads(information)["data"]["userId"]
    #print(json.loads(information))
    #print(accessToken)
    #print(userId)
    #获取当前时间和日期
    timeStamp=time.time()
    localTime = time.localtime(timeStamp)
    strTime = time.strftime("%Y-%m-%d %H:%M:%S", localTime)
    print(strTime)
    measureTime=strTime+","+str(int(timeStamp))

    header = {
    'Cookie': 'accessToken='+accessToken,
    'Content-Type': 'application/json; charset=utf-8',
    "User-Agent": "Dalvik/2.1.0 (Linux; U; Android 9; SM-G9500 Build/PPR1.180610.011)"
    }
    sport_datas = {
      "list": [
            {
               "DataSource":2,
                #"active":0,
               "calories":str(int(step/4)),
                #"dataSource":4,
               "deviceId":"M_NULL",
               "distance":str(int(step/3)),
               "exerciseTime":0,
               "isUpload":0,
               "measurementTime":measureTime,
                #"priority":0,
               "step": str(step),
               "type":2,
               "updated":str(int(time.time()*1000)),
               "userId":str(userId)
                }]
                }
    result=requests.post(url,headers=header,data=json.dumps(sport_datas))
    # print(result.text)
    return result.text

def bind(information):
    # 设备qrcode列表
    qrcodelist = ['http://we.qq.com/d/AQC7PnaOelOaCg9Ux8c9Ew95yumTVfMcFuGCHMY-', 'http://we.qq.com/d/AQC7PnaOysMBFUhD6sByjYwH2MT12Jf2rqr2kFKm', 'http://we.qq.com/d/AQC7PnaOEcpmVUpHtrZBmRUVq4wOOgKw-gfh6wPj', 'http://we.qq.com/d/AQC7PnaOuG5SHierDiEH2AdZLzMt3W__GL8E1MJj', 'http://we.qq.com/d/AQC7PnaOC0S07XFU-c_R1cpxY1mtf8oiXiDrXET7', 'http://we.qq.com/d/AQC7PnaOoraxuZEdkFyVSO6gaTvMjzEzhEfLRXbE', 'http://we.qq.com/d/AQC7PnaOhQxO8K2EuU44QBZ8cRzB2ofP-oFJSU_6', 'http://we.qq.com/d/AQC7PnaOmwgxedHWCLVr-ZyeoLxHtRrHBGDuyH9E', 'ttp://we.qq.com/d/AQC7PnaO4am4196RIo98NYn_vPfHN-Y5j-w9FmSN', 'http://we.qq.com/d/AQC7PnaO2WczbXNLV7PzC7V60i7-iOgLha5Bg4cV', 'http://we.qq.com/d/AQC7PnaOZAUJTMxJ6-gbdrWV6y-jHHofCYFl-Jv0']

    accessToken = json.loads(information)["data"]["accessToken"]
    userId = json.loads(information)["data"]["userId"]
    header = {
      'Cookie': 'accessToken=' + accessToken,
      'Content-Type': 'application/json; charset=utf-8',
      "User-Agent": "Dalvik/2.1.0 (Linux; U; Android 9; SM-G9500 Build/PPR1.180610.011)"
    }
    for i in qrcodelist:
      datas = {
            "qrcode": i,
            "userId": userId,
      }
      url = 'https://sports.lifesense.com/device_service/device_user/bind'
      result = requests.post(url,headers=header,data=json.dumps(datas))
      if result.status_code == '401':
            print('重新登录')
            main()
      else:
            msg = result.json()
            print(msg)
            if msg.get('msg') == '成功':
                print('绑定成功,即将开刷')
                break
            else:
                print('此设备绑定失败,尝试下一个。')
    print('所有设备均无法绑定,请自己寻找可用的qrcode,将连接加入列表qr中进行尝试。')
def server_send(msg):
    if sckey == '':
      return
    server_url = "https://sc.ftqq.com/" + str(sckey) + ".send"
    data = {
            'text': msg,
            'desp': msg
      }
    requests.post(server_url, data=data)

def kt_send(msg):
    if ktkey == '':
      return
    kt_url = 'https://push.xuthus.cc/send/'+str(ktkey)
    data = ('步数刷取完成,请查看详细信息~\n'+str(msg)).encode("utf-8")
    requests.post(kt_url, data=data)

def execute_walk(phone,password,step):
    information=get_information(phone,password)
    bind(information)
    update_result=update_step(step,information)
    result=json.loads(update_result)["msg"]
    if result == '成功':
      msg = "刷新步数成功!此次刷取" + str(step) + "步。"
      print(msg)
      server_send(msg)
      kt_send(msg)
    else:
      msg = "刷新步数失败!请查看云函数日志。"
      print(msg)
      server_send(msg)
      kt_send(msg)


def main():
    if phone and password and step != '':
      execute_walk(phone, password, step)
    else:
      print("参数不全,请指定参数。或者在调用中直接指定参数")

# -- 配置 --
# ------------------------------
phone = ''# 登陆账号
password = ''# 密码
step = random.randint(8000,10000)# 随机8000-10000步数
sckey = ''# server酱key(可空)
ktkey = ''# 酷推key(可空)
# ------------------------------

def main_handler(event, context):
    return main()

if __name__ == '__main__':
    main()


```

南岸 发表于 2020-10-31 12:08

凉透透了

南岸 发表于 2020-10-29 22:46

本帖最后由 南岸 于 2020-10-31 09:09 编辑

更新了11个qrcode,来自@xwj1612 ,感谢大哥。
这11在挂了,各位只好自己找了

南岸 发表于 2021-1-31 09:49

supergm 发表于 2021-1-30 20:58
现在乐心健康必须要绑定设备才能共享数据了有办法么虚假绑定么

自己去买一个sn码

tianya0908 发表于 2020-10-29 22:57

南岸 发表于 2020-10-29 22:53
我是试试啊

https://www.52pojie.cn/thread-1280909-1-1.html 这个大佬的可以用就是不能自动 有点烦

南岸 发表于 2020-10-30 15:05

tianya0908 发表于 2020-10-30 14:19
感谢终于更新解决了   可以同步了

感谢你们的帮助呀

tianya0908 发表于 2020-10-29 23:48

南岸 发表于 2020-10-29 22:59
我觉得代码没问题,问题出在乐心这个规定上,如果代码有问题,那么;乐心app上的步数就不会变

代码没问题我借了个手环测了一下微信支付宝可以同步

南岸 发表于 2020-9-29 17:43

赵大粪 发表于 2020-9-29 16:03
我设了一个定时任务每天早上6点触发的,结果没刷成 我看日志说的是执行成功完全ok,然后换了每分钟触发的试 ...

一天执行一次就可以了,多次执行可能存在问题

NingXIU 发表于 2020-9-26 22:31

感谢!没人和我争第一了

liguhe 发表于 2020-9-26 22:53

本帖最后由 liguhe 于 2020-9-26 22:58 编辑

显示成功了 谢谢楼主希望楼主可以增加随机步数

woyaoshangshiqi 发表于 2020-9-26 23:07

弄完了,很有用

南岸 发表于 2020-9-26 23:34

liguhe 发表于 2020-9-26 22:53
显示成功了 谢谢楼主希望楼主可以增加随机步数

很简单啊

南岸 发表于 2020-9-26 23:43

liguhe 发表于 2020-9-26 22:53
显示成功了 谢谢楼主希望楼主可以增加随机步数

修改完了,支持随机步数了

深水夜藏 发表于 2020-9-26 23:52

感谢分享,很有用

liguhe 发表于 2020-9-26 23:57

    step = random.randint(2000,3000)# 随机1000-40000步数

NameError: name 'random' is not defined

3W-4W步很容易被封 可以下调一下吗

南岸 发表于 2020-9-27 00:01

liguhe 发表于 2020-9-26 23:57
step = random.randint(2000,3000)# 随机1000-40000步数

NameError: name 'random' is not defined
...

从新复制代码,然后自己改就可以,刚才少引了一个包
step = random.randint(2000,3000)# 随机2000-3000步数

liguhe 发表于 2020-9-27 00:03

南岸 发表于 2020-9-27 00:01
从新复制代码,然后自己改就可以,刚才少引了一个包
step = random.randint(2000,3000)# 随机2000-3000 ...

OK 测试成功了
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 【云函数】乐心健康刷微信支付宝步数(随机步数、微信QQ推送)-10.31更新