说明
这是一个用于自动登录京东并更新Cookie到青龙管理系统的Python脚本。脚本支持通过账号密码自动登录,适用于需要定期更新京东Cookie的情况,特别是在使用青龙等自动化工具进行京东相关活动脚本运行时。
代码展示
全代码如下
# -*- coding: utf-8 -*-
'''jdck.ini配置文件
Displaylogin=0 #是否显示登录操作,1显示,0不显示
qlip=http://192.168.1.1:5050 #填青龙的ip
client_id=******* #填青龙对接应用的client_id
client_secret=******* #填青龙对接应用的client_secret登陆号码#密码#备注 #多账户换行
5455434545#78875287278#我是备注1
154545454554#123456789#我是备注2废案:AutoJDCK_DP = http://192.168.0.1:8080 #设置登录代理(不建议设置代理,基本上要验证码)免责声明
本脚本仅供学习参考,请在下载后24小时内删除,请勿用于非法用途。
作者不对因使用该脚本造成的任何损失或法律问题负责。'''
import asyncio # 异步I/O操作库
import random #用于模拟延迟输入
from re import T # 随机数生成库
import cv2 # OpenCV库,用于图像处理
import os #读取配置文件
from pyppeteer import launch # pyppeteer库,用于自动化控制浏览器
import aiohttp #用于请求青龙
from urllib import request # 用于网络请求,这里主要用来下载图片
from PIL import Image #用于图像处理
import platform #判断系统类型
import zipfile #用于解压文件
from datetime import datetime #获取时间async def print_message(message): #初始化异步printprint(message)async def ifconfigfile(): #判断有没有配置文件global configfile #配置文件全局变量configfile = 'jdck.ini' #配置文件名称为if not os.path.exists(configfile): #看看有没有配置文件configdata = [
'Displaylogin=0 #是否显示登录操作,1显示,0不显示\n',
'qlip=http://192.168.1.1:5700\n',
'client_id=*******\n',
'client_secret=*******\n',
'517123248#ya21udb95#我是备注1\n',
'15611167798#123456789#我是备注2\n',
]with open(configfile, 'w', encoding='utf-8') as file: #打开配置文件file.writelines(configdata) #写入configdata的内容到配置文件print('已在当前脚本目录下生成了配置文件,请修改后再运行')await asyncio.sleep(10) # 等待10秒,等待raise SystemExitasync def download_file(url, file_path): #初始化浏览器下载timeout = aiohttp.ClientTimeout(total=60000) # 设置超时时间async with aiohttp.ClientSession(timeout=timeout) as session:async with session.get(url) as response:with open(file_path, 'wb') as file:file_size = int(response.headers.get('Content-Length', 0))downloaded_size = 0chunk_size = 1024while True:chunk = await response.content.read(chunk_size)if not chunk:breakfile.write(chunk)downloaded_size += len(chunk)progress = (downloaded_size / file_size) * 100print(f'已下载{progress:.2f}%...', end='\r')print('下载完成,进行解压安装....')async def init_web_display(): #初始化浏览器显示配置global WebDisplay #设置为全局变量WebDisplay = True #默认不显示登录try:with open(configfile, 'r', encoding='utf-8') as file:for line in file:if 'Displaylogin=1' in line: #如果配置文件有Displaylogin=1这个东西WebDisplay = False #就变更成显示登录操作print('当前模式:显示web登录图形化界面')breakif WebDisplay:print("当前配置不显示web登录图形化界面,若要取消静默登陆,在配置文件中设置参数Displaylogin=1")except FileNotFoundError:print("读取配置文件时出错")async def init_chrome(): #判断chrome是否存在,不存在则下载,仅针对windowsif platform.system() == 'Windows':chrome_dir = os.path.join(os.environ['USERPROFILE'], 'AppData', 'Local', 'pyppeteer', 'pyppeteer', 'local-chromium', '588429', 'chrome-win32')chrome_exe = os.path.join(chrome_dir, 'chrome.exe')chmod_dir = os.path.join(os.environ['USERPROFILE'], 'AppData', 'Local', 'pyppeteer', 'pyppeteer', 'local-chromium', '588429', 'chrome-win32', 'chrome-win32')if os.path.exists(chrome_exe):returnelse:print('貌似第一次使用,未找到chrome,正在下载chrome浏览器....')chromeurl = 'http://npm.taobao.org/mirrors/chromium-browser-snapshots/Win_x64/588429/chrome-win32.zip' #定义下载地址target_file = 'chrome-win.zip' #定义下载文件名await download_file(chromeurl, target_file) #下载with zipfile.ZipFile(target_file, 'r') as zip_ref:zip_ref.extractall(chrome_dir)os.remove(target_file)for item in os.listdir(chmod_dir): #移动所有文件source_item = os.path.join(chmod_dir, item)destination_item = os.path.join(chrome_dir, item)os.rename(source_item, destination_item)print('解压安装完成')await asyncio.sleep(1) # 等待1秒,等待elif platform.system() == 'Linux':chrome_path = os.path.expanduser("~/.local/share/pyppeteer/local-chromium/1181205/chrome-linux/chrome")download_path = os.path.expanduser("~/.local/share/pyppeteer/local-chromium/1181205/")if os.path.isfile(chrome_path):passelse:print('貌似第一次使用,未找到chrome&#x