Autojs 实践-修改微信运动步数

概述

最近公司为了员工身体健康,举行一个健步走的活动,活动周期为一个月,前十名会有对应的奖励,一个同事就问我有没有走捷径的方法,虽说我也是一个比较爱运动的人(用不到),但也很好奇,经过面向百度,最后看看效果吧,可提供接口,直接使用!
需下载第三方APP:zepp life(小米运动)

实现效果

AutoJS:

网页版地址:http://117.72.103.61:3000/#/wx
在这里插入图片描述

数据来源(如有侵犯,请联系删除)

我是在GitHub上面找的,看到大佬都是用Python,但是我想用Java写,就仿写了一个。
源代码(没真正的测试过):

# -*- coding: utf8 -*-
import math
import traceback
from datetime import datetime
import pytz

import json
import random
import re
import time
import os

import requests


# 获取北京时间
def get_beijing_time():
    target_timezone = pytz.timezone('Asia/Shanghai')
    # 获取当前时间
    return datetime.now().astimezone(target_timezone)


# 格式化时间
def format_now():
    return get_beijing_time().strftime("%Y-%m-%d %H:%M:%S")


# 获取默认值转int
def get_int_value_default(_config: dict, _key, default):
    _config.setdefault(_key, default)
    return int(_config.get(_key))


# 获取当前时间对应的最大和最小步数
def get_min_max_by_time(hour=None, minute=None):
    if hour is None:
        hour = time_bj.hour
    if minute is None:
        minute = time_bj.minute
    time_rate = min((hour * 60 + minute) / (22 * 60), 1)
    min_step = get_int_value_default(config, 'MIN_STEP', 18000)
    max_step = get_int_value_default(config, 'MAX_STEP', 25000)
    return int(time_rate * min_step), int(time_rate * max_step)


# 虚拟ip地址
def fake_ip():
    # 随便找的国内IP段:223.64.0.0 - 223.117.255.255
    return f"{
     223}.{
     random.randint(64, 117)}.{
     random.randint(0, 255)}.{
     random.randint(0, 255)}"


# 账号脱敏
def desensitize_user_name(user):
    if len(user) <= 8:
        ln = max(math.floor(len(user) / 3), 1)
        return f'{
     user[:ln]}***{
     user[-ln:]}'
    return f'{
     user[:3]}****{
     user[-4:]}'


# 获取时间戳
def get_time():
    current_time = get_beijing_time()
    return "%.0f" % (current_time.timestamp() * 1000)


# 获取登录code
def get_access_token(location):
    code_pattern = re.compile("(?<=access=).*?(?=&)")
    result = code_pattern.findall(location)
    if result is None or len(result) == 0:
        return None
    return result[0]


# pushplus消息推送
def push_plus(title, content):
    requestUrl = f"http://www.pushplus.plus/send"
    data = {
   
        "token": PUSH_PLUS_TOKEN,
        "title": title,
        "content": content,
        "template": "html",
        "channel": "wechat"
    }
    try:
        response = requests.post(requestUrl, data=data)
        if response.status_code == 200:
            json_res = response.json()
            print(f"pushplus推送完毕:{
     json_res['code']}-{
     json_res['msg']}")
        else:
            print("pushplus推送失败")
    except:
        print("pushplus推送异常")


class MiMotionRunner:
    def __init__(self, _user, _passwd):
        user = str(_user)
        password = str(_passwd)
        self.invalid = False
        self.log_str = ""
        if user == '' or password == '':
            self.error = "用户名或密码填写有误!"
            self.invalid = True
            pass
        self.password = password
        if ("+86" in user) or "@" in user:
            user = user
        else:
            user = "+86" + user
        if "+86" in user:
            self.is_phone = True
        else:
            self.is_phone = False
        self.user = user
        self.fake_ip_addr = fake_ip()
        self.log_str += f"创建虚拟ip地址:{
     self.fake_ip_addr}\n"

    # 登录
    def login(self):

        url1 = "https://api-user.huami.com/registrations/" + self.user + "/tokens"
        login_headers = {
   
            "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
            "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2",
            "X-Forwarded-For": self.fake_ip_addr
        }
        data1 = {
   
            "client_id": "HuaMi",
            "password": f"{
     self.password}",
            "redirect_uri": "https://s3-us-west-2.amazonaws.com/hm-registration/successsignin.html",
            "token": "access"
        }
        r1 = requests.post(url1, data=data1, headers=login_headers, allow_redirects=False)
        if r1.status_code != 303:
            self.log_str += "登录异常,status: %d\n" % r1.status_code
            return 0, 0
        location = r1.headers["Location"]
        try:
            code = get_access_token(location)
            if code is None:
                self.log_str += "获取accessToken失败\n"
                return 0, 0
        except:
            self.log_str += f"获取accessToken异常:{
     traceback.format_exc()}\n"
            return 0, 0
        # print("access_code获取成功!")
        # print(code)

        url2 = "https://account.huami.com/v2/client/login"
        if self.is_phone:
            data2 = {
   
                "app_name": "com.xiaomi.hm.health",
                "app_version": "4.6.0",
                "code": f"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值