python打卡以及Linux自动运行python文件

  • 前因
  • 分析
  • python代码
  • 实现linux自动运行python文件
    • 了解crond
    • 开机自启设置
    • 定时运行python文件设置
    • crond踩坑
    • 总结

前因

学校弄了个每日打卡,需要我们每天打卡两次,对于学校这种强烈的关心,我们非常感动(吃不消)。为了减轻学校每天催检的负担,于是有了这个自动打卡
悄悄的,不要让学校知道我们这么为它着想

分析

签到之前是进去填数据,现在改进得简单了,登陆后点击一键签到就行。所以,先弄出个python代码实现登陆和签到的功能
借鉴了一个大神师兄的代码,他发现了登陆页面需要提交三个参数,账户密码和一个固定的参数,而点击签到是一个get请求,所以只要用python 的requests库模拟正常签到发的网络请求携带上正常的参数即可

而对于怎么让这个python文件能自动运行呢?
办法还是有的

  1. 可以让python文件一直运行,代码逻辑实现到点模拟签到请求
  2. 可以使用win10下自带的定时任务

但是这一个个的方法感觉好low,要一直开着电脑,那么有没有能一直开着的电脑能给我用用,这就用到了阿里云的服务器了,服务器一般可是一直开着的呀,不用多浪费。
所以,要是把代码放到阿里云服务器上,并像win10的定时任务一样到点就运行,这就完美解决了

python代码

