功能描述目标

完成多账号微信小程序每天自动签到

输出

签到成功则向微信群发送签到成功的信息

否则提示用户签到失败,需手动签到

包管理

requests

itchat

time

threading

程序的结构设计步骤1

获取要发送的json数据:地址

步骤2

向服务器发送请求

步骤3

根据服服务器响应判断签到是否完成

步骤4

微信交互

代码实现使用findler抓包工具查看请求类型

https://reserve.25team.com/wxappv1/yi/index?version=13

可以看到,该小程序使用的是https,因此可以使用python爬虫来实现模拟用户签到的功能

我们先对该url发送一次请求,查看服务器返回的内容

import requests

def request_h(url):

headers = {

"Accept-Encoding": "gzip, deflate, br",

"User-Agent": "Mozilla / 5.0",

"content-type": "application / json",

"Referer": "https: // servicewechat.com / wxd2bebfc67ee4a7eb / 45 / page - frame.html",

# 设置token

"token": "可以再findler请求栏查看自己的token",

"Connection": "keep - alive",

"Host": "reserve.25team.com"

}

r = requests.get(url, headers=headers, json=json)

return r

if __name__ == '__main__':

url = "https://reserve.25team.com/wxappv1/yi/addReport"

res = request_h(url)

print(res.text)在代码当中,最主要的部分是请求头的设置,其中token尤为重要,它是服务器检验用户身份的一个重要手段,当然它的功能不仅于此

什么是token

请求发出后,服务器返回内容是一个json数据,我们在小程序中所看到的内容就是由这些json数据组成的,我们在实现签到功能的时候,也是由客户端向服务器发送一段json数据,我们先来看看我们要发送的json数据的结构

再次使用findler抓包,查看请求内容

https:reserve.25team.com/wxappv1/y1/adReport

当我们点击信息上报的时候,实际上就是向上面的网站发送了一段json数据,具体内容如下

使用python实现微信小程序自动签到功能-1.jpg (44.6 KB, 下载次数: 0)

2020-7-11 15:40 上传

我们可以看到,客户端是使用post请求发送数据的,在findler中点击请求栏上面的JSON,就可以看到我们所发送的JSON数据,如下:

# json = {"content":{"0":"否","1":"","2":"","3":"","4":"","5":"否","6":"否","7":"否","8":"正常","9":"37.2及以下","10":"陕西省延安市子长市子长市统计局政法大楼 经纬度:109.67538,37.14258","11":"否","12":"","13":"","14":""},"version":13,"stat_content":{"今日是否在京":"否","今日是否在湖北?":"否","今日是否“密切接触”疑似或确诊人群?":"否","今日是否在集中隔离点隔离":"否","今日本人身体情况(多选)":"正常"},"location":{"province":"陕西省","country":"中国","city":"延安市","longitude":109.67538,"latitude":37.14258},"sick":"","accept_templateid":""}这段json数据中,除地址以外,其他的数据都是服务器默认填好的,因此我们在发送数据时,只需要改动一下json数据当中的location即可

那么怎么获取位置呢,腾讯给我我们提供了一个接口,我们可以使用这个接口查看自己的位置信息,代码如下:

# 获取定位信息的.py

import requests

import json

url = "https://restapi.amap.com/v3/geocode/regeo?location=109.67538,37.14258&key=a0599c316b9533a47162b9044a64f659&extensions=base"

headers = {

"Accept-Encoding": "gzip, deflate, br",

"User-Agent": "Mozilla/5.0",

"content-type": "application/json",

"Referer": "https://servicewechat.com/wxd2bebfc67ee4a7eb/45/page-frame.html",

"Connection": "keep-alive",

"Host": "restapi.amap.com"

}

r = requests.get(url, headers=headers)

print(r.json())这里的url是我点击小程序当中的获取当前位置时,使用findler抓包工具抓取的

同样,这个地址接口也向我们响应了一个json数据

使用python实现微信小程序自动签到功能-2.png (55.01 KB, 下载次数: 0)

2020-7-11 15:40 上传

我们直接将返回的json数据插入到要发送的json数据中即可

使用多线程完成多用户提交的功能

代码如下

import requests

from threading import Thread

import time

def request_h(url,json,token):

