青龙脚本-微信阅读-小阅阅,稳定正常日2。

427次阅读
没有评论

共计 12720 个字符,预计需要花费 32 分钟才能阅读完成。

此类微信阅读都是使用电脑微信来抓包,不提供安卓抓包教程

微信多开软件链接

https://www.52pojie.cn/thread-1828448-1-1.html

估计有人无法访问吾爱,我就放地址出来吧

v3.9.7.25 绿色版:①度盘链接:https://pan.baidu.com/s/1ZvyPpLMnMu7_HgtIDhV8kg 提取码: sfit   ②天翼云盘:https://cloud.189.cn/web/share?code=rqmmUra2miE3(访问码:7bhk)  (说明:绿色包都已经添加了防撤多开补丁,直接解压就可使用。

———————————-分割线—————————————————————————

抓包软件链接

https://wwze.lanzoub.com/iNsRW18t4f2f

———————————-分割线—————————————————————————

抓包软件使用方法

https://blog.csdn.net/qq_34428150/article/details/115442047

———————————-分割线—————————————————————————

下面正式开始

微信打开链接复制然后打开

https://wi25760.zhaiwei.top:10268/yunonline/v1/auth/d807e9b6a317c7ccd8141f5c8d7ac64e?codeurl=wi25760.zhaiwei.top:10268&codeuserid=2&time=1694936441

或者微信扫码

青龙脚本-微信阅读-小阅阅,稳定正常日2。

先放脚本,然后在抓包,如果会抓包的大佬可不用看

抓包

系统公告: 小阅阅脚本已经修复,请尽快更新版本,小阅阅ck需要重新抓取,抓包的任意接口cookies中的ysmuid参数,注意是ysmuid和devid参数

'''
cron: 10 */30 9-22 * * *
new Env('f小阅阅阅读');
活动入口微信打开:https://wi25760.zhaiwei.top:10268/yunonline/v1/auth/d807e9b6a317c7ccd8141f5c8d7ac64e?codeurl=wi25760.zhaiwei.top:10268&codeuserid=2&time=1694936441
公告地址:http://175.24.153.42:8881/getmsg?type=xyyyd

使用方法:
1.微信打开活动入口:https://wi25760.zhaiwei.top:10268/yunonline/v1/auth/d807e9b6a317c7ccd8141f5c8d7ac64e?codeurl=wi25760.zhaiwei.top:10268&codeuserid=2&time=1694936441
2.抓包的任意接口cookies中的ysm_uid参数,抓包devtouid接口请求体中的devid参数
3.青龙环境变量菜单,添加本脚本环境变量
名称 :xyy_config
变量参数
单个账户参数: ['name|ck|key|uids|devid']
例如:['账号1|729ac1356xxxxb7407bd2ea|keykeykey|uid_xxxxx|29ac1356xxxxb7407bd2e']
多个账户['name|ck|key|uids|devid','name|ck|key|uids|devid','name|ck|key|uids|devid']
例如:['账号1|729ac1356xxxxb7407bd2ea|keykeykey|uid_xxxxx|29ac1356xxxxb7407bd2e','账号2|729ac1356xxxxb7407bd2ea|keykeykey|uid_xxxxx|29ac1356xxxxb7407bd2e','账号3|729ac1356xxxxb7407bd2ea|keykeykey|uid_xxxxx|29ac1356xxxxb7407bd2e']
参数说明与获取:
ck:抓包的任意接口cookies中的ysm_uid参数,
key:每个账号的推送标准,每个账号全阅读只需要一个key,多个账号需要多个key,key永不过期。
为了防止恶意调用key接口,限制每个ip每天只能获取一个key。手机开飞行模式10s左右可以变更ip重新获取key
通过浏览器打开链接获取:http://175.24.153.42:8882/getkey
uids:wxpusher的参数,当一个微信关注了一个wxpusher的推送应用后,会在推送管理后台(https://wxpusher.zjiecode.com/admin/main)的'用户管理-->用户列表'中显示
用户在推送页面点击’我的-->我的UID‘也可以获取
devid:设备指纹信息,可能是用来检测封号,请务必填写
4.青龙环境变量菜单,添加本脚wxpusher环境变量(不需要重复添加)
青名称 :push_config
参数 :{"printf":0,"threadingf":1,"appToken":"xxxx"}
例如:{"printf":0,"threadingf":1,"appToken":"AT_r1vNXQdfgxxxxxscPyoORYg"}
参数说明:
printf 0是不打印调试日志,1是打印调试日志
threadingf:并行运行账号参数 1并行执行,0顺序执行,并行执行优点,能够并行跑所以账号,加快完成时间,缺点日志打印混乱。
appToken 这个是填wxpusher的appToken

5.提现标准默认是3000,与需要修改,请在本脚本最下方,按照提示修改
'''

