环境:

  1. Windows 10
  2. 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实现闯越顶岗实习签到相关推荐

  1. 顶岗实习周记java方向_前途虽远,扶摇可接 | 商务日语专业顶岗实习动员大会...

    读书破万卷,不如携书行万里路 为确保顶岗实习工作的顺利有序开展,引导学生做好顶岗实习前的各项准备工作,我院于12月10日下午3点在1号楼303教室开展了2021届毕业生顶岗实习动员大会. 此次动员大会 ...

  2. 顶岗实习周记java方向_会计学院顺利召开2021届毕业生顶岗实习动员大会

    会计学院顺利召开2021届 毕业生顶岗实习动员大会 顶岗实习是实践教学的重要组成部分,是提升学生岗位适应能力,培养学生职业素养的重要环节.为了更好的完成顶岗实习工作,帮助毕业生树立正确的实习就业观,更 ...

  3. 计算机应用专业顶岗实习计划,计算机学生顶岗实习计划(网络版)

    <计算机学生顶岗实习计划(网络版).doc>由会员分享,可免费在线阅读全文,更多与<计算机学生顶岗实习计划(网络版)>相关文档资源请在帮帮文库(www.woc88.com)数亿 ...

  4. 计算机专业 中职学校顶岗实习学校总结,中职学校顶岗实习论文(2)

    中职学校顶岗实习论文篇二 <中职学校计算机实习教学方法探讨> 摘要:在中等职业学校计算机教学中,衡量教学成果一个关键的方面是检测学生计算机的实际操作能力,而操作技能的获得,主要是通过制定 ...

  5. 计算机专业顶岗实训,计算机专业学生的顶岗实习

    一.高职计算机专业学生顶岗实习中存在的问题 高职计算机专业的学生在学校学到了理论知识以后,在顶岗实习过程中才能把这些理论知识运用到实践当中,才能进一步提高自己的专业技能.计算机作为一种信息交流传播的工 ...

  6. 毕节职业技术学院计算机网络技术专业,毕节职业技术学院计算机网络技术9.顶岗实习安排...

    4.1.9.顶岗实习安排 顶岗实习分为两个阶段,第一阶段为暑期顶岗实习(与大学生三下乡社会实践活动相结合),高职安排在第二.第四学期暑假进行(共2周).不同阶段的顶岗实习具有不同的侧重点,暑期顶岗实习 ...

  7. 江西计算机好的本科学校,江西本科学校计算机及应用顶岗实习

    自动化立体仓储供料系统:自动规划和调度装配原料,并将原料及时向装配生产线输送,同时能够实时对库存原料进行统计和监控.全线主控制系统:采用基于现场总线-ProfibusDP的控制系统,不仅有极高的实时性 ...

  8. python玩微信小程序游戏_使用python实现微信小程序自动签到功能

    功能描述目标 完成多账号微信小程序每天自动签到 输出 签到成功则向微信群发送签到成功的信息 否则提示用户签到失败,需手动签到 包管理 requests itchat time threading 程序 ...

  9. 使用python实现微信小程序自动签到2.0

    微信小程序自动签到 功能描述 目标 输出 包管理 程序的结构设计 步骤1 步骤2 步骤3 步骤4 代码实现 使用findler抓包工具查看请求类型 再次使用findler抓包,查看请求内容 使用多线程 ...

  10. python京东自动签到_利用python Selenium实现自动登陆京东签到领金币功能

    如何自动登陆京东? 我们先来看一下京东的登陆页面,如下图所示: [插入图片,登陆页面] 登陆框就是右面这一个框框了,但是目前我们遇到一个困呐,默认的登陆方式是扫码登陆,如果我们想要以用户民个.密码的形 ...

最新文章

  1. SELECT-OPTIONS对象
  2. Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 6 ----asp.net MVC+Extjs
  3. word关闭未响应_大众途观全景天窗遮阳卷帘无法关闭
  4. 一个Java递归删除目录的方法
  5. html5游戏引擎-Pharse.js学习笔记(一)
  6. mysql innodb_data_file_path_MySQL修改innodb_data_file_path参数的一些注意事项
  7. ios 输入法扩展_ios 应用扩展—— Keyboard Extension
  8. 动态规划——骨牌平铺问题
  9. UE3 GPU性能和分析
  10. 深入浅出MFC学习笔记
  11. python 多线程 线程池的四种实现方式
  12. 达观数据推出智能审单机器人,全面提升航运物流效率
  13. matlab xticklabel 旋转,在Matlab中,如何实现xticklabel的旋转?转
  14. 原生JS调取PC端摄像头源码记录
  15. android如何正确获取iccid,特别是中间带有字母的iccid
  16. ES pinyin 插件 拼音搜索 原理 match_phase
  17. vim末行模式下的替换操作
  18. 解决Error: Assertion failed (chunk.m_size <= 0xFFFF)和Set OPENCV_ENABLE_NONFREE CMake option问题
  19. 黑马头条推荐系统完整版(包括虚拟机和数据,代码已修复过可完美跑起来)
  20. 【机器学习】07. 决策树模型DecisionTreeClassifier(代码注释,思路推导)

热门文章

  1. 快速迭代内部学习心得
  2. [论文学习] 一种线性时不变时滞系统的稳定性分析方法(CTCR)
  3. 秦岭三面佛已经拆除,觉得惋惜
  4. 请来围观:WPF开发的微信客户端!!!
  5. matlab中sl设置频率为95khz,BOOST电路设计及matlab仿真
  6. java 一元三次方程_一元三次方程盛金公式求解的java实现
  7. python模拟ios点击_弱弱的问下,ios的捷径可以实现模拟点击吗?
  8. android8 锁屏壁纸,小米8怎么设置锁屏壁纸?小米8锁屏壁纸三种设置教程
  9. 248 中心对称数 III
  10. 【Love2d从青铜到王者】第五篇:Love2d之if语句