起因

阅读原文食用更佳

最近学校弄了个自动签到打卡的
在身体健康的情况下
本着学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自动签到相关推荐

  1. python论坛签到_论坛自动签到教程

    为了方便且于是自己搭建了一个论坛, bbs.lanol.cn 其他论坛也都是一个原理 方法很简单 大致流程: 1,抓取签到的那个包,这一步直接使用浏览器操作即可. 2,用Python模拟发包,达到签到 ...

  2. 一段简单的python代码_Python趣味打怪:60秒学会一个例子,147段简单代码助你从入门到大师 | 中文资源...

    鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 人生苦短,编程苦手,不妨学起Python,感受一飞冲天的快乐. 不要害怕学习的过程枯燥无味,这里有程序员jackzhenguo打造的一份中文 ...

  3. python b站自动签到_搭建自动签到服务

    上上篇文章已经交代了怎么升级python的版本,难道你以为仅仅拿来B站挂机吗?是时候再做一点正事了!!!于是我们来搭建自动签到平台.框架是现成的,由 binux 创造,地址在这里. 作者已经搭建了一个 ...

  4. python简单目标检测代码_Python Opencv实现单目标检测的示例代码

    一 简介 目标检测即为在图像中找到自己感兴趣的部分,将其分割出来进行下一步操作,可避免背景的干扰.以下介绍几种基于opencv的单目标检测算法,算法总体思想先尽量将目标区域的像素值全置为1,背景区域全 ...

  5. python简单好看的代码_Python新手写出漂亮的爬虫代码1

    初到大数据学习圈子的同学可能对爬虫都有所耳闻,会觉得是一个高大上的东西,仿佛九阳神功和乾坤大挪移一样,和别人说"老子会爬虫",就感觉特别有逼格,但是又不知从何入手,这里,博主给大家 ...

  6. 自动轨迹绘制的python代码_python 自动轨迹绘制的实例代码

    python自动绘制轨迹怎么输入数据?#AutoTraceDraw.py import turtle as t t.title("自动轨迹绘制") t.penc自动化思维,数据和功 ...

  7. python简单的聚类分析代码_python kmeans聚类简单介绍和实现代码

    一.k均值聚类的简单介绍 假设样本分为c类,每个类均存在一个中心点,通过随机生成c个中心点进行迭代,计算每个样本点到类中心的距离(可以自定义.常用的是欧式距离) 将该样本点归入到最短距离所在的类,重新 ...

  8. python简单读写记账代码_Python之区块链简单记账本实现

    个人博客:http://101python.cn/ 在上一篇<>中讲述了区块链的基础知识,并用Python实现了区块和区块链的结构.在本篇中,将基于上面的内容实现一个简单的记账本功能. 记 ...

  9. python简单好玩的代码_Python初学者好玩案例(一):最短的抓取网页图片代码,只有10行...

    这几天闲来无事,又研究了一下Python的基础内容,首先研究的是如何抓取网页数据.为什么把这篇作为初学者笔记呢?只是想让大家感受一下Python的强大的功能和简便的用法. 发现大神们通常在初级教程里就 ...

最新文章

  1. ActivityIndicator(菊花)的用法
  2. 微信小程序搜索功能!附:小程序前端+PHP后端
  3. postgresql 查看数据库,表,索引,表空间以及大小
  4. Educational Codeforces Round 11A. Co-prime Array 数学
  5. AutoDim:自动Embedding维度寻优,如何节省70%的存储空间同时还能大幅提效?
  6. Pandas的学习(4.DataFrame之间的运算以及DataFrame和Series之间的运算)
  7. 学成在线--6.CMS页面管理开发(删除页面)
  8. codevs 1415 比那名居天子
  9. 红米k30pro工程测试代码_红米K30 PRO代号曝光,确定推出双版本,更强拍照对标荣耀30...
  10. oracle8 as sysdba,Oracle 8i 密码验证
  11. 8.卷1(套接字联网API)---基本UDP套接字编程
  12. 程序员应该知道的Mac工具
  13. pyquery库之爬取豆瓣读书
  14. 【windows下基于Eclipse和GCC搭建stm32开发环境(4)】STM32启动过程详解
  15. 基于51单片机的红外遥控器设计
  16. 康托尔连续统假设正确吗?
  17. 软件需求包括3个不同的层次 业务需求 用户需求和功能需求
  18. No qualifying bean of type ‘service‘ available:单元测试报错
  19. 用python画钢铁侠_Matplotlib绘制漫威英雄战力图,带你飞起来!
  20. 如何购买云服务器----以华为云服务器为例

热门文章

  1. 将数学公式转换成c语言表达式,习题参考答案
  2. JavaScript 根据对象某属性获得其在数组中的index
  3. python 使用opencv在图片上绘制矩形、圆形以及中英文
  4. C#windows学校人力资源信息管理系统
  5. SlideLive:提供小清新风格PPT模板下载
  6. php定位和天气,基于thinkphp实现根据用户ip判断地理位置并提供对应天气信息的应用...
  7. 软件测评师--第16小时 文档测试
  8. Java快速排序(简单版)
  9. 【高分】ubuntu 、打开USB摄像头、Linux、USB摄像头驱动
  10. c#调用华为北向接口--HTTPS