吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7269|回复: 26
收起左侧

[Python 转载] 青龙面板一些公用方法的封装……

 关闭 [复制链接]
Fujj 发表于 2022-4-6 08:56
本帖最后由 Fujj 于 2022-4-6 09:03 编辑


封装了青龙版面的一些方法:

get_token():获取token;
match_ck():比对ck进行更新,如果未启用,进行启用;
get_all_ck():获取青龙面板的所有变量(ck);
update_ck():更新青龙面板的单个变量(ck);
add_ck():添加变量(ck);
start_ck():启用变量(ck);
[Python] 纯文本查看 复制代码
#更新到青龙面板

import requests
import json
import re
import time
import configparser

class Update():

    def __init__(self,ck=None,phone=None):
        #青龙面板地址、账号密码
        conf = configparser.ConfigParser()
        conf.read("./config.ini", encoding='UTF-8')
        self.host = conf["ql"].get('host')
        self.client_id = conf["ql"].get('client_id')
        self.client_secret = conf["ql"].get('client_secret')
        self.ck = ck
        self.token = self.get_token()
        self.phone = phone


    def get_token(self):
        url = self.host + "open/auth/token?client_id={}&client_secret={}".format(self.client_id,self.client_secret)
        response = requests.request("GET", url).json()
        print("获取青龙面板的token:",response)
        return response["data"]["token"]

    # 比对ck进行更新,如果未启用,进行启用
    def match_ck(self):
        pt_pin = str(re.findall(r"pt_pin=(.+?);", self.ck)[0])
        print("手机号码{}的pt_pin:".format(self.phone),pt_pin)
        cklist = self.get_all_ck()
        for i in cklist:
            if pt_pin in str(i["value"]):
                print("匹配成功,匹配到当前变量:",i)
                id = i["_id"]
                remark = i["remarks"]
                print("-------------------")
                print("开始更新{}的ck".format(remark))
                self.update_ck(remark,id)
                if i["status"] == 1:
                    print("{}启用成功".format(remark))
                    self.start_ck(id)
                return
        self.add_ck()
        print("新增{}手机号码的ck".format(self.phone))
        return

    # 获取所有的变量
    def get_all_ck(self):
        t = int(round(time.time() * 1000))
        url = self.host + "open/envs?searchValue=&t="+str(t)
        payload = ""
        headers = {
            'Authorization': 'Bearer '+self.token
        }
        response = requests.request("GET", url, headers=headers, data=payload).json()
        print("获取青龙面板所有的变量进行比对")
        return response["data"]

    # 更新变量
    def update_ck(self,remark=None,id=None):
        t = int(round(time.time() * 1000))
        url = self.host+"open/envs?t="+str(t)
        payload = json.dumps({
            "name": "JD_COOKIE",
            "value": self.ck,
            "remarks": remark,
            "_id": id
        })
        headers = {
            'Content-Type': 'application/json',
            'Authorization': 'Bearer '+self.token
        }
        print("更新变量")
        response = requests.request("PUT", url, headers=headers, data=payload)
        return


    def add_ck(self):
        t = int(round(time.time() * 1000))
        url = self.host+"open/envs?t="+str(t)
        payload = json.dumps([
            {
                "value": self.ck,
                "name": "JD_COOKIE",
                "remarks": self.phone
            }
                ])
        headers = {
            'Authorization': 'Bearer '+self.token,
            'Content-Type': 'application/json'
        }
        print("添加变量")
        response = requests.request("POST", url, headers=headers, data=payload)
        return


    def start_ck(self,id):
        t = int(round(time.time() * 1000))
        url = self.host+"open/envs/enable?t="+str(t)
        print(id)
        list=[]
        list.append(id)
        payload = json.dumps(
            list
        )
        headers = {
            'Authorization': 'Bearer '+self.token,
            'Content-Type': 'application/json'
        }
        print("启用ck:",payload)
        response = requests.request("PUT", url, headers=headers, data=payload)
        return






使用方法:
[Python] 纯文本查看 复制代码
if __name__ == '__main__':

    ck = 'pt_key=33JiC5lOADBAJIqAX8UDhNHkh_qypfyAyQkqWu5ADdZgHkudbNtdlSkBEOIMxO73oT_npf__Hvc;pt_pin=jd_67r828540e7yd;'    

    如果知道手机号码,可以传phone作为标记,不然账号太多会比较乱
    Update(ck=ck).match_ck()


归档.zip (2.14 KB, 下载次数: 66)


免费评分

参与人数 7吾爱币 +6 热心值 +7 收起 理由
文西思密达 + 1 + 1 已经处理,感谢您对吾爱破解论坛的支持!
Loading2048 + 1 我很赞同!
jshworid + 1 + 1 我很赞同!
山河破碎风飘絮i + 1 + 1 谢谢@Thanks!
Kings6688 + 1 + 1 谢谢@Thanks!
快乐的鸡蛋黄 + 1 + 1 谢谢@Thanks!
Q1998 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

kissboss 发表于 2022-4-6 09:38
我青龙就跑了个京东 现在豆子一天才十几二十个
 楼主| Fujj 发表于 2022-4-6 13:19
山河破碎风飘絮i 发表于 2022-4-6 12:58
请问一下这些接口是从哪里得知的呢? 青龙的官方那边有文档提供吗?还是其他什么东西,最近需要用到一些这 ...

接口都是自己抓包的,但是青龙介绍了接口的使用方法:

OpenApi使用指南

1. 在系统设置 -> 应用设置 -> 添加应用,权限目前支持5个模块,可以选择多个模块。选择一个模块之后,可读写此模块的所有接口。
2. 使用生成的 client_id 和 client_secret 请求获取token接口 http://localhost:5700/open/auth/token?client_id=xxxxxx&client_secret=xxxxxxxx
3. 上面接口返回的token有效期为30天,可用于请求青龙的接口 curl 'http://localhost:5700/open/envs?searchValue=&t=1630032278171' -H 'Authorization: Bearer 接口返回的token'
4. openapi的接口与系统正常接口的区别就是青龙里的是/api/envs,openapi是/open/envs,即就是青龙接口中的api换成open
6. 此功能支持青龙2.9+,更新时需要执行一次ql check
头像被屏蔽
大大连连 发表于 2022-4-6 09:06
eskyboy 发表于 2022-4-6 09:22
学习下,很厉害的样子
laycher 发表于 2022-4-6 09:22
通过命令行操作青龙面板?
cn449712926 发表于 2022-4-6 09:35
谢谢分享 可以学习下
向大佬学习 发表于 2022-4-6 09:42
感谢楼主分享,学习学习
AiChiShuCai 发表于 2022-4-6 09:45
感谢分享。
yx159247 发表于 2022-4-6 09:56
谢谢大佬分享, 来学习下
AE86august 发表于 2022-4-6 10:28
最近一天就二三十豆,没玩的欲望了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 19:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表