获取接龙管家token

  • 前言
  • 条件
  • 代码
  • 碎碎念

前言

之前写了接龙管家的python打卡,但是它的token有效期只有三四天,所以需要经常更换

最后采取的方法是:

  1. Selenium 模拟登录网页版接龙管家
  2. 获取登录小程序码用邮件发送到手机
  3. 扫码登录
  4. 将token存储在本地
  5. 读取token运行打卡脚本

条件

需要的条件是有云服务器(或者本地不关机运行也行)、然后安装配置python、requests、selenium、chrome、chromedriver等

代码

最后附上代码:

from selenium import webdriver#核心
import requests#核心
import time#用来显示打卡日期
import yagmail#用来发送登录码、打卡信息,不用也可以
import os#用来在脚本里运行另一个脚本
import json#打卡脚本里用的,这里好像没用print(time.strftime("========= %Y年%m月%d日 =========== refresh",time.gmtime()))option = webdriver.ChromeOptions()
option.add_argument('--headless')
option.add_argument('no-sandbox')
option.add_argument('disable-dev-shm-usage')
driver = webdriver.Chrome(chrome_options=option)driver.get('https://jielong.co/')
print(driver.title)#设置位置之后的所有元素定位操作都有最大等待时间十秒,在10秒内会定期进行元素定位,超过设置时间之后将会报错
driver.implicitly_wait(10)#__RequestVerificationToken
RequestVerificationToken = driver.find_element_by_name('__RequestVerificationToken').get_attribute('value')
print('RequestVerificationToken: ',RequestVerificationToken)#点击
#//*[@id="section1"]/div/div[2]/a
#/html/body/div/div[1]/div/div[2]/a
driver.find_element_by_xpath('//a[@class="code-btn code-login"]').click()
time.sleep(1)#url https://jielong.co/Portal/GetWXQRCode?key=gnxqlx0fr542tpfg31iudaxu&returnUrl=
#//*[@id="QRContent"]/img
url = driver.find_element_by_xpath('//*[@id="QRContent"]/img').get_attribute('src')
print('url: ',url)
#key
key = url[ url.find( '=' )+1 : url.find( '&' ) ]
print('key: ',key)#获取登录小程序码
session = requests.session()
#用requests.session()创建session对象,相当于创建了一个空的会话框,准备保持cookies。
headers = {'Host': 'jielong.co','Connection': 'keep-alive','sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="102", "Google Chrome";v="102"','sec-ch-ua-mobile': '?0','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36','sec-ch-ua-platform': "Windows",'Accept': 'image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8','Sec-Fetch-Site': 'same-origin','Sec-Fetch-Mode': 'no-cors','Sec-Fetch-Dest': 'image','Referer': 'https://jielong.co/','Accept-Encoding': 'gzip, deflate, br','Accept-Language': 'zh-CN,zh;q=0.9','Cookie': '__RequestVerificationToken=' + RequestVerificationToken
}img = session.get(url,headers=headers).content#保存图片到本地
with open('login.jpg', 'wb') as file:file.write(img)#发送图片
yag=yagmail.SMTP(user='...@qq.com',password='...',host='smtp.qq.com',encoding='GBK')
yag.send(to='...@qq.com',subject='快来扫登录码',contents=[yagmail.inline("./login.jpg")])
print('邮件发送成功')
yag.close()#等待扫码#读取token
with open("/home/jielongguanjia/token.txt", "r") as f:old_token = f.read()print('old_token: ', old_token)
token = old_token
for i in range(100):print('等待扫码 ',i)# print('driver.get_cookies(): ', driver.get_cookies())for item in driver.get_cookies():if item['name'] == 'token':token = item['value']print(token)breakif token != old_token: #当token未过期的时候,兑换的token没有变,但是这里的token有Bearer%20,所以不等breaktime.sleep(6)#扫码失败
if token == old_token:print('获取token失败!')yag=yagmail.SMTP(user='...@qq.com',password='...',host='smtp.qq.com',encoding='GBK')yag.send(to='...@qq.com',subject='获取token失败',contents='获取token失败')print('获取token失败-邮件发送成功')yag.close()driver.quit()os._exit(0)#获取token
token = token.replace('Bearer%20','')
print('token: ', token)
#设置token
with open("/home/jielongguanjia/token.txt","w") as f:f.write(token)  # 自带文件关闭功能,不需要再写f.close()
print('重写token成功!')
time.sleep(1)driver.quit()#重新运行打卡脚本--打卡脚本里也可以在判断需要登录时,自动运行获取token的脚本
# res = os.popen("python3 /home/jielongguanjia/jielong2.py")    #运行命令
# print('运行打卡脚本!')
# print(res.read())
# res.close()#print('----------------------------------------------------------------------')

碎碎念