headers = {

"Accept-Encoding": "gzip, deflate, br",

"User-Agent": "Mozilla / 5.0",

"content-type": "application / json",

"Referer": "https: // servicewechat.com / wxd2bebfc67ee4a7eb / 45 / page - frame.html",

"token": token,

"Connection": "keep - alive",

"Host": "reserve.25team.com"

}

while True:

r = requests.post(url, headers=headers, json=json)

print(r.text)

time.sleep(60*60*24)

if __name__ == '__main__':

url = 'https://reserve.25team.com/wxappv1/yi/addReport'

jsons = [{"content": {"0": "否", "1": "", "2": "", "3": "", "4": "", "5": "否", "6": "否", "7": "否", "8": "正常",

"9": "37.2及以下", "10": "陕西省延安市子长市子长市统计局政法大楼 经纬度:109.67538,37.14258", "11": "否", "12": "",

"13": "", "14": ""}, "version": 13,

"stat_content": {"今日是否在京": "否", "今日是否在湖北?": "否", "今日是否“密切接触”疑似或确诊人群?": "否", "今日是否在集中隔离点隔离": "否",

"今日本人身体情况(多选)": "正常"},

"location": {"province": "陕西省", "country": "中国", "city": "延安市", "longitude": 109.67538,

"latitude": 37.14258}, "sick": "", "accept_templateid": ""}]

tokens = ["eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjo1MjQzMSwiZXhwIjoxNjg1MDY2MTQ1LCJpc3MiOiJnaW4tYmxvZyJ9.2PB-82BkbgUI6pOzglN6oMP8KpiHJhmu8KF1iilWAgc"]

threads = []

n = 0

for js in jsons:

t = Thread(target=request_h, args=(url, js, tokens[n]))

n += 1

t.start()

threads.append(t)

for t in threads:

t.join()

其中,因为服务器根据token来分辨用户,要注意token和json数据的一一对应

使用itchat第三方库实现微信自动回复

因为微信官方的原因,有些用户无法使用itchat来进行自动回复,因此这部分代码我就不写了,大家可以再网上查到itchat文档

具体实现如下:

微信自动登录根据服务器返回的json数据判断是否签到成功签到成功则在对应群里发送成功标志签到失败则向文件传输助手发送失败原因正好之前我在阿里云买了一年的服务器,可以将程序安装到服务器上,再设置后台运行,这样的话就可以实现每天自动签到了

没有服务器的话,大家可以将程序部署到自己的电脑上,但是因为程序耗时较长,所以我不建议这么做

使用scp命令将程序发送到 远程 家目录下的 Documents

scp -r app_sign.py  root@47.105.49.126:/Documents使用ssh命令打开远程服务器

这里不需要密码是因为我之前设置过免密登陆

如何设置免密登陆

ssh root@47.105.49.126进入到以下页面说明连接成功了

使用python实现微信小程序自动签到功能-3.jpg (58.86 KB, 下载次数: 0)

2020-7-11 15:40 上传

可以看到我之前发送的.py文件已经发送到了服务器目录下

使用python实现微信小程序自动签到功能-4.png (57.85 KB, 下载次数: 0)

2020-7-11 15:40 上传

设置程序后台运行

nohup python3 app_sign.py  > run.log 2>& 1nohup是永久执行的命令,如果疫情结束不需要签到的话,需要使用kiil命令关闭进程

OK,这就是整个程序的实现过程

到此这篇关于使用python实现微信小程序自动签到功能的文章就介绍到这了,更多相关python 微信小程序签到内容请搜索咔叽论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持咔叽论坛!

