中青急速版更新(青龙脚本)

news2024/11/27 22:35:02

原脚本失效,请用新脚本,每天50毛左右见

实际运行情况见下图

中青入口:中青急速版软件入口

变量 export zqurl='xxxxxxx'
抓这个https://user.youth.cn/v1/user/userinfo.json?xxxxxx

脚本(文件另存为zqjsf.py)

import asyncio
import aiohttp
import random
import hashlib
import logging
import datetime
import json
import os
import time
from urllib.parse import parse_qs
from datetime import datetime

""""
export zqurl='xxxxxxx'
抓这个https://user.youth.cn/v1/user/userinfo.json?xxxxxx
        
"""

class zq:
    def __init__(self):
        self.sessions = aiohttp.ClientSession()
        self.headers = {
            'Usear-Agent':'Mozilla/5.0 (Linux; Android 13; M2012K11AC Build/TKQ1.220829.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/104.0.5112.97 Mobile Safari/537.36 hap/1.10/xiaomi com.miui.hybrid/1.10.0.0 com.youth.kandianquickapp/2.7.6 ({"packageName":"com.miui.home","type":"shortcut","extra":{"original":{"packageName":"com.miui.quickappCenter","type":"url","extra":{"scene":""}},"scene":"api"}})',
            'Host':'user.youth.cn',
            'Accept-Encoding':'gzip',
            'Accept-Language':'zh-CN,zh;q=0.9,en;q=0.8',
            'Connection':'keep-alive',
        }
        logging.basicConfig(level=logging.INFO, format='%(message)s')
        self.logger = logging.getLogger(__name__)
        # self.num = 1
        self.conti = True
    
    async def close(self):
        await self.sessions.close()

    async def create_sign(self,string1):
        new_md5 = hashlib.md5()
        new_md5.update(string1.encode('utf-8'))
        secret = new_md5.hexdigest().lower()
        return secret
    
    async def request(self, url, method='get', data=None):
        try:
            async with getattr(self.sessions, method)(url,headers = self.headers, data=data) as response:
                if response.status == 200:
                    return await response.json()
                else:
                    print(f"请求失败状态码:{response.status}")
                    return await response.json()                
        except Exception as e:
            self.logger.error(e)
            return None
    
    async def task_complete_with_semaphore(self, param, banner_id,title, semaphore):
        async with semaphore:  # 用Semaphore来控制并发数
            await self.task_complete(param, banner_id,title)
        
    async def userinfo(self, pa):
        today = datetime.now()
        day = today.strftime("%-m.%-d")
        url = f"https://user.youth.cn/v1/user/userinfo.json?{pa}"
        res = await self.request(url)
        if res['success'] == True:
            self.logger.info(f"用户:{res['items']['nickname']} 豆子:{res['items']['score']} 钱包:{res['items']['money']}")
            if res['items']['is_sign'] == False:
                self.logger.info(f"用户:{res['items']['nickname']} 尚未签到")
                await self.sign(pa)
            else:
                self.logger.info("今天已签到")
                
            
    async def sign(self, pa):
        timestamp = int(time.time() * 1000)
        param = pa+f'v={timestamp}&f=1'
        key1 = param.replace('&','') +'UHLHlqcHLHLH9dPhlhhLHLHGF2DgAbsmBCCGUapF1YChc'
        sign = await self.create_sign(key1)
        # self.logger.info(sign)
        url = f'https://user.youth.cn/FastApi/Task/sign.json?{param}&sign={sign}'
        res = await self.request(url)
        if res['success'] == True:
            self.logger.info("签到成功")
        else:
            self.logger.info(f"{res['message']}")
    
    async def task_center(self,pa):
        timestamp = int(time.time() * 1000)
        param = pa+f'v={timestamp}&f=1&from=tab'
        key = param.replace('&','')+'UHLHlqcHLHLH9dPhlhhLHLHGF2DgAbsmBCCGUapF1YChc'
        sign = await self.create_sign(key)
        url = f'https://user.youth.cn/FastApi/NewTaskSimple/getTaskList.json?{param}&sign={sign}'
        res = await self.request(url)
        if res['success'] == True:
            for item in res['items']['daily']:
                if self.conti is True:
                    if item['status'] == 0 and 'banner_id' in item:
                        await self.task_complete(param, item['banner_id'], item['title'])
                    else:
                        self.logger.info(f"任务:{item['title']}完成了或没写")
                else:
                    self.logger.info("检测到青豆不再增加,停止任务")
        else:
            self.logger.info(res)

    async def article_list(self,pa):
        url = f'https://user.youth.cn/FastApi/article/lists.json?op=1&{pa}'
        res = await self.request(url)
        if res['success'] == True:
            for item in res['items']:
                self.logger.info(f"title:{item['title']}")
                await asyncio.sleep(random.randint(30,35))
                await self.article_complete(item['signature'])
                
    
    async def article_complete(self,signature):
        '''
        '''
        self.headers['Content-Type'] = 'application/x-www-form-urlencoded'
        self.headers['Host'] = 'user.youth.cn'
        self.headers['Accept-Language'] = 'zh-CN,zh;q=0.9,en;q=0.8'
        url = 'https://user.youth.cn/FastApi/article/complete.json'
        key = f'channel=c6004os_version=33signature={signature}'+'jdvylqcGGHHJZrfw0o2DgAbsmBCCGUapF1YChc'
        sign = await self.create_sign(key)
        data = f'signature={signature}&os_version=33&channel=c6004&sign={sign}'
        res = await self.request(url, 'post', data)
        if res['success'] == True:
            self.logger.info(f"获得{res['items']['read_score']}") 
        else:
            self.logger.info(res)
        
    async def task_complete(self,param, task_id,title):
        self.logger.info(f"正在执行{title}")
        self.headers['Host'] = 'user.youth.cn'
        self.headers['Accept-Language'] = 'zh-CN,zh;q=0.9,en;q=0.8'
        self.headers['Content-Type'] = 'application/x-www-form-urlencoded'
        self.headers['Connection'] = 'keep-alive'
        self.headers['Accept-Encoding'] = 'gzip'
        parsed_params = parse_qs(param)
        uid = parsed_params.get('uid', [None])[0]
        token_id = parsed_params.get('token_id', [None])[0]
        openudid = parsed_params.get('openudid', [None])[0]
        key = f'app_version=2.7.6channel=c6004is_wxaccount=1openudid={openudid}task_id={task_id}token_id={token_id}uid={uid}UHLHlqcHLHLH9dPhlhhLHLHGF2DgAbsmBCCGUapF1YChc'
        sign = await self.create_sign(key)
        # print(sign)
        data = f'app_version=2.7.6&channel=c6004&sign={sign}&task_id={task_id}&openudid={openudid}&uid={uid}&token_id={token_id}&is_wxaccount=1'
        urls = 'https://user.youth.cn/v1/Nameless/adlickstart.json'
        res1 = await self.request(urls, 'post', data)
        if res1['success'] == True:
            await self.action(data, res1['items']['read_num'])
        else:
            self.logger.info(res1)

    async def action(self, data,num):
        for i in range(0,(6-num)):
            url = 'https://user.youth.cn/v1/Nameless/bannerstatus.json'
            res = await self.request(url, 'post', data)
            if res['success'] == True:
                self.logger.info(f"阅读id:{res['items']['banner_id']}第{i+1}次")
                if i+1!= 6-num:
                    await asyncio.sleep(random.randint(12,15))
        end_url = 'https://user.youth.cn/v1/Nameless/adlickend.json'
        res3 = await self.request(end_url, 'post', data)
        if res3['success'] == True:
            if res3['items']['score'] == 0:
                self.conti = False
                self.logger.info(f"任务id:{res3['items']['banner_id']} 获得:{res3['items']['score']}豆")
            # self.logger.info(res3)
        else:
            self.logger.info(res3)

    async def kkz(self, param):
        """
        """
        params = parse_qs(param)
        uid = params.get('uid', [None])[0]
        token_id = params.get('token_id', [None])[0]
        openudid = params.get('openudid', [None])[0]
        key = f"app_version=2.7.6channel=c6004is_wxaccount=1openudid={openudid}token_id={token_id}uid={uid}UHLHlqcHLHLH9dPhlhhLHLHGF2DgAbsmBCCGUapF1YChc"
        sign = await self.create_sign(key)
        data = f'app_version=2.7.6&channel=c6004&openudid={openudid}&uid={uid}&token_id={token_id}&is_wxaccount=1&sign={sign}'
        url = f"https://user.youth.cn/v1/Nameless/getTaskBrowse.json?{data}"
        res = await self.request(url)
        if res['success'] == True:
            # tasks = []
            # semaphore = asyncio.Semaphore(self.num)
            for item in res['items']['list']:
                if self.conti is True:
                    if item['status'] != 2:
                        await self.task_complete(param, item['banner_id'], item['title'])
                        # tasks.append(self.task_complete_with_semaphore(param, item['banner_id'], item['title'], semaphore))
                    else:
                        self.logger.info(f"已完成{item['banner_id']}:{item['title']} --end")
                else:
                    self.logger.info("检测到金币不再增加,停止")
                    break
            # await asyncio.gather(*tasks)
        else:
            self.logger.info(res)

    async def withdraw(self):
        """
       此处的data修改为你的提现请求body

        """
        url = 'https://user.youth.cn/v1/Withdraw/wechat.json'
        data = ''
        res = await self.request(url, 'post', data)
        if res['success'] == True:
            self.logger.info(f"提现{res['message']}!")
        else:
            self.logger.info(res['message'])


    async def share(self, param,article):
        """
        """
        now = datetime.now()
        hour = now.hour
        if hour  == 12:
            self.headers['Content-Type'] = 'application/x-www-form-urlencoded'
            self.headers['Host'] = 'user.youth.cn'
            self.headers['Accept-Language'] = 'zh-CN,zh;q=0.9,en;q=0.8'
            params = parse_qs(param)
            uid = params.get('uid', [None])[0]
            token_id = params.get('token_id', [None])[0]
            openudid = params.get('openudid', [None])[0]
            url = "https://user.youth.cn/FastApi/article/shareEnd.json"
            data = f'app_version=2.7.6&stype=WEIXIN&custom=native&channel=c6004&openudid={openudid}&article_id={article}&uid={uid}&token_id={token_id}&device_platform=android&active_channel=c6004&is_wxaccount=1'
            # print(data)
            res = await self.request(url, 'post', data)
            if res['success'] == True:
                self.logger.info(f"{res['message']}")
                await self.withdraw()
            else:
                self.logger.info(res)

    async def reward(self,param,action):
        self.headers['Content-Type'] = 'application/x-www-form-urlencoded'
        self.headers['Host'] = 'user.youth.cn'
        self.headers['Accept-Language'] = 'zh-CN,zh;q=0.9,en;q=0.8'
        parsed_params = parse_qs(param)
        uid = parsed_params.get('uid', [None])[0]
        token_id = parsed_params.get('token_id', [None])[0]
        openudid = parsed_params.get('openudid', [None])[0]
        url = 'https://user.youth.cn/FastApi/CommonReward/toGetReward.json'
        key = f'action={action}active_channel=c6004app_version=2.7.6channel=c6004f=1from=2is_wxaccount=1openudid={openudid}token_id={token_id}uid={uid}UHLHlqcHLHLH9dPhlhhLHLHGF2DgAbsmBCCGUapF1YChc'
        sign = await self.create_sign(key)
        # print(sign)
        data = f'uid={uid}&token_id={token_id}&app_version=2.7.6&openudid={openudid}&channel=c6004&is_wxaccount=1&active_channel=c6004&f=1&action={action}&from=2&sign={sign}'
        res = await self.request(url, 'post', data)
        if res['success'] == True:
            self.logger.info(res)
        else:
            self.logger.info(res)
        

        
    async def run(self):
        url = os.getenv('zqurl')
        user_list = url.split('@')
        for user in user_list:
            await self.userinfo(user)
            await self.share(user,'49309699')  # 自己改分享id
            await self.task_center(user)
            await self.kkz(user)
            for box in ['time_reward','box_one','box_three','box_five']:
                await self.reward(user,box)
            # await self.article_list(user)  # 文章加豆,我觉得没必要开
        await self.close()

