基于python3.7的一个闯越自动签到脚本--demo版

萝らか妹 提交于 2020-03-07 22:20:11

望指正demo的定位,有时候会抽风无法接受我的定位信息

  1 #! /usr/bin/python3
  2 # -*- coding:UTF-8 -*-
  3 # time : 2019/5/20  20:53
  4 # file : chuangyue.py
  5 # By 卤蛋
  6 from urllib.parse import quote
  7 import datetime
  8 import requests
  9 import calendar
 10 import sys
 11 import time
 12 import random
 13 import urllib3
 14 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
 15 
 16 request = requests.session()
 17 
 18 d = datetime.datetime.now()
 19 
 20 StateId = 3
 21 
 22 index_html = __file__.replace("requestforCH.py", "") + "index.html"
 23 index_img = __file__.replace("requestforCH.py", "") + "index.jpg"
 24 
 25 UserAgent_list = [r"Mozilla/5.0 (Linux; Android 8.1.0; Redmi 6 Build/O11019; wv) " +
 26                   r"AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.99 Mobile Safari/537.36",
 27                   r"Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19",
 28                   r"Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
 29                   r"Mozilla/5.0 (Linux; U; Android 6.2; en-gb; GT-P1000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"]
 30 
 31 with open(__file__.replace("requestforCH.py", "") + r'cookie.txt', 'r') as file:
 32     cookie = file.read()
 33 cookies = {}  # 初始化cookies字典变量
 34 for line in cookie.split(';'):  # 按照字符:进行划分读取
 35     # 其设置为1就会把字符串拆分成2份
 36     name, value = line.strip().split('=', 1)
 37     cookies[name] = value  # 为字典cookies添加内容
 38 
 39 
 40 def UserAgent():
 41     return UserAgent_list[random.randint(0, len(UserAgent_list)-1)]
 42 
 43 
 44 def locationStateAdd(userid):
 45     headers = {
 46         "Content-Type": "application/x-www-form-urlencoded",
 47         "Host": "sqg.cydgsx.com",
 48         "Connection": "Keep-Alive",
 49         "Accept-Encoding": "gzip",
 50         "User-Agent": "okhttp/3.10.0",
 51     }
 52     data = {"params": str({"state": StateId, "user_id": userid})}
 53     response = request.get(
 54         url="https://sqg.cydgsx.com/locationStateAdd",
 55         headers=headers,
 56         data=data,
 57         timeout=60,
 58         verify=False)
 59     return response.json()
 60 
 61 
 62 def studentLocationAdd(userid):
 63     headers = {
 64         "Content-Type": "application/x-www-form-urlencoded",
 65         "Host": "sqg.cydgsx.com",
 66         "Connection": "Keep-Alive",
 67         "Accept-Encoding": "gzip",
 68         "User-Agent": r"okhttp/3.10.0",
 69     }
 70     data = {"params": '{"address":"中国广东省广州市海珠区","latitude":"23.09610289210092","longitude":"113.33666163412784","user_id":%s}' % userid}
 71     response = request.post(
 72         url="https://sqg.cydgsx.com/studentLocationAdd",
 73         data=data,
 74         headers=headers,
 75         timeout=60,
 76         verify=False)
 77     print("定位:",response.text)
 78     for key, value in response.json().items():
 79         if value == "成功" and key == "meg":
 80             return True
 81     return False
 82 
 83 
 84 def Index(url="https://sqg.cydgsx.com/m/s/log/Index"):
 85     headers = {
 86         "Host": "sqg.cydgsx.com",
 87         "Connection": "keep-alive",
 88         "Upgrade-Insecure-Requests": "1",
 89         "User-Agent": UserAgent(),
 90         "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
 91         "Referer": url,
 92         "Accept-Encoding": "gzip, deflate",
 93         "Accept-Language": "zh-CN,en-US;q=0.9",
 94         "X-Requested-With": "com.gcykj.boss",
 95     }
 96     temp_cookies = {"chref": url}
 97     temp_cookies.update(cookies)
 98     response = request.get(
 99         url=url,
100         headers=headers,
101         cookies=temp_cookies,
102         timeout=60,
103         verify=False)
104     html = response.text.replace('href="', 'href="https://sqg.cydgsx.com').replace("'get','", "'get','https://sqg.cydgsx.com").replace(r'src="', 'src="https://sqg.cydgsx.com')
105     with open(index_html, "w", encoding='utf-8') as file:
106         file.write(html)
107     print(locationStateAdd(cookies["LoginUser_Id"].split("&")[0]))  # 等待服务器添加定位
108     # studentLocationAdd(cookies["LoginUser_Id"].split("&")[0])  # 添加定位
109     return studentLocationAdd(cookies["LoginUser_Id"].split("&")[0])  # 添加定位
110 
111 
112 def day(string=d.strftime('%Y-%m-%d')):
113 
114     if d.day == getMonthFirstDayAndLastDay()[1].day:
115         month(d.strftime('%Y-%m-%d') + "\n无人值守\n" + "每月小结")
116     elif d.weekday() == 6:
117         week(d.strftime('%Y-%m-%d') + "\n无人值守\n" + "每周周报")
118     headers = {
119         "Host": "sqg.cydgsx.com",
120         "User-Agent": UserAgent(),
121         "Referer": "https://sqg.cydgsx.com/m/s/log/wLog",
122         "Accept-Encoding": "gzip, deflate",
123         "Accept-Language": "zh-CN,en-US;q=0.9",
124         "Accept": "application/json",
125         "Origin": "https://sqg.cydgsx.com",
126         "X-Requested-With": "XMLHttpRequest",
127         "Connection": "keep-alive",
128         "Content-Type": "application/x-www-form-urlencoded"
129     }
130 
131     data = {"InternStateId": StateId,
132             "interContent": quote(string, 'utf-8'),
133             "logImg": "",
134             "newlogImg": "",
135             "posAddress": "",
136             "posLong": "",
137             "posLati": ""}
138     response = request.post(
139         url="https://sqg.cydgsx.com/m/s/Log/SaveWriteLog",
140         data=data,
141         headers=headers,
142         cookies=cookies,
143         timeout=60,
144         verify=False)
145     for key, value in response.json().items():
146         if value == "成功" and key == "meg":
147             print("每日小结: ",response.json())
148             return True
149     return False
150 
151 
152 def week(string=d.strftime('%Y-%m-%d')):
153     if d.weekday() != 6:
154         return False
155     else:
156         headers = {
157             "Host": "sqg.cydgsx.com",
158             "Connection": "keep-alive",
159             "Accept": "application/json",
160             "Origin": "https://sqg.cydgsx.com",
161             "X-Requested-With": "XMLHttpRequest",
162             "User-Agent": UserAgent(),
163             "Content-Type": "application/x-www-form-urlencoded",
164             "Referer": "https://sqg.cydgsx.com/m/s/log/wWeekSmy?date={}".format(d.strftime('%Y-%m-%d')),
165             "Accept-Encoding": "gzip, deflate",
166             "Accept-Language": "zh-CN,en-US;q=0.9",
167         }
168         data = {
169             "summaryInfo": string,
170             "logImg": "",
171             "newlogImg": "",
172             "smyDate": quote(d.strftime('%Y/%m/%d'),
173                              'utf-8').replace("2F05%",
174                                               "2F5%") + "+" + quote("0:00:00", 'utf-8'),
175             "summaryType": "周小结",
176         }
177         response = request.post(
178             url="https://sqg.cydgsx.com/m/s/Log/SaveSmyJson",
179             data=data,
180             headers=headers,
181             cookies=cookies,
182             timeout=60,
183             verify=False)
184 
185         for key, value in response.json().items():
186             if value == "成功" and key == "meg":
187                 print("每周小结: ",response.json())
188                 return True
189     return False
190 
191 
192 def month(string=d.strftime('%Y-%m-%d')):
193     if d.day != getMonthFirstDayAndLastDay()[1].day:
194         return False
195     else:
196         headers = {
197             "Host": "sqg.cydgsx.com",
198             "Connection": "keep-alive",
199             "Accept": "application/json",
200             "Origin": "https://sqg.cydgsx.com",
201             "X-Requested-With": "XMLHttpRequest",
202             "User-Agent": UserAgent(),
203             "Content-Type": "application/x-www-form-urlencoded",
204             "Referer": "https://sqg.cydgsx.com/m/s/log/wMonthSmy?date={}".format(d.strftime('%Y-%m-%d')),
205             "Accept-Encoding": "gzip, deflate",
206             "Accept-Language": "zh-CN,en-US;q=0.9",
207         }
208 
209         data = {
210             "summaryInfo": string,
211             "logImg": "",
212             "newlogImg": "",
213             "smyDate": quote(d.strftime('%Y/%m/%d'),
214                              'utf-8').replace("%2F0", "%2F") + "+" + quote("22:32:00", 'utf-8'),
215             "summaryType": "月小结",
216         }
217         response = request.post(
218             url="https://sqg.cydgsx.com/m/s/Log/SaveSmyJson",
219             data=data,
220             headers=headers,
221             cookies=cookies,
222             timeout=60,
223             verify=False)
224 
225         for key, value in response.json().items():
226             if value == "成功" and key == "meg":
227                 print("每月小结: ",response.json())
228                 return True
229     return False
230 
231 
232 def getMonthFirstDayAndLastDay(year=None, month=None):
233     if year:
234         year = int(year)
235     else:
236         year = datetime.date.today().year
237 
238     if month:
239         month = int(month)
240     else:
241         month = datetime.date.today().month
242 
243     firstDayWeekDay, monthRange = calendar.monthrange(year, month)
244 
245     return [
246         datetime.date(
247             year=year,
248             month=month,
249             day=1),
250         datetime.date(
251             year=year,
252             month=month,
253             day=monthRange)]
254 
255 
256 def main(data=""):
257     def setLog(data):
258         if sys.argv[1] == "day":
259             return day(data + "每日日志")
260         elif sys.argv[1] == "week":
261             return week(data + "每周周报")
262         elif sys.argv[1] == "month":
263             return month(data + "每月小结")
264     if len(sys.argv) > 2:
265         return setLog("".join(sys.argv[2:]))
266     elif len(sys.argv) > 1:
267         return setLog(data)
268     else:
269         return day(data + "每日日志")
270 
271 
272 if __name__ == '__main__':
273     print("##"*20)
274     # Index("https://sqg.cydgsx.com/m/s/Home/Index")
275     if main(d.strftime('%Y-%m-%d') + "\n无人值守\n"):
276         print(d.strftime('%Y-%m-%d %H:%M:%S') + "\t成功写入日志")
277         print(Index("https://sqg.cydgsx.com/m/s/log/Index"))
278     else:
279         print(d.strftime('%Y-%m-%d %H:%M:%S') + "\n写入日志失败")
280     print("==" * 20 + "\n闯越自动写日志系统(更新版)\tBy:卤蛋 \n2019.05.20·05.31\n" + "==" * 20)
281     print("##"*20)

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!