zoukankan      html  css  js  c++  java
  • 基于python3.7的一个闯越自动签到脚本demo版

    望指正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)
  • 相关阅读:
    介绍下自己的Delphi学习环境
    我所理解的Delphi中的数组类型
    字符串的基本操作
    以太网网络变压器的作用
    S3C2416 2D加速
    DM9000AEP调试的时候注意事项
    设置activity背景图片
    如何從現有的share library開發!?
    struct mntent linux挂载信息读取
    Qt中Qstring,char,int,QByteArray之间到转换
  • 原文地址:https://www.cnblogs.com/wananonline/p/11000548.html
Copyright © 2011-2022 走看看