async def main():
    zqfa = zq()
    await zqfa.run()

if __name__ == '__main__':
    asyncio.run(main())

每二个小时运行一次 3 8-20/2 * * *

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1096722.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA发送消息到RabbitMq

项目中&#xff0c;作为生产者自定义消息发送到RabbitMq。 1.引入rmq依赖 <!-- rabbitmq 依赖 --><dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.9.0</version></dependen…

Leetcode刷题解析——最大连续1的个数

1. 题目链接&#xff1a;1004. 最大连续1的个数 III 2. 题目描述&#xff1a; 给定一个二进制数组 nums 和一个整数 k&#xff0c;如果可以翻转最多 k 个 0 &#xff0c;则返回 数组中连续 1 的最大个数 。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1,0,0,0,1,1,1,1,0]…

【MySql系列】深入解析数据库索引

写在前面 MySQL索引是数据库中一个关键的概念&#xff0c;它可以极大地提高查询性能&#xff0c;加快数据检索速度。但是&#xff0c;要充分发挥索引的作用&#xff0c;需要深入理解它们的工作原理和使用方式。 在本文中&#xff0c;我们将深入解析MySQL索引&#xff0c;探讨它…

PyCharm安装和使用教程

简介 PyCharm是一种PythonIDE&#xff08;Integrated Development Environment&#xff0c;集成开发环境&#xff09;&#xff0c;带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具&#xff0c;比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单…

