蚊孓 发表于 2021-6-17 17:01:23

打卡广东红小程序

一边学一边写的。

按要求貌似需要打卡50个即可,但发现可以打卡100个,如果只想打卡50个请自行替换for循环的上限数值。

import requests
import json
import time

headers = {
    'Accept-Encoding': 'gzip,compress,br,deflate',
    'content-type': 'application/json',
    'Connection': 'keep-alive',
    'Referer': 'https://servicewechat.com/wx2478a87602a76401/5/page-frame.html',
    'Host': 'dj.leadmea.com',
    'Authorization': '请自行抓包获取并填入,抓包打开一次小程序,搜url:leadmea查看请求头即可',
    'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.7(0x18000729) NetType/WIFI Language/zh_CN',
    'X-Requested-With': 'XMLHttpRequest'
}

# 获取景点列表和信息
def getList():
    url = 'https://dj.leadmea.com/trails-many'
    data = ''
    r = requests.post(url=url, headers=headers, data=data)
    list = json.loads(r.text)['data']['list']
    return list


    # print(list)

# 打卡
def checkin():
    list = getList()
    url = 'https://dj.leadmea.com/trails-clock'
    num = len(list)
    print(f'总共需打卡{num}个红色景点')
    for i in range(0, len(list)):
      trailsId = list['id']
      longitude = list['longitude']
      latitude = list['latitude']
      title_tips = list["title_tips"]
      data = '{"trailsId":' + trailsId + ',"longitude":' + longitude + ',"latitude":' + latitude + ',"type":1}'
      r = requests.post(url=url, headers=headers, data=data)
      msg = json.loads(r.text)['msg']
      print(f'打卡第{trailsId}个景点:{title_tips},{msg}')
      #必须等待5秒以上,否则可能会有失败景点
      time.sleep(5)

if __name__ == "__main__":
    checkin()
页: [1]
查看完整版本: 打卡广东红小程序