简单的签到代码_Python自动签到
起因
阅读原文食用更佳
最近学校弄了个自动签到打卡的
在身体健康的情况下
本着学tou习lan的精神
重温一下python requests库
自动签到
自动签到其实就是代码模拟我们正常签到发的网络请求
携带上正常的参数即可
import库
import requests
import time
import urllib3
from bs4 import BeautifulSoup
# 禁用warning
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
# 填写账号密码
userAccounts = [
# ['username1', 'password1'],
# ['username2', 'password2']
]
分析请求
登陆
我们都知道未登录的话会被跳转
所以需要先解决登陆问题
登陆有几种解决方案,session/JWT之类的
分析请求可知比较简单是通过session存储的
那么只要获取到JSESSIONID即可
从图片可以看出需要参数有三个
username
password
rememberme
那么我们可以通过如下python代码模拟登陆
# 账号密码登陆后返回请求需要headers
def login(username, password):
data = {
'username': username,
'password': password,
'rememberMe': 'false'
}
# 模拟post请求,verify=False禁用https检测
response = requests.post(
url='https://tb.gdei.edu.cn/login', data=data, verify=False)
# 获取setCookie字段
setCookie = response.headers['Set-Cookie']
# 获取JSESSIONID
JSESSIONID = setCookie[:setCookie.index(';')]
# 模拟正常请求构造headers,很多头其实也可以不用
headers = {
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-US;q=0.7',
'Connection': 'keep-alive',
'Cookie': JSESSIONID,
'Host': 'tb.gdei.edu.cn',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-origin',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest'
}
return headers
签到
学校有两个签到的地方
一个是每天的打卡,点击一下即可
一个是填写体温,早上和中午各一次
打卡
点击打卡后可以发现请求是get请求,参数只有一个_=13位数字
嗯13位时间戳https://domain.cn/system/yqdc/yjtb?_=1602048483670
那么就很简单了
解决打卡只需求模拟get请求
生成一个13位时间戳,带上JSESSIONID即可
python代码
# process函数处理打卡和签到
def process():
# 遍历账号
for userAccount in userAccounts:
# 登陆,获取headers
headers = login(userAccount[0], userAccount[1])
# 模拟打卡
requests.get('https://tb.gdei.edu.cn/system/yqdc/yjtb?_=%d' %
(int(round(time.time() * 1000))), verify=False, headers=headers)
print('%s打卡成功' % (userAccount[0]))
体温签到
签到有晨检和午检
我们需要知道参数和请求链接是否一样
经过我的测试
发现早上和中午的请求链接是一样的 参数不同
从页面代码看参数有两部分
需要填写的,如体温,状态:正常/不适
不需要填写的,如系别、宿舍号等,这部分是隐藏input
那么我们可以有以下思路:
①访问页面
②用BeautifulSoup解析页面获取不需要填写的参数
③手动填入体温和状态
④发起请求
python代码
# 构造体温签到参数
def getMrcjParams(headers):
# get请求
response = requests.get(
url='https://tb.gdei.edu.cn/system/mrcj/add', headers=headers, verify=False)
# BeautifulSoup解析html代码
soup = BeautifulSoup(response.text, 'lxml')
# 构造params
params = {
# 'id': '',
# 'bushi': '',
# 找到id为username的input标签的value值
'username': soup.find('input', id='username')['value'],
'suse': soup.find('input', id='suse')['value'],
'fanghao': soup.find('input', id='fanghao')['value'],
'phone': soup.find('input', id='phone')['value'],
'tbname': soup.find('input', id='tbname')['value'],
'xh': soup.find('input', id='xh')['value'],
'depid': soup.find('input', id='depid')['value'],
'xm': soup.find('input', id='xm')['value'],
'dep': soup.find('input', id='dep')['value'],
'banji': soup.find('input', id='banji')['value'],
# 需要我们填写的值
'tiwen': 36.6,
'zt': '正常'
}
return params
# process函数在原有基础上增加体温签到代码
def process():
# 遍历账号
for userAccount in userAccounts:
# 登陆,获取headers
headers = login(userAccount[0], userAccount[1])
# 模拟打卡
requests.get('https://tb.gdei.edu.cn/system/yqdc/yjtb?_=%d' %
(int(round(time.time() * 1000))), verify=False, headers=headers)
print('%s打卡成功' % (userAccount[0]))
# 获取体温签到参数
mrcjParams = getMrcjParams(headers)
print(mrcjParams)
# post请求,注意指定params和headers
requests.post(url='https://tb.gdei.edu.cn/system/mrcj/add',
params=mrcjParams, headers=headers, verify=False)
print('%s体温签到成功' % (userAccount[0]))
# 最后记得main函数调用process执行
if __name__ == '__main__':
process()
自动定时执行
win10下使用自带的定时任务
添加定时任务
首先我们需要编写一个bat用于win10自动执行
:: xxx.bat
:: 这个bat用于让win10执行,所以内容为python 代码文件
python xxx.py
接下来需要添加定时任务,让win10自动执行我们上面编写的文件
:: 可以直接powershell执行
:: /tn 定时任务的名称
:: /st startTime
:: /sc daily 每天
:: /tr 执行程序
schtasks /create /tn 晨检 /st 09:00 /sc daily /tr C:\Users\x5322\Desktop\xxx.bat
schtasks /create /tn 午检 /st 12:00 /sc daily /tr C:\Users\x5322\Desktop\xxx.bat
删除定时任务
schtasks /delete/ /tn 晨检
schtasks /delete/ /tn 午检
::: tip 通过'管理'
右键我的电脑->管理->任务计划程序->任务计划程序库也可以进行设置和删除
:::
总结
重温了一下requests的使用
以及使用函数来编写python
之前写的python文件基本都是直接写
没有函数,看起来乱乱的
代码的结构确实会好看很多哈哈
另外就是前面的体温我是写死的36.6
其实也可以让其随机在36.5-36.9这样子
就不会固定了太过明显(haipa)
定时也可以用程序自身来实现
但需要一直运行就觉得用win10自带的来实现也可以
嗯同样的我们也可以这样子来搜集网抑云热评
简单的签到代码_Python自动签到相关推荐
- python论坛签到_论坛自动签到教程
为了方便且于是自己搭建了一个论坛, bbs.lanol.cn 其他论坛也都是一个原理 方法很简单 大致流程: 1,抓取签到的那个包,这一步直接使用浏览器操作即可. 2,用Python模拟发包,达到签到 ...
- 一段简单的python代码_Python趣味打怪:60秒学会一个例子,147段简单代码助你从入门到大师 | 中文资源...
鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 人生苦短,编程苦手,不妨学起Python,感受一飞冲天的快乐. 不要害怕学习的过程枯燥无味,这里有程序员jackzhenguo打造的一份中文 ...
- python b站自动签到_搭建自动签到服务
上上篇文章已经交代了怎么升级python的版本,难道你以为仅仅拿来B站挂机吗?是时候再做一点正事了!!!于是我们来搭建自动签到平台.框架是现成的,由 binux 创造,地址在这里. 作者已经搭建了一个 ...
- python简单目标检测代码_Python Opencv实现单目标检测的示例代码
一 简介 目标检测即为在图像中找到自己感兴趣的部分,将其分割出来进行下一步操作,可避免背景的干扰.以下介绍几种基于opencv的单目标检测算法,算法总体思想先尽量将目标区域的像素值全置为1,背景区域全 ...
- python简单好看的代码_Python新手写出漂亮的爬虫代码1
初到大数据学习圈子的同学可能对爬虫都有所耳闻,会觉得是一个高大上的东西,仿佛九阳神功和乾坤大挪移一样,和别人说"老子会爬虫",就感觉特别有逼格,但是又不知从何入手,这里,博主给大家 ...
- 自动轨迹绘制的python代码_python 自动轨迹绘制的实例代码
python自动绘制轨迹怎么输入数据?#AutoTraceDraw.py import turtle as t t.title("自动轨迹绘制") t.penc自动化思维,数据和功 ...
- python简单的聚类分析代码_python kmeans聚类简单介绍和实现代码
一.k均值聚类的简单介绍 假设样本分为c类,每个类均存在一个中心点,通过随机生成c个中心点进行迭代,计算每个样本点到类中心的距离(可以自定义.常用的是欧式距离) 将该样本点归入到最短距离所在的类,重新 ...
- python简单读写记账代码_Python之区块链简单记账本实现
个人博客:http://101python.cn/ 在上一篇<>中讲述了区块链的基础知识,并用Python实现了区块和区块链的结构.在本篇中,将基于上面的内容实现一个简单的记账本功能. 记 ...
- python简单好玩的代码_Python初学者好玩案例(一):最短的抓取网页图片代码,只有10行...
这几天闲来无事,又研究了一下Python的基础内容,首先研究的是如何抓取网页数据.为什么把这篇作为初学者笔记呢?只是想让大家感受一下Python的强大的功能和简便的用法. 发现大神们通常在初级教程里就 ...
最新文章
- ActivityIndicator(菊花)的用法
- 微信小程序搜索功能!附:小程序前端+PHP后端
- postgresql 查看数据库,表,索引,表空间以及大小
- Educational Codeforces Round 11A. Co-prime Array 数学
- AutoDim:自动Embedding维度寻优,如何节省70%的存储空间同时还能大幅提效?
- Pandas的学习(4.DataFrame之间的运算以及DataFrame和Series之间的运算)
- 学成在线--6.CMS页面管理开发(删除页面)
- codevs 1415 比那名居天子
- 红米k30pro工程测试代码_红米K30 PRO代号曝光,确定推出双版本,更强拍照对标荣耀30...
- oracle8 as sysdba,Oracle 8i 密码验证
- 8.卷1(套接字联网API)---基本UDP套接字编程
- 程序员应该知道的Mac工具
- pyquery库之爬取豆瓣读书
- 【windows下基于Eclipse和GCC搭建stm32开发环境(4)】STM32启动过程详解
- 基于51单片机的红外遥控器设计
- 康托尔连续统假设正确吗?
- 软件需求包括3个不同的层次 业务需求 用户需求和功能需求
- No qualifying bean of type ‘service‘ available:单元测试报错
- 用python画钢铁侠_Matplotlib绘制漫威英雄战力图,带你飞起来!
- 如何购买云服务器----以华为云服务器为例
热门文章
- 将数学公式转换成c语言表达式,习题参考答案
- JavaScript 根据对象某属性获得其在数组中的index
- python 使用opencv在图片上绘制矩形、圆形以及中英文
- C#windows学校人力资源信息管理系统
- SlideLive:提供小清新风格PPT模板下载
- php定位和天气,基于thinkphp实现根据用户ip判断地理位置并提供对应天气信息的应用...
- 软件测评师--第16小时 文档测试
- Java快速排序(简单版)
- 【高分】ubuntu 、打开USB摄像头、Linux、USB摄像头驱动
- c#调用华为北向接口--HTTPS