护眼灯色温多少最好?儿童护眼灯色温范围多少

如果不想家里的孩子年纪小小的就戴着眼镜&#xff0c;从小就容易近视&#xff0c;那么护眼灯的选择就非常重要了&#xff0c;但是市场上那么多品类&#xff0c;价格也参差不齐&#xff0c;到底怎么选呢&#xff1f;色温该是多少呢&#xff1f;为大家推荐五款色温完全没问题的护…

【特纳斯电子】JDY-10M模块

视频及资料链接&#xff1a;JDY-10M模块 - 电子校园网 (mcude.com) 一、实物图 二、原理图 引脚定义 内部引脚图 三、简介 JDY-10 透传模块是基于蓝牙 4.0 协议标准&#xff0c;工作频段为 2.4GHZ 范围&#xff0c;调制方式为 GFSK(高斯频移键控&#xff0c;在调制之前通过一…

人形机器人:未来与现实的交汇

原创 | 文 BFT机器人 人形机器人是一种模仿人类外形和动作的机器人&#xff0c;具有复杂的机械结构和智能控制系统。随着科技的不断进步和应用领域的扩大&#xff0c;人形机器人行业正逐渐崭露头角&#xff0c;成为一个具有巨大潜力的新兴产业。根据高盛的预测&#xff0c;到2…