import requests
import time
import urllib3
from bs4 import BeautifulSoup
# 禁用warning
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
# 填写账号密码
userAccounts = [
# ['username1', 'password2'],
# ['username2', 'password2']
]# 账号密码登陆后返回请求需要headers
def login(username, password):
#登陆需要的三个参数username、password、remembermedata = {'username': username,'password': password,'rememberMe': 'false'}# 模拟post请求,verify=False禁用https检测response = requests.post(url='签到网址', data=data, verify=False)# 获取setCookie字段setCookie = response.headers['Set-Cookie']# 获取JSESSIONIDJSESSIONID = 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': '自己找到加上或者删除这个header','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位时间戳
所以在后面加上时间戳那么就很简单了
解决打卡只需模拟get请求
生成一个13位时间戳,带上JSESSIONID即可
'''# process函数处理打卡和签到
def process():# 遍历账号for userAccount in userAccounts:# 登陆,获取headersheaders = login(userAccount[0], userAccount[1])# 模拟打卡r = requests.get('签到网址?_=%d' %(int(round(time.time() * 1000))), verify=False, headers=headers)print('%s打卡成功' % (userAccount[0]))# main函数调用process
if __name__ == '__main__':process()

实现linux自动运行python文件

了解crond

windows下有计划任务,可以设置定时任务
而 crond 就是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程

其中:
分钟,可以是从0到59之间的任何整数。
小时,可以是从0到23之间的任何整数。
日期,可以是从1到31之间的任何整数。
月份,可以是从1到12之间的任何整数。
星期,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件
例如

#基本格式
*   *   *   *   *   user    command
#分  时  日  月  周   用户    命令#每天11.30运行该目录下的test_main脚本
30 11 * * *  /home/test_main.sh
#每分钟执行一次
* * * * * user command
#每隔2小时执行一次
* */2 * * * user command (/表示频率)
#每天8:30分执行一次
30 8 * * * user command
#每小时的30和50分各执行一次
30,50 * * * * user command(,表示并列)
#每个月的3号到6号的8:30执行一次
30 8 3-6 * * user command (-表示范围)
#每个星期一的8:30执行一次
30 8 * * 1 user command (周的范围为0-7,0和7代表周日)

开机自启设置

用root权限编辑rc.local文件

sudo vim /etc/rc.local


在exit 0上面编辑启动脚本的命令

/python路径 /文件路径/auto.py > /日志打印路径/auto.log
最后重启Linux,脚本就能自动运行并打印日志了

定时运行python文件设置

用root权限编辑crontab文件

sudo vim /etc/crontab


在文件末尾添加以下命令

2 * * * * root /python路径/python /文件路径/auto.py > /home/日志想存放的位置/auto.log

以上代码的意思是每隔两分钟执行一次脚本并打印日志
如果已经配置了python环境,可以直接写python,不用具体写出python路径

crond踩坑

网上有的博客中提到一些命令不是crond的,而是crontab
所以可能会出现下列错误

Unit crond.service could not be found.

这是因为Ubuntu上的服务名称是cron不是crond。所以你的命令应该是:

service cron start

总结

所以,我们需要用到上面的自动运行python文件,只需要把签到的python代码文件上传到服务器,然后在crontab文件中设置每天什么时候运行就可以了,如果还要追求完美的可以再设置在一个区间时间中随机时间选取一个时间进行签到,同时设计出如果签到失败可以有邮件通知,防止由于服务器停止运行而错过签到

python打卡以及Linux自动运行python文件相关推荐

  1. linux自动运行python脚本,执行脚本如何在linux环境下自启动

    Linux配置开机自启动执行脚本的方法有很多,这里分享两种方法,分别是修改/etc/rc.local方法和chkconfig管理设置的方法,均可实现Linux配置开机自启动执行脚本的功能! 设置tes ...

  2. 树莓派Linux开机使用root自动运行python的pyqt文件

    使用桌面文件运行.共计分为2步. step1:更改sudo免密 命令行运行: sudo vi sudo 打开后如下所示: 在 %sudo ALL=(ALL:ALL) ALL 下面加入如下代码: pi ...

  3. centos 自动运行python脚本,centos配置 Python 定时任务

    centos 实现自动运行 Python 脚本 正式配置前,先编写一段 Python 脚本,实现日志写入文件操作 import os import sys import loggingcurrent_ ...

  4. python php linux-怎么在linux上运行python

    Linux默认是已经安装好了Python程序 目前来说,大多数的Linux发行版是安装了两个版本的Python程序 一个是Python 2.x 一个是Python 3.x 一些系统自带的程序文件需要P ...

  5. linux下能运行python,(转)Linux下运行python

    原文: http://blog.csdn.net/jackywgw/article/details/48847187 在linux命令行下运行python,可以直接输出hello world jack ...

  6. python硬件交互_对Python的交互模式和直接运行.py文件的区别详解

    对Python的交互模式和直接运行.py文件的区别详解 看到类似C:\>是在Windows提供的命令行模式,看到>>>是在Python交互式环境下. 在命令行模式下,可以执行p ...

  7. linux服务器运行matlab文件报错

    linux服务器运行matlab文件报错 在linux服务器上安装matlab之后,如果想要运行matlab程序,通常的做法是先cd到matlab文件所在的文件夹,然后输入指令 % 假定matlab文 ...

  8. linux运行python脚本语句,如何在Linux下运行Python脚本

    1.使用python的IDEL运行python 如果你的Linux安装了python,Ctrl+Alt+T打开Terminal后输入指令:python,会出现>>>,这个时候就可以在 ...

  9. Linux定时运行Python脚本

    Linux–CentOS定时运行Python脚本 最近公司的项目开始进入运营阶段,数据库的记录也开始多了起来.看了postgresql的自动清理好像不太符合需求,暂定对接口请求记录表保留3个月内的记录 ...

最新文章

  1. js怎么获取一个元素与屏幕右边的距离_js获取元素到屏幕左上角的距离
  2. 如何在anaconda环境下安装tensorflow/pytorch/keras等
  3. 父盒子高度为子盒子总高度自动撑满 height: fit-content; //设置内容高度
  4. CCIE-LAB-第九篇-BGP下一跳+EBGP防环+伪装AS+通过标签过滤路由
  5. IDC敲黑板啦:未来企业IT以混合云为主
  6. 【实践驱动开发2-001】wifi 在android 下的实现 - AR6000 系列移植详细步骤
  7. 快速开发框架工作笔记001---项目开发中整理_整合好的_springcloud快速开发框架_springcloud框架_springcloud架构
  8. 高质量技术文章哪里看?数据人必看的优质公众号
  9. JavaSE学习--正则表达式
  10. js call与apply函数
  11. wps linux 哪个版本好用吗,WPS Linux版与国产统一操作系统UOS完成适配:体验追上Wintel...
  12. C++11线程安全的单例模式
  13. linux添加软件源命令,Linux 添加源
  14. 关于ARINC 573/717帧同步字的误解
  15. 青客公寓挂牌房源分城市爬取
  16. Elasticsearch5.6搭建及拼音中文混合搜索实现
  17. Public Key Retrieval is not allowed
  18. java使用poi,将xls文件转换为xlsx文件
  19. mini-smooth-signature.js:小程序canvas带笔锋手写签名,支持微信/支付宝/钉钉/QQ等多平台小程序使用
  20. 微信小游戏开发实战教程15-关卡编辑器的制作以及关卡分享功能的实现

热门文章

  1. 常用端口与udp协议
  2. 开源OpenIM:高性能、可伸缩、易扩展的即时通讯架构
  3. Spine使用外部图片动画换肤
  4. mysql-ACID
  5. uc神马推广一年多少钱,uc信息流推广一个月要多少钱
  6. Filter过滤器(超详细)
  7. 什么是导航?导航具有什么样的作用?
  8. 打印俄文字母表java,?俄语字母表、俄文键盘、傻瓜式读音法、书写法大全【一起学俄语】...
  9. 修改Opera浏览器主页搜索引擎
  10. 数据库单个插入操作转为批量插入