python玩微信小程序游戏_使用python实现微信小程序自动签到功能相关推荐

  1. python玩微信小程序游戏_用python一步一步教你玩微信小程序【跳一跳】

    12月28日,微信上线了小游戏「跳一跳」,瞬间成了全民游戏,如何牢牢占据排行榜的第一位呢?用Python帮助你,Python真的无所不能. 作为技术出身的我们,是不是想用技术改变排名呢? 注意:本文适 ...

  2. python实现图片找不同游戏_用Python实现谷歌的小恐龙游戏

    (给Python开发者加星标,提升Python技能) 来源: Charles的皮卡丘-白露未晞me理 谷歌流量器中有个很有名的彩蛋:当你网络出现问题时,就会出现一个"小恐龙游戏". ...

  3. python实现消消乐游戏_用Python写个开心消消乐小游戏

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 提到开心消消乐这款小游戏,相信大家都不陌生,其曾在 2015 年获得过玩家最喜爱的移动单机游戏奖,受 ...

  4. java小恐龙游戏_用Python实现谷歌的小恐龙游戏

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 谷歌流量器中有个很有名的彩蛋:当你网络出现问题时,就会出现一个"小恐龙游戏&quo ...

  5. 采用python语言实现猜数游戏_用python实现猜数游戏

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 本文实例为大家分享了python实现猜数游戏的具体代码,供大家参考,具体内容如下 ...

  6. python pygame模块怎么写游戏_使用 Python 和 Pygame 模块构建一个游戏框架

    这系列的第一篇通过创建一个简单的骰子游戏来探究 Python.现在是来从零制作你自己的游戏的时间. 在我的这系列的第一篇文章 中, 我已经讲解如何使用 Python 创建一个简单的.基于文本的骰子游戏 ...

  7. 用python玩转数据测试与作业_用Python玩转数据分析10

    MOOC上的课程<用Python玩转数据分析>的学习笔记. 数据探索与预处理之数据清洗 数据探索包括检查数据错误,了解数据分布特征和内在规律 数据预处理包括数据清洗,数据集成(integr ...

  8. python抽奖简单小程序游戏_用Python做个年会抽奖小程序吧

    又到了每年一度的年会,最期盼的可能就是抽奖环节了.如果大家都吐槽抽奖不公,那不如用程序来抽吧. 实现思路 在屏幕上不断滚动名字,然后点击停止后停止滚动.名单是保存在excel中,所以需要从excel解 ...

  9. 用python玩转数据测试与作业_用python玩转数据-实验5

    实验 3 数据获取和表示 Deadline : 5 月 2 日 20:00 编程题 1 . 列表统计(可利用 ord 等函数)字符串中所有出现的字母的个数(不区分大小写) .例 如对于字符串" ...

最新文章

  1. TensorRT5 yoloV3加速
  2. java打字母小游戏总结与收获,java:打字母小游戏demo
  3. 2014-07-23 利用ASP.NET自带控件实现单文件上传与下载
  4. Building Fire Stations 39届亚洲赛牡丹江站B题
  5. Android Contextual Menus之二:contextual action mode
  6. hdu 5023 poj 2777(线段染色)2014 ACM/ICPC Asia Regional 广州 Online
  7. 【数据结构与算法】之深入解析“贪心算法“的原理解析和算法实现
  8. leetcode算法题解(Java版)-16-动态规划(单词包含问题)
  9. c# python 相互调用_【GhPython】Python如何使用“委托”和lambda表达式
  10. Elasticsearch增删改查 之 —— Delete删除
  11. 谈谈struts2的工作原理
  12. SQL Server2005 表分区三步曲(zz)
  13. 网络信息安全基本属性
  14. matlab汽车牌的识别,matlab车牌号识别
  15. linux系统构建学习笔记
  16. 小区同步、LTE的时间结构(FDD/TDD)
  17. 由南非世界杯想到IDC
  18. Unity 3D学习(基础篇)——C#基础入门
  19. 非IE浏览器下ActiveX技术的替代方案
  20. Linux笔记:文件共享服务Samba基础使用

热门文章

  1. word显示隐藏格式清除残留格式
  2. 2014522420145238《信息安全系统设计基础》实验三
  3. HbuilderX 小程序转快应用
  4. linux7怎么进桌面,CentOs7无法进入桌面系统怎么办?
  5. ptp精准时间协议_PTP高精度时间同步协议
  6. 黑客逆向破解基础-3:如何识别程序加的什么壳
  7. Access根据出生日期计算年龄_WPS表格技巧—如何根据出生年月日求虚岁年龄
  8. 计算机网络定义记不住,记不住是怎么回事?——记忆是个神奇的小东西
  9. html+css学习第六天(背景图片、精灵图片、元素内容溢出、长度单位)
  10. css3 火焰文字,Css3字体做出火焰效果的实现步骤