存档&改造【07】多表查询和可操控对象的存储

前情摘要 在可操作对象一栏中&#xff0c;默认IS_ALL所有人可见&#xff0c;还可以指定用户和部门&#xff0c;可操作对象存在CODE_SYSTEM_OPERATION&#xff08;晶码-接入系统操作项&#xff09;表中&#xff0c;部门/用户ID&NAME存在CODE_SYSTEM_OPERATION_AUTH&#xf…

Prompt 驱动架构设计:探索复杂 AIGC 应用的设计之道?

你是否曾经想过&#xff0c;当你在 Intellij IDEA 中输入一个段代码时&#xff0c;GitHub 是如何给你返回相关的结果的&#xff1f;其实&#xff0c;这背后的秘密就是围绕 Prompt 生成而构建的架构设计。 Prompt 是一个输入的文本段落或短语&#xff0c;用于引导 AI 生成模型执…

《数字图像处理-OpenCV/Python》连载(22)绘制直线与线段

《数字图像处理-OpenCV/Python》连载&#xff08;22&#xff09;绘制直线与线段 本书京东优惠购书链接&#xff1a;https://item.jd.com/14098452.html 本书CSDN独家连载专栏&#xff1a;https://blog.csdn.net/youcans/category_12418787.html 第 4 章 绘图与鼠标交互 本章介…

