望指正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)
来源:https://www.cnblogs.com/canmeng/p/11000548.html