如何通过Python自动完成移动校园“每日健康”打卡

如何通过Python自动完成移动校园“每日健康”打卡

偷懒激发人改变,回家后自己的行程基本是不变的,不太想每天去点一点点一点自己的移动校园,有时候也会忘记,所以自己在CSDN上找了找大佬们有没有做过类似的尝试,果不其然,这种念头太常见了,课参考的代码也很完整很易懂,虽然瞧不起自己的拿来主义,参考尝试之后,确实好用啊。代码参考博主CookiePie的文章Python—利用Requests实现每日微信自动打卡,我只是代码的搬运工以及实现目的的更完整步骤提供者,主要是为了学习,实现2021年“100次代码助攻”小目标。

目录

  • 如何通过Python自动完成移动校园“每日健康”打卡
  • 一、前期准备
    • 1、安装Fiddler
    • 2、安装selenium
    • 3、配置Phantomjs
  • 二、核心代码
  • 三、自动打卡实现

一、前期准备

1、安装Fiddler

(1) 官网安装
Fiddler软件安装官网
(2) 按步骤配置
配置:打开Fiddler文件夹,点击Fiddler.exe运行fiddler进行配置
点击Tools–options

  • 在Tools-options弹框,点击connections,端口8888,并勾选Allow remote computers to connect,点击OK。
    如何通过Python自动完成移动校园“每日健康”打卡_第1张图片
  • 抓取HTTPS数据包
    在options弹框中切换至HTTPS,勾选图中标记的2个选项并点击OK
    如何通过Python自动完成移动校园“每日健康”打卡_第2张图片
    勾选后会弹出安装证书的提示,根据提示一直点击“是”即可安装成功

2、安装selenium

视情况而定,由于我用的是Pycharm,所以直接参考博主HW140701的Python配置Selenium+Chrome环境和Selenium+PhantomJS环境还是比较方便的。

3、配置Phantomjs

我本以为一劳永逸,后续代码中用driver = webdriver.Chrome()就行,可能是因为我的Chrome浏览器版本问题,在代码中和原博主Python—利用Requests实现每日微信自动打卡一样设置会报错,所以我又尝试在代码中重新配置下载的Phantomjs的地址,就没有报错了,这是受上一次做的小代码的启发,同时也感谢博主HW140701的Python配置Selenium+Chrome环境和Selenium+PhantomJS环境的提示。其中,第5点说明了无界面的浏览器包PhantomJS的应用。
(1)首先在官网下载地址
PhantomJS官网下载
(2)安装配置
安装PhantomJS后,将exe文件复制到python安装路径或者C:windows下,只要是系统的环境path目录都行,Pycharm就比较容易直接在setting-interpreter中添加package就行。然后把driver=webdriver.Chrome()改成driver=webdriver.PhantomJS(r'D:\crewl\venv\Scripts\phantomjs-2.1.1-windows\bin\phantomjs.exe')输入自己的安装路径即可。
但是…最开始尝试可能还是会遇到问题,查资料之后发现是selenium需要旧版本才能够和phantomjs一起用,具体原因我还不知道,所以我把selenium的版本修改为了selenium2.48.0版本,亲测可以。

二、核心代码

以下核心代码主要是参考了原博主的,我用了自己学校的网站跟着博主的思路将过程看了个遍,确实是异曲同工,基本如出一辙,主要需要重新梳理的点就只有三个地方(拿来主义可耻,努力学明白):

  1. cookie: 这个通过Fiddler就可以测试出来,往常的微信打卡入口对应着在网页也可以打开并且实现打卡,找到这个网页链接。
  2. data:没啥好说,就是更新自己的信息.
  3. 提交打卡信息的php:这个用浏览器的开发者工具看一看就行
import requests
from selenium import webdriver
from time import sleep


def get_cookie(url_, user_):
    driver = webdriver.PhantomJS(r'D:\crewl\venv\Scripts\phantomjs-2.1.1-windows\bin\phantomjs.exe')   ##添加自己的安装路径
    driver.get(url_)
    driver.find_element_by_xpath('//*[@id="username"]').send_keys(user_['name'])
    driver.find_element_by_xpath('//*[@id="password"]').send_keys(user_['password'])
    driver.find_element_by_xpath('//*[@id="casLoginForm"]/p[4]/button').click()
    sleep(2)
    cookie_ = driver.get_cookies()[0]
    driver.quit()
    return cookie_['name'] + '=' + cookie_['value']


user = {
     'name': '账号', 'password': '密码'} ##输入自己的账号密码
cookie = get_cookie(
    'https://authserver.XXX.edu.cn/authserver/login?service=http://XXXX.XXX.info/jinzhi/index.php', user)  ##网页打卡入口

headers = {
     
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
    'Cookie': cookie
}

data = {
     
    'mymethod': 'POST',
    'myurl': 'https://10.9.249.17/api/v1/ncp/student/daka/update',
    'id': '',
    't1': '否',
    't2': '',
    't3': '否',
    'stsfyc': '否',
    'stsfycxq': '',
    'dqszdpro': '{"code":"","name":""}',
    'dqszdcity': '{"code":"","name":""}',
    'dqszdreg': '{"code":"","name":""}',
    'sfdgyq': '否',
    'dgyqqt': '[]'
}   ##更新自己的数据信息,包括myurl,id,t1,t2,t3,stsfyc,stsftcxq,code,name等

url = 'http://XXXXX.XXXXX.info/jinzhi/jump.php'  ##提交信息时候的php
s = requests.session()
response = s.post(url=url, headers=headers, data=data)
html = response.text
print(html)

最后如何打卡成果就不会出现"resultCode":40001之类的错误,而是和会返回{“resultCode”:0,“resultMessage”:"",“data”:{“message”:"\u66f4\u65b0\u6210\u529f"}}。不出意外,通过代码实现打卡的步骤就如上,但是这貌似并没有实现自动打卡, 只是换个方式打卡,那如何设置的更自动呢?目前只是尝试了一个笨方法,还是没有全自动,不好意思。

三、自动打卡实现

过程设置非常简单,方法就是通过win10的“任务计划程序”实现Pycharm的定时自动启动程序。
过程如下:
创建基本任务——>按步骤设置——>程序或脚本设置为Pycharm应用程序的安装路径,参数为此次所写的.py代码存储路径——>完成,即可。这样可以在PC端实现定时运行程序了,算是节省了一点时间(我差这一点时间?就是想学点新东西而已,让生活模式改变一点点。)
如何通过Python自动完成移动校园“每日健康”打卡_第3张图片
以上,感谢CSDN各大博主的经验、成熟的代码以及详细的解释。

参考博文:
[1] https://blog.csdn.net/CookiePie/article/details/109698484
[2] https://blog.csdn.net/qq_44574333/article/details/108427545
[3] https://blog.csdn.net/HW140701/article/details/59109649?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161140090116780261940479%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=161140090116780261940479&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-59109649.first_rank_v2_pc_rank_v29&utm_term=pycharm%20webdriver.PhantomJS&spm=1018.2226.3001.4187

你可能感兴趣的:(生活小转变,python,selenium)