Http/https代理和抓包分析

前言 最近工作需要部署http/https的代理&#xff0c;所以用squid部署了一下&#xff0c;重新回顾了一下http和https的代理知识。 HTTP代理 根据《HTTP 权威指南》如图&#xff1a; 这种情况下&#xff0c;对访问服务器而言&#xff0c;它会把代理当做客户端&#xff0c;完全…

C++算法:前缀和基础

相关 源码测试用例下载 https://download.csdn.net/download/he_zhidan/88430716 包括4个压缩包&#xff0c;初始代码&#xff0c;实现前缀和&#xff0c;实现前缀积&#xff0c;实现前缀异或。都是在前者的基础上修改的。 本博文是CSDN学院课程的讲义 https://edu.csdn.net/c…

【linux kernel】linux的platform设备驱动框架分析

文章目录 一、简介二、platform总线三、platform设备和驱动的匹配过程四、platrom驱动和platform设备五、platform驱动设计六、代码示例 &#x1f53a;【linux内核系列文章】 &#x1f449;对一些文章内容进行了勘误&#xff0c;本系列文章长期不定时更新&#xff0c;希望能分享…

可视化上证50结构图

可视化上证50结构图 缘由收集数据先获取50支成分股列表获取各成分股票K线数据 数据处理找出来&#xff0c;再删除&#xff0c;然后重新下载数据最终获得每日报价的变化值 图形结构处理聚类分析使用affinity_propagation(亲和传播)聚类 嵌入二维平面空间可视化小结热力图 缘由 …

Excel和图片如何互相转换?有何技巧?

一、将图片转为excel表格 首先&#xff0c;打开金鸣识别网站&#xff0c;点击“点击添加需转换的图片或PDF”按钮&#xff0c;添加待识别的图片或PDF文件。 添加完待识别的图片或PDF后&#xff0c;点击“提交识别”按钮&#xff0c;程序便开始识别。 识别完成后&#xff0c;系…

无效的 page.json [“window“] 页面.json配置了“window“: {“disableScroll“: true}

问题&#xff1a;启动小程序时报错 无效的 page.json ["window"] 页面 解决&#xff1a; app.json 全局配置才使用window对象&#xff0c;在单独的页面直接写disableScroll:true即可 //app.json中添加&#xff0c;window里面添加就可以了 "window": { …

儿童写作业用的护眼灯哪种好?双十一写作业护眼灯推荐

这些年大家对于身体健康越来越重视&#xff0c;尤其是关于儿童青少年的眼睛健康问题&#xff0c;因此作为学生们常用的护眼台灯也成为了非常多家长为孩子选择的学习台灯。而还没给孩子准备台灯的家长们也都想买上一盏台灯给孩子使用&#xff0c;但市面上的护眼台灯太多了&#…

【ElasticSearch】学习笔记

【ElasticSearch】学习笔记 【一】ElasticSearch是什么&#xff1f;【二】Mac安装ElasticSearch【三】Mac安装可视化界面Kibana 【一】ElasticSearch是什么&#xff1f; ElasticSearch是一个分布式、Restful风格的搜索和数据分析引擎&#xff0c;Stark的核心。 可以应用在比如…

XnViewMP forMac/Windows中文版:轻松管理和浏览您的图片库

您是否厌倦了使用不方便、功能有限的图片浏览软件&#xff1f;现在&#xff0c;让我向您介绍一款强大而全面的图片浏览软件——XnViewMP&#xff01; XnViewMP是一款免费开源的跨平台图片浏览软件&#xff0c;它具有出色的功能和易用性&#xff0c;适用于个人用户和专业摄影师…