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

1 #! /usr/bin/python32 # -*- coding:UTF-8 -*-

3 # time : 2019/5/20 20:53

4 # file : chuangyue.py5 # By 卤蛋6 fromurllib.parse import quote7 import datetime8 import requests9 import calendar10 import sys11 import time12 import random13 import urllib314 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') asfile: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 returnresponse.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 inresponse.json().items():79 if value == "成功" and key == "meg":80 returnTrue81 returnFalse82

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') asfile: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 inresponse.json().items():146 if value == "成功" and key == "meg":147 print("每日小结:",response.json())148 returnTrue149 returnFalse150

151

152 def week(string=d.strftime('%Y-%m-%d')):153 if d.weekday() != 6:154 returnFalse155 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 inresponse.json().items():186 if value == "成功" and key == "meg":187 print("每周小结:",response.json())188 returnTrue189 returnFalse190

191

192 def month(string=d.strftime('%Y-%m-%d')):193 if d.day != getMonthFirstDayAndLastDay()[1].day:194 returnFalse195 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 inresponse.json().items():226 if value == "成功" and key == "meg":227 print("每月小结:",response.json())228 returnTrue229 returnFalse230

231

232 def getMonthFirstDayAndLastDay(year=None, month=None):233 ifyear:234 year = int(year)235 else:236 year =datetime.date.today().year237

238 ifmonth:239 month = int(month)240 else:241 month =datetime.date.today().month242

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 returnsetLog(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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值