Skip to content

Commit ac6a083

Browse files
authored
Add files via upload
1 parent 36274eb commit ac6a083

File tree

1 file changed

+223
-0
lines changed

1 file changed

+223
-0
lines changed

FuckDaily2.py

+223
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,223 @@
1+
import sys
2+
import requests
3+
import re
4+
5+
6+
class FuckDaily():
7+
8+
def __init__(self):
9+
self.username = '2203000000' # 账号
10+
self.password = '000000' # 密码
11+
12+
self.severInform = '无' # sever酱通知密钥
13+
# -------------------------------------------------------------------------------------------------------------
14+
self.headers = {
15+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0',
16+
}
17+
self.loginUrl = 'http://authserver.jit.edu.cn/authserver/login?service=http://ehallapp.jit.edu.cn/qljfwapp/sys/lwJitHealthInfoDailyClock/index.do?amp_sec_version_=1'
18+
self.params = {
19+
'pageNumber': '1'
20+
}
21+
self.state = ''
22+
23+
def login(self):
24+
session = requests.Session()
25+
response = requests.get(self.loginUrl, headers=self.headers)
26+
# get请求,获取响应网页数据
27+
htmls = response.content.decode()
28+
# 将字典转换为字符类型,用于正则表达式提取
29+
it = re.findall('name="lt" value="(.*?)"/>', htmls)[0]
30+
execution = re.findall('name="execution" value="(.*?)"/>', htmls)[0]
31+
# 从get请求获取的响应网页数据,正则表达式提取lt和execution数据
32+
33+
cookies = requests.utils.dict_from_cookiejar(response.cookies)
34+
# 将cookie转换为字典
35+
route = cookies['route']
36+
JSESSIONID = cookies['JSESSIONID']
37+
# 从字典中获取route键值和JSESSIONID键值
38+
39+
data = {
40+
41+
"username": self.username,
42+
"password": self.password,
43+
"lt": it,
44+
"dllt": "userNamePasswordLogin",
45+
"execution": execution,
46+
"_eventId": "submit",
47+
"rmShown": "1"
48+
49+
} # 构建post表单数据/用户数据
50+
51+
session.headers = {
52+
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
53+
'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
54+
'Content-Type': 'application/x-www-form-urlencoded',
55+
'Connection': 'keep-alive',
56+
'Cookie': 'route={0}; JSESSIONID={1}'.format(route, JSESSIONID),
57+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0',
58+
} # 构建会话请求头部
59+
60+
response = session.post(self.loginUrl, data=data, allow_redirects=False)
61+
# 发送请求头部和用户数据并禁止session重定向用来获取MOD_AUTH_CAS值
62+
63+
session.headers = {
64+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0',
65+
} # 重构会话请求头部
66+
67+
casUrl = response.headers.get('Location')
68+
# 获取重定向url
69+
ehallapp = session.get(casUrl)
70+
# 更新cookie值
71+
72+
cookies = session.cookies
73+
# 最终cookies
74+
cookies = requests.utils.dict_from_cookiejar(cookies)
75+
76+
cookies = {
77+
'_WEU': cookies.get('_WEU'),
78+
'EMAP_LANG': 'zh',
79+
'route': cookies.get('route'),
80+
'MOD_AUTH_CAS': cookies.get('MOD_AUTH_CAS'),
81+
'JSESSIONID': cookies.get('JSESSIONID'),
82+
}
83+
return cookies
84+
85+
def time(self, cookies):
86+
timeUrl = 'http://ehallapp.jit.edu.cn/qljfwapp/sys/lwpub/api/getServerTime.do'
87+
severTime = requests.get(timeUrl, headers=self.headers, cookies=cookies)
88+
# 获取当前服务器时间
89+
timejson = severTime.json()
90+
time = timejson.get('date')
91+
DateTime = re.sub(r'/', "-", time)
92+
93+
return DateTime
94+
95+
def getInfo(self, cookies):
96+
# 获取前一天填写的表单所有信息
97+
infoUrl = 'http://ehallapp.jit.edu.cn/qljfwapp/sys/lwJitHealthInfoDailyClock/modules/healthClock/getMyDailyReportDatas.do'
98+
99+
info = requests.post(infoUrl, headers=self.headers, cookies=cookies)
100+
infoJson = info.json()
101+
row = infoJson['datas']['getMyDailyReportDatas']['rows']
102+
stuInfo = row[0]
103+
return stuInfo
104+
105+
def widInfo(self, cookies):
106+
widUrl = 'http://ehallapp.jit.edu.cn/qljfwapp/sys/lwJitHealthInfoDailyClock/modules/healthClock/getMyTodayReportWid.do'
107+
widhtml = requests.post(widUrl, cookies=cookies, headers=self.headers, data=self.params)
108+
widText = widhtml.text
109+
widDict = {}
110+
widObj = re.search(r'"WID":"', widText, re.M | re.I)
111+
if widObj:
112+
wid = re.findall('"WID":"(.*?)","TODAY_', widText)[0]
113+
CZRQ = re.findall('CZRQ":"(.*?)","BY10', widText)[0]
114+
widDict = {
115+
'wid': wid,
116+
'CZRQ': CZRQ,
117+
}
118+
119+
return widDict
120+
121+
def signIn(self, cookies, severTime, severDay, widDict, stuDict):
122+
reSaveUrl = 'http://ehallapp.jit.edu.cn/qljfwapp/sys/lwJitHealthInfoDailyClock/modules/healthClock/T_HEALTH_DAILY_INFO_SAVE.do'
123+
data = {
124+
"WID": widDict.get('wid'),
125+
"BY2": "",
126+
"BY7_DISPLAY": "否",
127+
"BY7": "0",
128+
"BY8_DISPLAY": "",
129+
"BY8": "",
130+
"CREATED_AT": severTime,
131+
"CZR": "",
132+
"CZZXM": "",
133+
"CZRQ": widDict.get('CZRQ'),
134+
"USER_ID": self.username,
135+
"USER_NAME": stuDict.get('USER_NAME'),
136+
"DEPT_CODE_DISPLAY": stuDict.get('DEPT_CODE_DISPLAY'),
137+
"DEPT_CODE": stuDict.get('DEPT_CODE'),
138+
"DEPT_NAME": stuDict.get('DEPT_NAME'),
139+
"PHONE_NUMBER": stuDict.get('PHONE_NUMBER'),
140+
"FILL_TIME": severTime,
141+
"CLOCK_SITUATION": stuDict.get('CLOCK_SITUATION'),
142+
"BY3_DISPLAY": stuDict.get('BY3_DISPLAY'),
143+
"BY3": stuDict.get('BY3'),
144+
"BY4_DISPLAY": stuDict.get('BY4_DISPLAY'),
145+
"BY4": stuDict.get('BY4'),
146+
"BY11_DISPLAY": stuDict.get('BY11_DISPLAY'),
147+
"BY11": stuDict.get('BY11'),
148+
149+
"TODAY_SITUATION_DISPLAY": stuDict.get('TODAY_SITUATION_DISPLAY'),
150+
"TODAY_SITUATION": stuDict.get('TODAY_SITUATION'),
151+
"TODAY_CONDITION_DISPLAY": stuDict.get('TODAY_CONDITION_DISPLAY'),
152+
"TODAY_CONDITION": stuDict.get('TODAY_CONDITION'),
153+
"CONTACT_HISTORY_DISPLAY": stuDict.get('CONTACT_HISTORY_DISPLAY'),
154+
"CONTACT_HISTORY": stuDict.get('CONTACT_HISTORY'),
155+
"TODAY_NAT_CONDITION_DISPLAY": stuDict.get('TODAY_NAT_CONDITION_DISPLAY'),
156+
"TODAY_NAT_CONDITION": stuDict.get('TODAY_NAT_CONDITION'),
157+
"TODAY_VACCINE_CONDITION_DISPLAY": stuDict.get('TODAY_VACCINE_CONDITION_DISPLAY'),
158+
"TODAY_VACCINE_CONDITION": stuDict.get('TODAY_VACCINE_CONDITION'),
159+
"TODAY_HEALTH_CODE_DISPLAY": stuDict.get('TODAY_HEALTH_CODE_DISPLAY'),
160+
"TODAY_HEALTH_CODE": stuDict.get('TODAY_HEALTH_CODE'),
161+
"BY1_DISPLAY": stuDict.get('BY1_DISPLAY'),
162+
"BY1": stuDict.get('BY1'),
163+
"BY19_DISPLAY": stuDict.get('BY19_DISPLAY'),
164+
"BY19": stuDict.get('BY19'),
165+
"BY5": "",
166+
"BY6": "",
167+
"BY20": "",
168+
"TODAY_BODY_CONDITION_DISPLAY": "",
169+
"TODAY_BODY_CONDITION": "",
170+
"TODAY_TEMPERATURE": "",
171+
"TODAY_ISOLATE_CONDITION_DISPLAY": "",
172+
"TODAY_ISOLATE_CONDITION": "",
173+
"TODAY_TARRY_CONDITION_DISPLAY": "",
174+
"TODAY_TARRY_CONDITION": "",
175+
"BY17_DISPLAY": "",
176+
"BY17": "",
177+
"NEED_CHECKIN_DATE": severDay,
178+
"CHECKED_DISPLAY": "",
179+
"CHECKED": "",
180+
"BY18_DISPLAY": "",
181+
"BY18": "",
182+
"BY9_DISPLAY": "",
183+
"BY9": "",
184+
"BY10_DISPLAY": "",
185+
"BY10": "",
186+
"BY16_DISPLAY": "",
187+
"BY16": "",
188+
"BY12_DISPLAY": "",
189+
"BY12": "",
190+
"BY13_DISPLAY": "",
191+
"BY13": "",
192+
"BY14_DISPLAY": "",
193+
"BY14": "",
194+
"BY15_DISPLAY": "",
195+
"BY15": ""
196+
}
197+
signIn = requests.post(reSaveUrl, data=data, headers=self.headers, cookies=cookies)
198+
signJson = signIn.json()
199+
print(signJson)
200+
201+
def severChan(self, severDay):
202+
# sever酱微信通知
203+
url = 'https://sctapi.ftqq.com/{}.send'.format(self.severInform)
204+
info = severDay + ' 健康打卡~'
205+
form = {
206+
'title': info
207+
}
208+
response = requests.post(url, data=form)
209+
210+
def run(self):
211+
cookies = FuckDaily.login(self)
212+
severTime = FuckDaily.time(self, cookies)
213+
severDay = re.findall('(.*?) ', severTime)[0]
214+
widDict = FuckDaily.widInfo(self, cookies)
215+
stuInfo = FuckDaily.getInfo(self, cookies)
216+
FuckDaily.signIn(self, cookies, severTime, severDay, widDict, stuInfo)
217+
218+
FuckDaily.severChan(self, severDay)
219+
220+
221+
if __name__ == '__main__':
222+
app = FuckDaily()
223+
app.run()

0 commit comments

Comments
 (0)