import time
import requests
import random
import re
import os
import json
import threading
from urllib.parse import urlparse, parse_qs

# 公众号字典
checkDict = {
    'MzkxNTE3MzQ4MQ==': ['香姐爱旅行', 'gh_54a65dc60039'],
    'Mzg5MjM0MDEwNw==': ['我本非凡', 'gh_46b076903473'],
    'MzUzODY4NzE2OQ==': ['多肉葡萄2020', 'gh_b3d79cd1e1b5'],
    'MzkyMjE3MzYxMg==': ['Youhful', 'gh_b3d79cd1e1b5'],
    'MzkxNjMwNDIzOA==': ['少年没有乌托邦3', 'gh_b3d79cd1e1b5'],
    'Mzg3NzUxMjc5Mg==': ['星星诺言', 'gh_b3d79cd1e1b5'],
    'Mzg4NTcwODE1NA==': ['斑马还没睡123', 'gh_b3d79cd1e1b5'],
    'Mzk0ODIxODE4OQ==': ['持家妙招宝典', 'gh_b3d79cd1e1b5'],
    'Mzg2NjUyMjI1NA==': ['Lilinng', 'gh_b3d79cd1e1b5'],
    'MzIzMDczODg4Mw==': ['有故事的同学Y', 'gh_b3d79cd1e1b5'],
    'Mzg5ODUyMzYzMQ==': ['789也不行', 'gh_b3d79cd1e1b5'],
    'MzU0NzI5Mjc4OQ==': ['皮蛋瘦肉猪', 'gh_58d7ee593b86'],
    'Mzg5MDgxODAzMg==': ['北北小助手', 'gh_58d7ee593b86'],
    'MzkxNDU1NDEzNw==': ['小阅阅服务', 'gh_e50cfefef9e5'],
}


def getmsg():
    lvsion = 'v1.6f'
    r = ''
    try:
        u = 'http://175.24.153.42:8881/getmsg'
        p = {'type': 'xyyyd'}
        r = requests.get(u, params=p)
        rj = r.json()
        version = rj.get('version')
        gdict = rj.get('gdict')
        gmmsg = rj.get('gmmsg')
        print('系统公告:', gmmsg)
        print(f'最新版本{version}当前版本{lvsion}')
        print(f'系统的公众号字典{len(gdict)}个:{gdict}')
        print(f'本脚本公众号字典{len(checkDict.values())}个:{list(checkDict.keys())}')
        s = len(gdict)
        l = len(checkDict.values())
        if s > l:
            print(f'新增了{s - l}个过检测字典,快手动去脚本的checkDict里添加吧')
        print('=' * 50)
    except Exception as e:
        print(r.text)
        print(e)
        print('公告服务器异常')


def push(title, link, text, type,uids,key):
    str1 = '''<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>TITLE</title>
<style type=text/css>
   body {
   	background-image: linear-gradient(120deg, #fdfbfb 0%, #a5d0e5 100%);
    background-size: 300%;
    animation: bgAnimation 6s linear infinite;
}
@keyframes bgAnimation {
    0% {background-position: 0% 50%;}
    50% {background-position: 100% 50%;}
    100% {background-position: 0% 50%;}
}
</style>
</head>
<body>
<p>TEXT</p><br>
<p><a href="http://175.24.153.42:8882/lookstatus?key=KEY&type=TYPE">查看状态</a></p><br>
<p><a href="http://175.24.153.42:8882/lookwxarticle?key=KEY&type=TYPE&wxurl=LINK">点击阅读检测文章</a></p><br>
</body>
</html>
    '''
    content = str1.replace('TITTLE', title).replace('LINK', link).replace('TEXT', text).replace('TYPE', type).replace(
        'KEY', key)
    datapust = {
        "appToken": appToken,
        "content": content,
        "summary": title,
        "contentType": 2,
        "uids": [uids]
    }
    urlpust = 'http://wxpusher.zjiecode.com/api/send/message'
    try:
        p = requests.post(url=urlpust, json=datapust).text
        print(p)
        return True
    except:
        print('推送失败!')
        return False