刚开始就是手动抓包复制粘贴token,后来觉得太麻烦了,然后尝试了几种方法:
1.搭建一个flask网页,将复制的token直接发送到云服务器,就不需要打开云服务器了;
2.抓包还是太麻烦,然后上网页版看了看,有token可用,然后就复制粘贴网页版的token;
3.打开网页还是太麻烦,既然网页上有,直接python爬取试试,然后用Selenium 模拟登录,获取登录小程序码存储到本地,然后手机扫码,最后成功获取到token
4.扫码还是太麻烦,如果能token换token就好了,然而并不可以,我尝试了抓授权操作的包,模拟授权,但是在token未过期时,授权状态是正常的,token过期后还是不行

最后采用的就是文章里的方法,如果有人知道怎么跳过扫码这一步,请告诉我,不胜感激!

接龙管家-Python自动打卡(续)获取接龙管家token相关推荐

  1. 接龙管家-Python自动打卡

    接龙管家-Python自动打卡 首先要用 fillder 抓包小程序: 根据抓包的内容,编写脚本: 在云服务器上设置定时脚本: Autojs版脚本: 云服务器-获取接龙管家token 首先要用 fil ...

  2. python自动打卡

    简介 1.推荐使用selenium库+FireFox_linux浏览器+geckodriver驱动+crontab定时, 2.因为某图系统的底层是使用的data存储,cookie存于服务器与服务器之间 ...

  3. 如何使用python自动登录路由器且获取页面内容

    python代码非常之简单,但是功能相当强大,这个方法是我在试验登录路由器的时候发现的 import urllib print urllib.urlopen("http://admin:ad ...

  4. python 打卡记录代码_python实现自动打卡的示例代码

    自己也百度了一下,然后写的,分为了三个部分,见三段代码 代码:主程序代码 import timefrom selenium import webdriverfrom private_info impo ...

  5. 安卓手机+python基于abd命令的自动打卡

    公司现在采用钉钉打卡机制来考勤,由于下班后会忘记打卡,查询多方资料,思考完以后,根据python写下当前脚本. 一顿神操作之后,发现咦,安卓手机不需要root只需要开启usb调试,配置adb命令以后就 ...

  6. Python实现钉钉/企业微信自动打卡

    每天急匆匆赶地铁上班的时候总会一不小心就会忘记打卡,尤其是软件打卡,那有没有什么办法可以解决忘打卡的问题呢?今天给大家推荐一下一款神器,利用Python实现定时自动打卡. 1 前期工具准备 不用说的P ...

  7. python之网页自动打卡

    想要用python实现自动打卡你需要依靠以下两个第三方库 1.selenium 2.apscheduler 说明一下,我这里默认你已经安装好了python 那么首先你要安装selenium,在cmd. ...

  8. Python进行网页自动打卡系统

    Python进行网页自动打卡系统 安装Python 下载Chromedriver 安装selenium 设置定时自动运行 Python程序 安装Python 可以直接Python官网下载,需要进行路径 ...

  9. python实现小米手机 dingding 自动打卡

    我所使用的为python 3.9.2, 这个可以自己去下载 首先要对手机进行设置 打开小米手机的设置 点击我的设备 点击全部参数 点击多次点击MIUI版本即可将手机调整为开发者模式 返回设置页面,点击 ...

最新文章

  1. 【优化3】非线性优化
  2. python sqlalchemy中文手册-基于Python的SQLAlchemy的操作
  3. 1.10 字符串的替换(replace()、replaceFirst()和replaceAll())
  4. Normal Data Structure Tricks
  5. redux-saga基本用法
  6. 微软SQL Server 2012新特性Silverlight报表客户端 - Power View
  7. AD中按Y使器件竖直方向上镜像翻转
  8. 2月20日 阻尼牛顿法,拟牛顿法(Quasi-Newton Methods)及各种具体实现方法,共轭梯度法(Conjugate Gradient)
  9. 王者荣耀交流协会Beta发布文案美工展示博客
  10. 学生选课管理系统(Java)
  11. nmake、makefile、cmake学习笔记
  12. 【渝粤教育】21秋期末考试建筑工程计量与计价10517k1
  13. Qt 设置背景图片
  14. word文档合并的几种方式
  15. 服务器所有文件后缀名变了,怎么样批量修改文件扩展名(后缀)
  16. mysql sql 备份表_SQL语句之备份表
  17. 回顾第7周多行星星图
  18. 详解BiLSTM及代码实现
  19. Photoshop自动色阶调整原理
  20. Hadoop安装教程_伪分布式配置-Ubuntu-CentOS6(究极详细、厦门大学数据库实验室)

热门文章

  1. 基于A*和势场寻路的快速小队伍动态势场避障寻路
  2. Android开发——本地存储、用户权限获取
  3. 【医疗健康项目】传智健康项目(六)
  4. 显卡由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备。 (代码 19)
  5. 信号之sigsuspend函数理解
  6. python画出一个梅花_如何用python画一朵花?
  7. Java向上取整,向下取整
  8. 练手的70个超火python小项目,小编建议收藏哦,送你们玩
  9. 这些年,我用过的良心网站,分享给大家
  10. 看Chat GPT解答《情报学基础教程》课后思考和习题