中石大第二课堂活动通知
项目地址
https://github.com/herben15/CUPEventNotice
项目背景
本人深受第二课堂没有通知而导致很多活动没有报上,因此创建了这个项目
项目环境
可以使用Windows,ubantu等,python使用python3
项目依赖
本项目依赖的外部包有requests
、schedule
、yagmail
;使用以下命令可安装好这些包
pip install requests
pip install schedule
pip install yagmail
项目准备
修改邮件
在send_mes.py
文件中修改邮件,具体是send_username
修改为你自身的邮件账号,receiver_1
修改为接收信息的邮件账号,authorization
为授权码,具体看下面。为了防止邮箱发送限制,在send_mes.py
下面修改成你的备用账号,以通知你【可能也用不上,一天12封】
获取authorization
本操作以qq邮箱为例,其他邮箱请自行查阅。
登录qq邮箱【本人用网页版】——> 设置 ——> 账号 ——> POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 ——> 根据提示开启服务并获取authorization
值即可
修改请求头和cookies
请访问网页https://sct.cup.edu.cn/activitynew/mobile/activity/list,若需要登录则先登录(登录后再访问)——> 右击检查(或者F12)——> 点击网络 ——> 点击网页中的德育 ——> 点击检查中的list ——> 点击标头 ——> 找到请求标头下的User-Agent(需要复制)——> 点击上方的Cookies —— > 下方有两个值
根据上面的结果,修改fecth.py
和get_cookies.py
中的全局变量headers
和cookies
,headers中的User-Agent需要修改为你的值,Cookies中的两个值对应修改为你的值
get_cookies.py
中的USERNAME和PASSWORD换成你的账号和密码
---补充----
第二个cookie有效期太短了,我各种查找终于知道如何获取第二个cookie了。
首先get访问https://sso.cup.edu.cn/login?service=https%3A%2F%2Fsct.cup.edu.cn%2Fucenter%2Findex%2Fsaveticket
获取一个会话级cookie,然后get带上这个cookie同样访问这个url,就可以得到excution值,然后向这给网页发送post请求,然后它会从定位到一个saveticket,这就可以获取到第二个cookie了。
项目测试
若是用pycharm则直接运行test.py
文件,根据输出结果判断是否能够正确运行。
若是用命令行,则先进入src目录中,然后运行test.py文件
cd src
python3 test.py
同样根据输出结果判断是否正确运行
项目上线
这个项目需要使用服务器的。但有些点需要注意。
不能直接使用命令python3 fecth.py &
运行,因为关闭控制台后会杀死程序。需要执行以下命令
nohup python3 fecth.py &
当输出nohup: ignoring input and appending output to 'nohup.out'
就表示成功了,接下来就等消息即可。
接收处理
当邮件接收到程序异常错误时,一般是你的cookies更新了,需要你手动更新后再次运行程序。【目前不知道刷新时间,若刷新时间过快,我会考虑自动更新cookies】