闯越自动签到demo版补充说明
2019-07-24 09:05:55来源:博客园 阅读 ()
demo代码:https://www.cnblogs.com/canmeng/p/11000548.html
定位出错是由于cookie 我重新登录账号过,cookies的值就变了
当时没注意cookie的值变化,然而定位参数回复仍然回复成功
{"state":1,"meg":"成功","result":{}}
至于获取cookie可以参考https://www.cnblogs.com/fengpingfan/p/4759671.html
保存文件名为cookie.txt
格式化为
key=value;key=value;key=value;
提交写入日志后,cookies添加了一个类似这样子的值
wLog_interContent=2019-06-25%0d%0a%e6%97%a0%e4%ba%ba%e5%80%bc%e5%ae%88%0d%0a%e6%af%8f%e6%97%a5%e6%97%a5%e5%bf%97;wLog_InternStateId=3;wLog_logImg=;wLog_newlogImg=;wLog_posAddress=;wLog_posLong=;wLog_posLati=;
根据上面的情况,改进代码如下
#! /usr/bin/python3 # -*- coding:UTF-8 -*- # time : 2019/5/19 20:53 # file : requestforCH.py # By 卤蛋 from urllib.parse import quote import datetime import requests import calendar import sys import time import random import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) request = requests.session() d = datetime.datetime.now() StateId = 3 index_html = __file__.replace("requestforCH.py", "") + "index.html" UserAgent_list = [r"Mozilla/5.0 (Linux; Android 8.1.0; Redmi 6 Build/O11019; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.99 Mobile Safari/537.36", 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", 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", 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"] with open(__file__.replace("requestforCH.py", "") + r'cookie.txt', 'r') as file: cookie = file.read() cookies = {} # 初始化cookies字典变量 for line in cookie.split(';'): # 按照字符:进行划分读取 # 其设置为1就会把字符串拆分成2份 name, value = line.strip().split('=', 1) cookies[name] = value # 为字典cookies添加内容 random_num = random.randint(0, len(UserAgent_list)-1) def UserAgent(): #return UserAgent_list[random_num] return UserAgent_list[0] def locationStateAdd(userid): headers = { "Content-Type": "application/x-www-form-urlencoded", "Host": "sqg.cydgsx.com", "Connection": "Keep-Alive", "Accept-Encoding": "gzip", "User-Agent": "okhttp/3.10.0", } data = {"params": str({"state": StateId, "user_id": userid})} response = request.get( url="https://sqg.cydgsx.com/locationStateAdd", headers=headers, data=data, timeout=60, verify=False) return response.json() def studentLocationAdd(userid): headers = { "Content-Type": "application/x-www-form-urlencoded", "Host": "sqg.cydgsx.com", "Connection": "Keep-Alive", "Accept-Encoding": "gzip", "User-Agent": r"okhttp/3.10.0", } data = {"params": '{"address":"中国广东省广州市海珠区","latitude":"23.09610289210092","longitude":"113.33666163412784","user_id":%s}' % userid} response = request.post( url="https://sqg.cydgsx.com/studentLocationAdd", data=data, headers=headers, timeout=60, verify=False) print("定位:",response.text) for key, value in response.json().items(): if value == "成功" and key == "meg": return True return False def Index(url="https://sqg.cydgsx.com/m/s/log/Index",cookie_dict={}): headers = { "Host": "sqg.cydgsx.com", "Connection": "keep-alive", "Upgrade-Insecure-Requests": "1", "User-Agent": UserAgent(), "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", "Referer": url, "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,en-US;q=0.9", "X-Requested-With": "com.gcykj.boss", } temp_cookies = cookies.copy() temp_cookies.update(cookie_dict) response = request.get( url=url, headers=headers, cookies=temp_cookies, timeout=60, verify=False) 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') with open(index_html, "w", encoding='utf-8') as file: file.write(html) print(locationStateAdd(cookies["LoginUser_Id"].split("&")[0])) # 等待服务器添加定位 return studentLocationAdd(cookies["LoginUser_Id"].split("&")[0]) # 添加定位 def day(string=d.strftime('%Y-%m-%d')): if d.day == getMonthFirstDayAndLastDay()[1].day: month(d.strftime('%Y-%m-%d') + "\n无人值守\n" + "每月小结") elif d.weekday() == 6: week(d.strftime('%Y-%m-%d') + "\n无人值守\n" + "每周周报") headers = { "Host": "sqg.cydgsx.com", "User-Agent": UserAgent(), "Referer": "https://sqg.cydgsx.com/m/s/log/wLog", "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,en-US;q=0.9", "Accept": "application/json", "Origin": "https://sqg.cydgsx.com", "X-Requested-With": "XMLHttpRequest", "Connection": "keep-alive", "Content-Type": "application/x-www-form-urlencoded" } data = {"InternStateId": StateId, "interContent": quote(string, 'utf-8'), "logImg": "", "newlogImg": "", "posAddress": "", "posLong": "", "posLati": ""} response = request.post( url="https://sqg.cydgsx.com/m/s/Log/SaveWriteLog", data=data, headers=headers, cookies=cookies, timeout=60, verify=False) print("cookies: ",response.cookies.items()) for key, value in response.json().items(): if value == "成功" and key == "meg": print("每日小结: ",response.json()) return True return False def week(string=d.strftime('%Y-%m-%d')): if d.weekday() != 6: return False else: headers = { "Host": "sqg.cydgsx.com", "Connection": "keep-alive", "Accept": "application/json", "Origin": "https://sqg.cydgsx.com", "X-Requested-With": "XMLHttpRequest", "User-Agent": UserAgent(), "Content-Type": "application/x-www-form-urlencoded", "Referer": "https://sqg.cydgsx.com/m/s/log/wWeekSmy?date={}".format(d.strftime('%Y-%m-%d')), "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,en-US;q=0.9", } data = { "summaryInfo": string, "logImg": "", "newlogImg": "", "smyDate": quote(d.strftime('%Y/%m/%d'), 'utf-8').replace("2F05%", "2F5%") + "+" + quote("0:00:00", 'utf-8'), "summaryType": "周小结", } response = request.post( url="https://sqg.cydgsx.com/m/s/Log/SaveSmyJson", data=data, headers=headers, cookies=cookies, timeout=60, verify=False) for key, value in response.json().items(): if value == "成功" and key == "meg": print("每周小结: ",response.json()) return True return False def month(string=d.strftime('%Y-%m-%d')): if d.day != getMonthFirstDayAndLastDay()[1].day: return False else: headers = { "Host": "sqg.cydgsx.com", "Connection": "keep-alive", "Accept": "application/json", "Origin": "https://sqg.cydgsx.com", "X-Requested-With": "XMLHttpRequest", "User-Agent": UserAgent(), "Content-Type": "application/x-www-form-urlencoded", "Referer": "https://sqg.cydgsx.com/m/s/log/wMonthSmy?date={}".format(d.strftime('%Y-%m-%d')), "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,en-US;q=0.9", } data = { "summaryInfo": string, "logImg": "", "newlogImg": "", "smyDate": quote(d.strftime('%Y/%m/%d'), 'utf-8').replace("%2F0", "%2F") + "+" + quote("22:32:00", 'utf-8'), "summaryType": "月小结", } response = request.post( url="https://sqg.cydgsx.com/m/s/Log/SaveSmyJson", data=data, headers=headers, cookies=cookies, timeout=60, verify=False) for key, value in response.json().items(): if value == "成功" and key == "meg": print("每月小结: ",response.json()) return True return False def getMonthFirstDayAndLastDay(year=None, month=None): if year: year = int(year) else: year = datetime.date.today().year if month: month = int(month) else: month = datetime.date.today().month firstDayWeekDay, monthRange = calendar.monthrange(year, month) return [ datetime.date( year=year, month=month, day=1), datetime.date( year=year, month=month, day=monthRange)] def main(data=""): def setLog(data): if sys.argv[1] == "day": return day(data + "每日日志") elif sys.argv[1] == "week": return week(data + "每周周报") elif sys.argv[1] == "month": return month(data + "每月小结") if len(sys.argv) > 2: return setLog("".join(sys.argv[2:])) elif len(sys.argv) > 1: return setLog(data) else: return day(data + "每日日志") if __name__ == '__main__': print("##"*20) # Index("https://sqg.cydgsx.com/m/s/Home/Index") if main(d.strftime('%Y-%m-%d') + "\n无人值守\n"): print(d.strftime('%Y-%m-%d %H:%M:%S') + "\t成功写入日志") temp_dict = {"wLog_interContent":quote(d.strftime('%Y-%m-%d') + "\n无人值守\n每日日志", 'utf-8')} temp_dict["wLog_InternStateId"] = str(StateId) temp_dict["wLog_logImg"] = "" temp_dict["wLog_newlogImg"] = "" temp_dict["wLog_posAddress"] = "" temp_dict["wLog_posLong"] = "" temp_dict["wLog_posLati"] = "" print(Index("https://sqg.cydgsx.com/m/s/log/Index",temp_dict)) else: print(d.strftime('%Y-%m-%d %H:%M:%S') + "\n写入日志失败") print("==" * 20 + "\n闯越自动写日志系统(更新版)\tBy:卤蛋 \n2019.05.20·06.25\n" + "==" * 20) print("##"*20)
原文链接:https://www.cnblogs.com/canmeng/p/11082806.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 利用python自动生成verilog模块例化模板 2019-08-13
- 一篇文章教你使用Python自动赚取支付宝积分,网友:发家致富 2019-07-24
- python自动化测试之DDT数据驱动 2019-07-24
- python+selenium实现自动化百度搜索关键词 2019-07-24
- RobotFramework + HTTP接口自动化实现 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash