基于python3.7的一个闯越自动签到脚本--demo版
望指正demo的定位,有时候会抽风无法接受我的定位信息
#! /usr/bin/python3
# -*- coding:UTF- -*-
# time : // :
# file : chuangyue.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 = index_html = __file__.replace("requestforCH.py", "") + "index.html"
index_img = __file__.replace("requestforCH.py", "") + "index.jpg" UserAgent_list = [r"Mozilla/5.0 (Linux; Android 8.1.0; Redmi 6 Build/O11019; wv) " +
r"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('=', )
cookies[name] = value # 为字典cookies添加内容 def UserAgent():
return UserAgent_list[random.randint(, len(UserAgent_list)-)] 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=,
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=,
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"):
headers = {
"Host": "sqg.cydgsx.com",
"Connection": "keep-alive",
"Upgrade-Insecure-Requests": "",
"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 = {"chref": url}
temp_cookies.update(cookies)
response = request.get(
url=url,
headers=headers,
cookies=temp_cookies,
timeout=,
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("&")[])) # 等待服务器添加定位
# studentLocationAdd(cookies["LoginUser_Id"].split("&")[]) # 添加定位
return studentLocationAdd(cookies["LoginUser_Id"].split("&")[]) # 添加定位 def day(string=d.strftime('%Y-%m-%d')): if d.day == getMonthFirstDayAndLastDay()[].day:
month(d.strftime('%Y-%m-%d') + "\n无人值守\n" + "每月小结")
elif d.weekday() == :
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=,
verify=False)
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() != :
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=,
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()[].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=,
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=),
datetime.date(
year=year,
month=month,
day=monthRange)] def main(data=""):
def setLog(data):
if sys.argv[] == "day":
return day(data + "每日日志")
elif sys.argv[] == "week":
return week(data + "每周周报")
elif sys.argv[] == "month":
return month(data + "每月小结")
if len(sys.argv) > :
return setLog("".join(sys.argv[:]))
elif len(sys.argv) > :
return setLog(data)
else:
return day(data + "每日日志") if __name__ == '__main__':
print("##"*)
# 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成功写入日志")
print(Index("https://sqg.cydgsx.com/m/s/log/Index"))
else:
print(d.strftime('%Y-%m-%d %H:%M:%S') + "\n写入日志失败")
print("==" * + "\n闯越自动写日志系统(更新版)\tBy:卤蛋 \n2019.05.20·05.31\n" + "==" * )
print("##"*)
基于python3.7的一个闯越自动签到脚本--demo版的更多相关文章
- 闯越自动签到demo版补充说明
demo代码:https://www.cnblogs.com/canmeng/p/11000548.html 定位出错是由于cookie 我重新登录账号过,cookies的值就变了 当时没注意cook ...
- Python 实现 T00ls 自动签到脚本(邮件+钉钉通知)
T00ls 每日签到是可以获取 TuBi 的,由于常常忘记签到,导致损失了很多 TuBi .于是在 T00ls 论坛搜索了一下,发现有不少大佬都写了自己的签到脚本,签到功能实现.定时任务执行以及签到提 ...
- 对RoboMaster论坛自动签到脚本制作(虽然没什么用)
RoboMaster论坛自动签到,自动浏览刷分 不务正业系列 上完最后一节课,队长跟我们说,RM有个BBS,可以看看,但是下载要金币,这个金币只能做签到等事情才能得到,所以我用python做了一个小程 ...
- python写的自动签到脚本。
等以后有时间补上. 附上代码: #! /usr/bin/env python # coding:utf-8 #-----------------------------------------学号和密 ...
- 从基于idea的第一个javaweb项目到shell脚本项目自动发布(jdk1.8,mysql5.7,maven3.5,tomcat9,subversion,centos7.3)之一
首先说一下为什么写这篇文章,因为从正式参加工作就做javaweb开发,一路走来,碰到了很多的问题,每次问题都想从度娘那里得到准确的答案,但是,每个人遇到的问题不尽相同,问题的解决方案有时候也只是仅供参 ...
- 搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 (1)
搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 原文地址(英文):http://www.networkcomms.net/creating ...
- python3+任务计划实现的人人影视网站自动签到
python3+任务计划实现的人人影视网站自动签到 这是一个自动化程度较高的程序,运行本程序后会从chrome中读取cookies用于登录人人影视签到, 并且会自动添加一个windows 任务计划,这 ...
- Sublime Text 2 (for OS X )配置成可以运行基于python3解释器的 .py文件
Mac自带的python 其version是python 2.7 官网下的Sublime Text 2部署好了以后默认也是 为了使ST2 可以在command+B时可以运行基于python3的.py, ...
- 基于gulp编写的一个简单实用的前端开发环境好了,安装完Gulp后,接下来是你大展身手的时候了,在你自己的电脑上面随便哪个地方建一个目录,打开命令行,然后进入创建好的目录里面,开始撸代码,关于生成的json文件请点击这里https://docs.npmjs.com/files/package.json,打开的速度看你的网速了注意:以下是为了演示 ,我建的一个目录结构,你自己可以根据项目需求自己建目
自从Node.js出现以来,基于其的前端开发的工具框架也越来越多了,从Grunt到Gulp再到现在很火的WebPack,所有的这些新的东西的出现都极大的解放了我们在前端领域的开发,作为一个在前端领域里 ...
随机推荐
- .net 记录
Stack Overflow 2016最新架构探秘 http://www.infoq.com/cn/news/2016/03/Stack-Overflow-architecture-insi#rd N ...
- Storm概念学习系列之storm的特性
不多说,直接上干货! storm的特性 Storm 是一个开源的分布式实时计算系统,可以简单.可靠地处理大量的数据流. Storm支持水平扩展,具有高容错性,保证每个消息都会得到处理,而且处理速度很快 ...
- java CountDownLatch 等待多线程完成
CountDownLatch允许一个或多个线程等待其他线程完成操作. package com.test; import java.util.concurrent.CountDownLatch; pub ...
- cairo-dock天气位置代码
cairo-dock天气位置代码: 城市: 北京CHXX0008哈尔滨CHXX0046长春CHXX0010沈阳CHXX0119大连CHXX0019天津CHXX0133呼和浩特CHXX0249乌鲁木齐C ...
- 配置海康IPC或大华IPC通过路由器公网访问
设备:路由器DLink-DIR-600M,海康IPC:DS-2CD864FWD-E 海康默认端口为8000,HTTP访问为80,RTSP访问端口为554. 配置分成两步,分别为配置IPC相关网络参数和 ...
- C#执行异步操作的几种方式比较和总结(转发:https://www.cnblogs.com/durow/p/4826653.html)
0x00 引言 之前写程序的时候在遇到一些比较花时间的操作例如HTTP请求时,总是会new一个Thread处理.对XxxxxAsync()之类的方法也没去了解过,倒也没遇到什么大问题.最近因为需求要求 ...
- WebUploader实现采集图片的功能
项目最开始用百度团队的文件上传组件做了个物料照片采集的功能,后来做员工头像采集时竟然不知道怎么使用了. 参照官方Demo: http://fex.baidu.com/webuploader/getti ...
- codevs 2620 战壕
时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题目描述 Description Smart和Sarah正在玩一个即时战略游戏. Smart在他的基地附近建立了n个 ...
- 更新KB915597补丁后导致“您的windows副本不是正版”的解决方案
更新KB915597补丁后导致“您的windows副本不是正版”的解决方案 解决方法: 运行cw.exe(https://pan.lanzou.com/i05ya8h),直至提示成功: 重新启动操作系 ...
- UML复习1-2章
第一章 1.请对SDLC的六个阶段排序 1> 可行性分析 2> 设计 3> 测试 4> 维护 5> 需求分析与说明 6> 编码 A. 1 5 2 6 3 4 B. ...