def getinfo(link):
    try:
        r = requests.get(link)
        # print(r.text)
        html = re.sub('\s', '', r.text)
        biz = re.findall('varbiz="(.*?)"\|\|', html)
        if biz != []:
            biz = biz[0]
        if biz == '' or biz == []:
            if '__biz' in link:
                biz = re.findall('__biz=(.*?)&', link)
                if biz != []:
                    biz = biz[0]
        nickname = re.findall('varnickname=htmlDecode\("(.*?)"\);', html)
        if nickname != []:
            nickname = nickname[0]
        user_name = re.findall('varuser_name="(.*?)";', html)
        if user_name != []:
            user_name = user_name[0]
        msg_title = re.findall("varmsg_title='(.*?)'\.html\(", html)
        if msg_title != []:
            msg_title = msg_title[0]
        text = f'公众号唯一标识:{biz}|文章:{msg_title}|作者:{nickname}|账号:{user_name}'
        print(text)
        return nickname, user_name, msg_title, text, biz
    except Exception as e:
        print(e)
        print('异常')
        return False


def ts():
    return str(int(time.time())) + '000'


class HHYD():
    def __init__(self, cg):
        print(cg)
        self.name = cg[0]
        self.ck = cg[1]
        self.key = cg[2]
        self.uids = cg[3]
        self.devid=cg[4]
        self.headers = {
            'Host': '1694829964.njzyl.top',
            'Accept': 'application/json, text/javascript, */*; q=0.01',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 NetType/WIFI MicroMessenger/7.0.20.1781(0x6700143B) WindowsWechat(0x63090621) XWEB/8351 Flue',
            'X-Requested-With': 'XMLHttpRequest',
            'Referer': 'http://1694829964.njzyl.top/',
            'Accept-Encoding': 'gzip, deflate',
            'Accept-Language': 'zh-CN,zh',
            'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
            'Cookie': f'ysm_uid={self.ck};',
        }
        self.sec = requests.session()
        self.sec.headers = self.headers
        self.lastbiz = ''

    def printjson(self, text):
        if printf == 0:
            return
        print(self.name, text)

    def setstatus(self):
        try:
            u = 'http://175.24.153.42:8882/setstatus'
            p = {'key': self.key, 'type': 'xyyyd', 'val': '1'}
            r = requests.get(u, params=p, timeout=10)
            print(self.name, r.text)
        except Exception as e:
            print('设置状态异常')
            print(e)

    def getstatus(self):
        try:
            u = 'http://175.24.153.42:8882/getstatus'
            p = {'key': self.key, 'type': 'xyyyd'}
            r = requests.get(u, params=p, timeout=3)
            return r.text
        except Exception as e:
            print('查询状态异常', e)
            return False

    def init(self):
        try:
            r = self.sec.get('http://1694829964.njzyl.top/')
            htmltext = r.text
            res1 = re.sub('\s', '', htmltext)
            signidl = re.findall('\)\|\|"(.*?)";', res1)
            if signidl == []:
                print('初始化失败,账号异常')
                return False
            else:
                self.signid = signidl[0]
            return True
        except:
            print('初始化失败,请检查你的ck')
            return False

    def user_info(self):
        u = f'http://1694829964.njzyl.top/yunonline/v1/sign_info?time={ts()}000&unionid={self.ck}'
        r = ''
        try:
            r = self.sec.get(u)
            rj = r.json()
            if rj.get('errcode') == 0:
                self.printjson(r.json())
                return True
            else:
                print(f'获取用户信息失败,账号异常,请查看你的账号是否正常')
                return False
        except:
            print(r.text)
            print(f'获取用户信息失败,gfsessionid无效,请检测gfsessionid是否正确')
            return False

    def hasWechat(self):
        r = ''
        try:
            u = f'http://1694829964.njzyl.top/yunonline/v1/hasWechat?unionid={self.ck}'
            r = self.sec.get(u)
            self.printjson(r.json())
        except:
            print(r.text)
            return False

    def gold(self):
        r = ''
        try:
            u = f'http://1694829964.njzyl.top/yunonline/v1/gold?unionid={self.ck}&time={ts()}000'
            r = self.sec.get(u)
            self.printjson(r.json())
            rj = r.json()
            self.remain = rj.get("data").get("last_gold")
            print(
                f'今日已经阅读了{rj.get("data").get("day_read")}篇文章,剩余{rj.get("data").get("remain_read")}未阅读,今日获取金币{rj.get("data").get("day_gold")},剩余{self.remain}')
        except:
            print(r.text)
            return False
    def devtouid(self):
        u = f'http://1694829964.njzyl.top/yunonline/v1/devtouid'
        p=f'unionid={self.ck}&devid={self.devid}'
        r = self.sec.post(u,data=p)
        print(self.name,'模拟上传设备指纹:',r.text)
    def getKey(self):
        u = 'http://1694829964.njzyl.top/yunonline/v1/wtmpdomain'
        p = f'unionid={self.ck}'
        r = requests.post(u, headers=self.headers, data=p)
        self.printjson(r.text)
        rj = r.json()
        domain = rj.get('data').get('domain')
        pp = parse_qs(urlparse(domain).query)
        hn = urlparse(domain).netloc
        uk = pp.get('uk')[0]
        self.printjson(f'get ydkey is {uk}')
        h = {
            'Host': 'nsr.zsf2023e458.cloud',
            'Accept': 'application/json, text/javascript, */*; q=0.01',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 NetType/WIFI MicroMessenger/7.0.20.1781(0x6700143B) WindowsWechat(0x63090621) XWEB/8351 Flue',
            'Origin': f'https://{hn}',
            'Sec-Fetch-Site': 'cross-site',
            'Sec-Fetch-Mode': 'cors',
            'Sec-Fetch-Dest': 'empty',
            'Accept-Encoding': 'gzip, deflate, br',
            'Accept-Language': 'zh-CN,zh',
        }
        return uk, h

    def read(self):
        info = self.getKey()
        time.sleep(3)
        self.params = {'uk': info[0]}
        while True:
            u = f'https://nsr.zsf2023e458.cloud/yunonline/v1/do_read'
            r = requests.get(u, headers=info[1], params=self.params)
            print('-' * 50)
            self.printjson(r.json())
            rj = r.json()
            if rj.get('errcode') == 0:
                link = rj.get('data').get('link')
                wxlink = self.jump(link)
                a = getinfo(wxlink)
                if a == False:
                    push('小阅阅阅读过检测', wxlink, '文章获取失败', 'xyyyd',self.uids,self.key)
                    return False
                if self.testCheck(a, wxlink) == False:
                    return False
                self.printjson(f'this:{a[4]}|last:{self.lastbiz}')
                if a[4] == self.lastbiz:
                    if self.testCheck(a, wxlink) == False:
                        return False
                self.lastbiz = a[4]
                tsm = random.randint(7, 10)
                print(f'本次模拟读{tsm}秒')
                time.sleep(tsm)
                u1 = f'https://nsr.zsf2023e458.cloud/yunonline/v1/get_read_gold?uk={info[0]}&time={tsm}&timestamp={ts()}'
                r1 = requests.get(u1, headers=info[1])
                self.printjson(r1.text)
            elif rj.get('errcode') == 405:
                print('阅读重复')
                time.sleep(1.5)
            elif rj.get('errcode') == 407:
                print(rj.get('msg'))
                print('阅读结束')
                return True
            else:
                print('未知情况')
                time.sleep(1.5)

    def testCheck(self, a, url):
        if a[4] == []:
            print('这个链接没有获取到微信号id', url)
            return True
        if checkDict.get(a[4]) != None:
            self.setstatus()
            for i in range(60):
                if i % 30 == 0:
                    push('小阅阅阅读过检测', url, a[3], 'xyyyd',self.uids,self.key)
                getstatusinfo = self.getstatus()
                if getstatusinfo == '0':
                    print('过检测文章已经阅读')
                    return True
                elif getstatusinfo == '1':
                    print(f'正在等待过检测文章阅读结果{i}秒。。。')
                    time.sleep(1)
                else:
                    print(self.name, f'回调服务器请求超时,等待中{i}秒。。。')
                    time.sleep(1)
            print('过检测超时中止脚本防止黑号')
            return False
        else:
            return True

    def jump(self, link):
        print('开始本次阅读')
        hn = urlparse(link).netloc
        h = {
            'Host': hn,
            'Upgrade-Insecure-Requests': '1',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 NetType/WIFI MicroMessenger/7.0.20.1781(0x6700143B) WindowsWechat(0x63090621) XWEB/8351 Flue',
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
            'Accept-Encoding': 'gzip, deflate',
            'Accept-Language': 'zh-CN,zh',
            'Cookie': f'ysm_uid={self.ck}',
        }
        r = requests.get(link, headers=h, allow_redirects=False)
        self.printjson(r.status_code)
        Location = r.headers.get('Location')
        self.printjson(Location)
        return Location

    def withdraw(self):
        if int(self.remain) < txbz:
            print('没有达到提现标准')
            return False
        gold = int(int(self.remain) / 1000) * 1000
        print('本次提现金币', gold)
        if gold:
            u1 = 'http://1694829964.njzyl.top/yunonline/v1/user_gold'
            p1 = f'unionid={self.ck}&request_id={self.signid}&gold={gold}'
            r = self.sec.post(u1, data=p1)
            print(r.json())
            u = f'http://1694829964.njzyl.top/yunonline/v1/withdraw'
            p = f'unionid={self.ck}&signid={self.signid}&ua=0&ptype=0&paccount=&pname='
            r = self.sec.post(u, headers=self.headers, data=p)
            print('提现结果', r.json())

    def run(self):
        if self.init():
            self.user_info()
            self.hasWechat()
            self.gold()
            self.devtouid()
            time.sleep(3)
            self.read()
            time.sleep(3)
            self.gold()
            time.sleep(3)
            self.withdraw()


