用python实现闯越顶岗实习签到
环境:
- Windows 10
- Python 3.7
说明:
关于登录问题:
# 账号 改成自己的username = '123456789'# 密码 改成自己的UserPwd = '********'
本地cookie文件
运行后会生成cookie_index.txt与cookie_login.txt文件,里面存放着登录需要的cookie信息。
签到:
复制字符串到https://www.bejson.com/enc/urlencode/解码并修改相应的中文再编码
qiang_data = 'InternStateId=4&interContent=%E6%96%87%E6%9C%AC%E5%86%85%E5%AE%B9&logImg=&posAddress=%E5%9C%B0%E5%9D%80&posLong=%E7%BB%8F%E7%BA%AC%E5%BA%A6&posLati=%E7%BB%8F%E7%BA%AC%E5%BA%A6&locationType=1&ArticleId=0'
代码
# coding=utf-8'''
闯越顶岗实习签到程序
'''import requests
import sys
import json
import win32api
import win32con
import os
import _thread
import datetimecookie_login = {}
cookie_index = {}# 登录
def get_login():global cookie_loginglobal cookie_indexlogin_headers = {'Host': 'hl.cydgsx.com','Connection': 'keep-alive','Accept': 'application/json, text/javascript, */*; q=0.01','X-Requested-With': 'XMLHttpRequest','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36','Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','Origin': 'https://hl.cydgsx.com','Sec-Fetch-Site': 'same-origin','Sec-Fetch-Mode': 'cors','Sec-Fetch-Dest': 'empty','Referer': 'https://hl.cydgsx.com/m/Home/Index','Accept-Encoding': 'gzip, deflate, br','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,ja;q=0.7'}# 账号username = '123456789'# 密码UserPwd = '********'login_data = 'username={}&UserPwd={}&wxInfo=&openid='.format(username, UserPwd)login = requests.post('https://hl.cydgsx.com/m/Home/CheckLoginJson', headers=login_headers, data=login_data)cookie_login = requests.utils.dict_from_cookiejar(login.cookies)index_headers = {'Host': 'hl.cydgsx.com','Connection': 'keep-alive','Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9','Sec-Fetch-Site': 'same-origin','Sec-Fetch-Mode': 'navigate','Sec-Fetch-User': '?1','Sec-Fetch-Dest': 'document','Referer': 'https://hl.cydgsx.com/m/Home/Index','Accept-Encoding': 'gzip, deflate, br','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,ja;q=0.7','Cookie': 'LoginUser_Id={0}; loginUserName={1}'.format(cookie_login['LoginUser_Id'], cookie_login['loginUserName'])}get_index = requests.get('https://hl.cydgsx.com/m/s/Home/Index', headers=index_headers)cookie_index = requests.utils.dict_from_cookiejar(get_index.cookies)# 保存cookiesave_cookie()# 保存cookie
def save_cookie():global cookie_indexglobal cookie_loginfile_path = os.path.dirname(__file__) # 分离文件路径与后缀with open('{}\cookie_index.txt'.format(file_path), "w") as index:json.dump(cookie_index, index)with open("{}\cookie_login.txt".format(file_path), "w") as login:json.dump(cookie_login, login)# 读取cookie
def open_cookie():global cookie_indexglobal cookie_logintry:with open("cookie_index.txt", "r") as index:cookie_index = json.load(index)with open("cookie_login.txt", "r") as login:cookie_login = json.load(login)except:get_login()# 获取当前日期
def get_datetime():# 当前日期now = datetime.datetime.now().date()year, month, day = str(now).split("-") # 切割# 年月日,转换为数字year = int(year)month = int(month)day = int(day)# 判断当前是不是这个星期最后一天weekday = datetime.datetime.now().weekday()if weekday == 6:try:_thread.start_new_thread(zhou_qiandao, (now,))except:print('无法启动周签到线程')# 判断当前是不是这个月最后一天def last_day(any_day):# any_day的天数改为28并加4next_month = any_day.replace(day=28) + datetime.timedelta(days=4)# 计算的日期减去天数等于上个月最后一天return next_month - datetime.timedelta(days=next_month.day)# 获取这个月最后一天last_day = last_day(datetime.date(year, month, day))if now == last_day:yue_qiandao(now)# 当天签到
def qiandao():headers = {'Host': 'hl.cydgsx.com','Connection': 'keep-alive','Content-Length': '292','Accept': '*/*','Origin': 'https://hl.cydgsx.com','X-Requested-With': 'XMLHttpRequest','Sec-Fetch-Dest': 'empty','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36','Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','Sec-Fetch-Site': 'same-origin','Sec-Fetch-Mode': 'cors','Referer': 'https://hl.cydgsx.com/m/s/Log/wLog','Accept-Encoding': 'gzip, deflate','Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7','Cookie': 'ASP.NET_SessionId={0}; jxnApp=0; giveCard_10269={1}; loginUserName={2}; LoginTimeCooikeName=8ee100zxcdb2c3afd71eax4501ec36b1; LoginUser_Id={3}'.format(cookie_index['ASP.NET_SessionId'], cookie_index['giveCard_10269'], cookie_login['loginUserName'], cookie_login['LoginUser_Id'])}# interContent 文本内容# posAddress 中文地址# posLong posLati 经纬度qiang_data = 'InternStateId=4&interContent=%E6%96%87%E6%9C%AC%E5%86%85%E5%AE%B9&logImg=&posAddress=%E5%9C%B0%E5%9D%80&posLong=%E7%BB%8F%E7%BA%AC%E5%BA%A6&posLati=%E7%BB%8F%E7%BA%AC%E5%BA%A6&locationType=1&ArticleId=0'get_qian = requests.post('https://hl.cydgsx.com/m/s/Log/SaveWriteLog', headers=headers, data=qiang_data)if get_qian.text.find('请重新登录') != -1:get_login()qiandao()get_json = json.loads(get_qian.text)try:if get_json['state'] == 1:print('已签到')else:print('重复签到')print(get_json['meg'])except KeyError as e:print(e)print('尝试重新运行')# 周记
def zhou_qiandao(today):headers = {'Host': 'hl.cydgsx.com','Connection': 'keep-alive','Accept': 'application/json, text/javascript, */*; q=0.01','Origin': 'https://hl.cydgsx.com','X-Requested-With': 'XMLHttpRequest','Sec-Fetch-Dest': 'empty','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36','Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','Sec-Fetch-Site': 'same-origin','Sec-Fetch-Mode': 'cors','Referer': 'https://hl.cydgsx.com/m/s/Log/wWeekSmy?date={}'.format(today),'Accept-Encoding': 'gzip, deflate','Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7','Cookie': 'ASP.NET_SessionId={0}; jxnApp=0; giveCard_10269={1}; loginUserName={2}; LoginTimeCooikeName=8ee100zxcdb2c3afd71eax4501ec36b1; LoginUser_Id={3}'.format(cookie_index['ASP.NET_SessionId'], cookie_index['giveCard_10269'], cookie_login['loginUserName'], cookie_login['LoginUser_Id'])}zhou_data = 'logImg=&smyDate={}&summaryType=%E5%91%A8%E5%B0%8F%E7%BB%93&summaryInfo=%E7%B4%AF'.format(today)zhou = requests.post('https://hl.cydgsx.com/m/s/Log/SaveSmyJson', headers=headers, data=zhou_data)zhou_json = json.loads(zhou.text)try:if zhou_json['state'] == 1:print('已填写周记')else:print('重复填写周记:{}'.format(zhou_json['meg']))except KeyError as e:print(e)print('尝试重新运行')# 月记
def yue_qiandao(today):headers = {'Host': 'hl.cydgsx.com','Connection': 'keep-alive','Accept': 'application/json, text/javascript, */*; q=0.01','Origin': 'https://hl.cydgsx.com','X-Requested-With': 'XMLHttpRequest','Sec-Fetch-Dest': 'empty','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36','Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','Sec-Fetch-Site': 'same-origin','Sec-Fetch-Mode': 'cors','Referer': 'https://hl.cydgsx.com/m/s/Log/wMonthSmy?date={}'.format(today),'Accept-Encoding': 'gzip, deflate','Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7','Cookie': 'ASP.NET_SessionId={0}; jxnApp=0; giveCard_10269={1}; loginUserName={2}; LoginTimeCooikeName=8ee100zxcdb2c3afd71eax4501ec36b1; LoginUser_Id={3}'.format(cookie_index['ASP.NET_SessionId'], cookie_index['giveCard_10269'], cookie_login['loginUserName'], cookie_login['LoginUser_Id'])}yue_data = 'logImg=&smyDate={}&summaryType=%E6%9C%88%E5%B0%8F%E7%BB%93&summaryInfo=%E8%BF%98%E4%B8%8D%E9%94%99'.format(today)yue = requests.post('https://hl.cydgsx.com/m/s/Log/SaveSmyJson', headers=headers, data=yue_data)yue_json = json.loads(yue.text)try:if yue_json['state'] == 1:print('已填写月记')else:print('重复填写月记:{}'.format(yue_json['meg']))except KeyError as e:print(e)print('尝试重新运行')# ------------------------------------------------------------# 获取键值
def get_keyvalue(key):try:i = 0while True:# 循环枚举值yield win32api.RegEnumValue(key, i)i += 1except Exception as e:pass# 无论try语句中是否抛出异常,finally中的语句一定会被执行finally:key.close()# 注册表操作
def open_win():file_name = os.path.basename(__file__) # 当前文件名的名称file_path = os.path.splitext(file_name)[0] # 分离文件路径与后缀file_exe = str(os.path.dirname('./'))+'\\'+file_pathpath = os.path.abspath(file_exe) # 获取文件的绝对路径print(path)# 注册表项名KeyName = 'Software\\Microsoft\\Windows\\CurrentVersion\\Run'# 设置注册表键keyHandle = win32api.RegConnectRegistry(None, win32con.HKEY_CURRENT_USER)# 查找注册表是否创建过键值# 打开注册表键key = win32api.RegOpenKeyEx(keyHandle, KeyName, 0, win32con.KEY_ALL_ACCESS)# 获取键值并输出为列表reg_data = list(get_keyvalue(key))# 遍历键值file_pathfor i in range(len(reg_data)):if reg_data[i][0] == 'cydgsx':print('已添加为自启动。。。')return Trueelse:passprint('添加为自启动。。。')# 注册为自启动try:# 打开现有注册表key = win32api.RegOpenKey(keyHandle, KeyName, 0, win32con.KEY_ALL_ACCESS)# 设置指定项的值win32api.RegSetValueEx(key, file_path, 0, win32con.REG_SZ, path)# 关闭系统注册表中的一个项(或键)win32api.RegCloseKey(key)except Exception as e:print('添加失败')print(e)return Falseprint('添加成功')if __name__ == "__main__":open_cookie()try:_thread.start_new_thread(open_win, ())_thread.start_new_thread(get_datetime, ())except Exception as e:print('无法启动线程')print(e)qiandao()os.system('pause')
成品:
用python实现闯越顶岗实习签到相关推荐
- 顶岗实习周记java方向_前途虽远,扶摇可接 | 商务日语专业顶岗实习动员大会...
读书破万卷,不如携书行万里路 为确保顶岗实习工作的顺利有序开展,引导学生做好顶岗实习前的各项准备工作,我院于12月10日下午3点在1号楼303教室开展了2021届毕业生顶岗实习动员大会. 此次动员大会 ...
- 顶岗实习周记java方向_会计学院顺利召开2021届毕业生顶岗实习动员大会
会计学院顺利召开2021届 毕业生顶岗实习动员大会 顶岗实习是实践教学的重要组成部分,是提升学生岗位适应能力,培养学生职业素养的重要环节.为了更好的完成顶岗实习工作,帮助毕业生树立正确的实习就业观,更 ...
- 计算机应用专业顶岗实习计划,计算机学生顶岗实习计划(网络版)
<计算机学生顶岗实习计划(网络版).doc>由会员分享,可免费在线阅读全文,更多与<计算机学生顶岗实习计划(网络版)>相关文档资源请在帮帮文库(www.woc88.com)数亿 ...
- 计算机专业 中职学校顶岗实习学校总结,中职学校顶岗实习论文(2)
中职学校顶岗实习论文篇二 <中职学校计算机实习教学方法探讨> 摘要:在中等职业学校计算机教学中,衡量教学成果一个关键的方面是检测学生计算机的实际操作能力,而操作技能的获得,主要是通过制定 ...
- 计算机专业顶岗实训,计算机专业学生的顶岗实习
一.高职计算机专业学生顶岗实习中存在的问题 高职计算机专业的学生在学校学到了理论知识以后,在顶岗实习过程中才能把这些理论知识运用到实践当中,才能进一步提高自己的专业技能.计算机作为一种信息交流传播的工 ...
- 毕节职业技术学院计算机网络技术专业,毕节职业技术学院计算机网络技术9.顶岗实习安排...
4.1.9.顶岗实习安排 顶岗实习分为两个阶段,第一阶段为暑期顶岗实习(与大学生三下乡社会实践活动相结合),高职安排在第二.第四学期暑假进行(共2周).不同阶段的顶岗实习具有不同的侧重点,暑期顶岗实习 ...
- 江西计算机好的本科学校,江西本科学校计算机及应用顶岗实习
自动化立体仓储供料系统:自动规划和调度装配原料,并将原料及时向装配生产线输送,同时能够实时对库存原料进行统计和监控.全线主控制系统:采用基于现场总线-ProfibusDP的控制系统,不仅有极高的实时性 ...
- python玩微信小程序游戏_使用python实现微信小程序自动签到功能
功能描述目标 完成多账号微信小程序每天自动签到 输出 签到成功则向微信群发送签到成功的信息 否则提示用户签到失败,需手动签到 包管理 requests itchat time threading 程序 ...
- 使用python实现微信小程序自动签到2.0
微信小程序自动签到 功能描述 目标 输出 包管理 程序的结构设计 步骤1 步骤2 步骤3 步骤4 代码实现 使用findler抓包工具查看请求类型 再次使用findler抓包,查看请求内容 使用多线程 ...
- python京东自动签到_利用python Selenium实现自动登陆京东签到领金币功能
如何自动登陆京东? 我们先来看一下京东的登陆页面,如下图所示: [插入图片,登陆页面] 登陆框就是右面这一个框框了,但是目前我们遇到一个困呐,默认的登陆方式是扫码登陆,如果我们想要以用户民个.密码的形 ...
最新文章
- SELECT-OPTIONS对象
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 6 ----asp.net MVC+Extjs
- word关闭未响应_大众途观全景天窗遮阳卷帘无法关闭
- 一个Java递归删除目录的方法
- html5游戏引擎-Pharse.js学习笔记(一)
- mysql innodb_data_file_path_MySQL修改innodb_data_file_path参数的一些注意事项
- ios 输入法扩展_ios 应用扩展—— Keyboard Extension
- 动态规划——骨牌平铺问题
- UE3 GPU性能和分析
- 深入浅出MFC学习笔记
- python 多线程 线程池的四种实现方式
- 达观数据推出智能审单机器人,全面提升航运物流效率
- matlab xticklabel 旋转,在Matlab中,如何实现xticklabel的旋转?转
- 原生JS调取PC端摄像头源码记录
- android如何正确获取iccid,特别是中间带有字母的iccid
- ES pinyin 插件 拼音搜索 原理 match_phase
- vim末行模式下的替换操作
- 解决Error: Assertion failed (chunk.m_size <= 0xFFFF)和Set OPENCV_ENABLE_NONFREE CMake option问题
- 黑马头条推荐系统完整版(包括虚拟机和数据,代码已修复过可完美跑起来)
- 【机器学习】07. 决策树模型DecisionTreeClassifier(代码注释,思路推导)
热门文章
- 快速迭代内部学习心得
- [论文学习] 一种线性时不变时滞系统的稳定性分析方法(CTCR)
- 秦岭三面佛已经拆除,觉得惋惜
- 请来围观:WPF开发的微信客户端!!!
- matlab中sl设置频率为95khz,BOOST电路设计及matlab仿真
- java 一元三次方程_一元三次方程盛金公式求解的java实现
- python模拟ios点击_弱弱的问下,ios的捷径可以实现模拟点击吗?
- android8 锁屏壁纸,小米8怎么设置锁屏壁纸?小米8锁屏壁纸三种设置教程
- 248 中心对称数 III
- 【Love2d从青铜到王者】第五篇:Love2d之if语句