ISP每日自动签到+推送

0x00 前言

由于学校的系统一点都不完善,可能动不动就修改一下请求的url,所以可能会失效,届时出现问题通常只需要修改一下url就可以解决问题。

为实现自动签到加微信推送通知,采用了腾讯的云函数与server酱来完成,基本属于白嫖。

0x01 获取Server酱

访问Server酱的官网: https://sc.ftqq.com/ ,可以直接使用github进行登录,登录后点击右上角的微信推送然后扫码进行绑定

1598253738001

然后点击发送消息,获取自己的SCKEY,这个需要填写到脚本中,在下面的在线发送工具中也可以进行测试,检测自己微信是否绑定成功了。

1598253798356

0x02 配置代码

把自己ISP的账号,密码,以及Server酱的SCKEY填写到代码中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
'''
@Descripttion: isp一键登记,用于无变化的情况,基于py3.x,v0.2添加了server酱
@version: 0.2
@Author: 0xfire
@Date: 2020-02-02 09:45:13
LastEditors: 0xfire
LastEditTime: 2020-08-24 15:16:39
'''
import requests
import datetime as dt
import re
from urllib import parse
import time

#========填写账号、密码、SCKEY========
uname = ""
upass = ""
SCKEY = ""
#==================================

LoginUrl = "https://xsswzx.cdu.edu.cn/ispstu4-1/com_user/weblogin.asp"
LeftUrl = "https://xsswzx.cdu.edu.cn/ispstu4-1/com_user/left.asp"

'''
server酱功能
@title:标题
@content:内容
@sckey:自己的server酱的key
'''
def sendCheckMsg(title,content):
try:
url = 'https://sc.ftqq.com/' + SCKEY + '.send'
data = {'text':title,'desp':content}
result = requests.post(url,data)
if 'success' in result:
print("server酱推送成功")
except:
print("server酱推送失败")

'''
签到功能
'''
def ISPcheckin(username,password):
try:
LoginData = {'username':username,'userpwd':password,'code':1111,'login':"login",'checkcode':0,'rank':0,'action':"login",'m5':1}
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
s = requests.Session()
r = s.post(LoginUrl,headers = header,data=LoginData)
r = s.get(LeftUrl,headers=header)

r.encoding = 'utf-8'
_re = re.compile(r'(project.asp\?)(id=[a-f0-9]{1,44})(">疫情信息登记)')
#此时这个id是用于身份验证的
id = _re.search(r.text).group(2)

#进行一键登记,无变化
PostDateYear = dt.datetime.now().year
PostDateMonth = dt.datetime.now().month
PostDateDay = dt.datetime.now().day

PostDate = parse.quote(str(PostDateYear)+'年'+str(PostDateMonth)+'月'+str(PostDateDay)+'日')

CheckUrl = "https://xsswzx.cdu.edu.cn/ispstu4-1/com_user/project_addx.asp"+"?"+id+"&id2="+PostDate
r = s.get(CheckUrl,headers=header)
r.encoding = 'utf-8'
checkinres = re.search("alert\('(.*)(\!|!|。)'\)",r.text)
if '提交成功' in checkinres.group(1):
sendCheckMsg("ISP签到成功","SUCCESS!")
elif '登记已存在' in checkinres.group(1):
print("今日签到已存在")
except:
sendCheckMsg("ISP签到失败啦!!!!!!","FAILE!")


def main_handler(event, context):
ISPcheckin(uname,upass)

0x03 云函数配置

使用腾讯云的云函数: https://cloud.tencent.com/ ,进行代码自动调用,每日定时打卡。

登录过后访问: https://console.cloud.tencent.com/scf ,接下来如下图进行操作。

1598254208515

创建一个空白函数

1598254254491

代码复制进来

1598254611543

另外在下面的高级设置中添加一个时区的环境变量,然后点击下面的完成。

1598254669628

0x04 设置corn表达式

设置corn表达式达成每天定时自动签到

1598254884629

表示每天7点,12点执行,一天执行两次,防止网站拥挤执行失败。可以根据自己情况进行设置触发周期,提交后就算所有配置完成。

1598255081201

0x05 测试&总结

函数代码下面有个测试按钮

1598255193460

执行后在下面的日志框中可以看到一些结果,由于我今天已经签到了,所以显示签到已经存在。

1598255256695

至此配置自动签到+微信Server酱推送完成,每天只需要看看自己微信的推送就行了。

在?给俺买颗糖?