if __name__ == '__main__':
    pushconfig = os.getenv('push_config')
    print(pushconfig)
    if pushconfig == None:
        print('请检查你的推送变量名称是否填写')
        exit(0)
    try:
        pushconfig = json.loads(pushconfig.replace("'", '"'))
    except Exception as e:
        print(e)
        print('你填写的是:',pushconfig)
        print('请检查你的推送变量参数是否填写正确')
        exit(0)
    xyyconfig = os.getenv('xyy_config')
    if xyyconfig == None:
        print('请检查你的小阅阅阅读脚本变量名称是否填写')
        exit(0)
    try:
        xyyconfig = json.loads(xyyconfig.replace("'", '"'))
    except Exception as e:
        print(e)
        print('你填写的是:',xyyconfig)
        print('请检查你的小阅阅阅读变量参数是否填写正确')
        exit(0)
    printf = pushconfig['printf']
    appToken = pushconfig['appToken']
    threadingf = pushconfig['threadingf']
    getmsg()
    txbz = 10000  # 这里是提现标志3000代表3毛
    tl = []
    if threadingf == 1:
        for i in xyyconfig:
            cg = i.split('|')
            print('*' * 50)
            print(f'开始执行{i[0]}')
            api = HHYD(cg)
            t = threading.Thread(target=api.run, args=())
            tl.append(t)
            t.start()
            time.sleep(0.5)
        for t in tl:
            t.join()
    elif threadingf == 0:
        for i in xyyconfig:
            cg = i.split('|')
            print('*' * 50)
            print(f'开始执行{cg[0]}')
            api = HHYD(cg)
            api.run()
            print(f'{cg[0]}执行完毕')
            time.sleep(3)
    else:
        print('请确定推送变量中threadingf参数是否正确')
    print('全部账号执行完成')

抓包教程就视频演示吧

青龙添加变量 xyy_config和push_config

青龙脚本-微信阅读-小阅阅,稳定正常日2。

结束

正文完
 
评论(没有评论)
验证码