青龙羊毛 微信阅读脚本教程 每日收益4~5米

会抓包的看 不会的度娘

微信阅读一需要青龙环境

入口,微信打开 -> 入口1:https://api.shanghaiqiye.top:10262/yunonline/v1/auth/080bb7730c1c22c0983b4c5755e84762?codeurl=shanghaiqiye.top:10262&codeuserid=2&time=1678618115

入口2:https://api.caorenkj.top:10252/yunonline/v1/auth/080bb7730c1c22c0983b4c5755e84762?codeurl=caorenkj.top:10252&codeuserid=1&time=1678618115抓包首页 https://erd.jjt2019.top/yunonline/v1/gold?unionid=nonxxxx&time=1678449887000 中的 unionid

抓包获取文章链接 https://erd.jjt2019.top/yunonline/v1/task 请求体中 secret 填写变量 jdyuedu ,填写方式 unionid&secret 不要unionid=和secret=,多账户换行隔开目前验证文章不清楚,但每天第一轮必验证,不过验证必黑,建议第一轮读到第三篇文章,建议不要凌晨跑

微信阅读二

需要青龙环境 入口,微信打开 -> https://zl0104233736-1314804847.cos.ap-nanjing.myqcloud.com/index.html?upuid=10760102 抓包m.*.work域名下cookie,填入环境变量 yuedu,多账户换行隔开每天会验证2次左右,碰到验证文章手动打开看一篇即可 当前每日30篇*6轮180篇文章约2.2元

青龙羊毛 微信阅读脚本教程 每日收益4~5米

青龙羊毛 微信阅读脚本教程 每日收益4~5米

wx_yd.js

代码语言:javascript
复制
/*
微信阅读
需要青龙环境
入口,微信打开 -> https://zl0104233736-1314804847.cos.ap-nanjing.myqcloud.com/index.html?upuid=10760102
抓包m.*.work域名下cookie,填入环境变量 yuedu,多账户换行隔开

每天会验证2次左右,碰到验证文章手动打开看一篇即可
当前每日30篇*6轮180篇文章约2.2元
会自动提现
*/

const $ = new Env("微信阅读");
const notify = $.isNode() ? require('./sendNotify') : '';
let envSplitor = ['@', '\n']
let httpResult, httpReq, httpResp
let ckName = 'yuedu'
let userCookie = (.isNode() ? process.env[ckName] : .getdata(ckName)) || '';
let userList = []
let userIdx = 0
let userCount = 0
var msg = ''
let newurl = "http://m.xmrygnuv.shop"
///////////////////////////////////////////////////////////////////
class UserInfo {
constructor(str) {
//console.log(str)
this.index = ++userIdx, this.idx = 账号[${this.index}] , this.ck = str//.split('#'), this.u = this.ck[0], this.t = this.ck[1]
}

async getreadurl() {
    try {
        let t = Date.now()
        this.ul = newurl+`/tuijian/do_read?for\u003d\u0026zs\u003d\u0026pageshow\u0026r\u003d0.016638941704032684`;
        let body = ``;
        let urlObject = popu(this.ul, body,this.ck)
        await httpRequest('get', urlObject)
        let result = httpResult;
        //console.log(result)
        if ( result.jkey && result.url) {
            this.jkey=result.jkey
            await this.read(result.url.split('redirect_uri=')[1])
        }
        /*
        "1" == result.info.type && 1 !== this.dx && (console.log(`文章获取成功 `), this.b = 1, await $.wait(1000), await this.readfinish()),
            "3" == result.info.type && 1 !== this.dx && (console.log(`已限制阅读   尝试过验证`), this.x = result.info.key, this.c = result.info.url.split("/s/")[1], this.b = 2,
                await $.wait(6000), await this.readfinish());
                */
    } catch (e) {
        console.log(e)
    } finally {
        return Promise.resolve(1);
    }
}

async read(readurl) {
    try {
        let t = Date.now()
        readurl = decodeURIComponent(readurl);
        var sj = Math.random() * (8000 - 6000) + 6000

        if (readurl.indexOf("jump")==-1){

            console.log("疑似检测文章,不阅读")

            await $.wait(sj)
            return
            await this.readfinish()
             

        }
        this.jumpid = readurl.match(/jumpid=(.*?)&/)[1]
        this.state= readurl.match(/state=(.*?)&/)[1]
        this.ul = newurl+`/fast_reada/oiejr?jumpid=${this.jumpid}&code=031oV60w32RVa03URy0w3E0mzj3oV607&state=` + this.state
        //console.log(this.ul)
         
        let body = ``;
        let urlObject = popu(this.ul, body,this.ck)
        await httpRequest('get', urlObject)
        let result = httpResult;
        //console.log(result)
        //var sj = Math.random() * (8000 - 6000) + 6000
        //console.log('等待:'+ sj)
        await $.wait(sj)
        await this.readfinish()
         
        /*
        "1" == result.info.type && 1 !== this.dx && (console.log(`文章获取成功 `), this.b = 1, await $.wait(1000), await this.readfinish()),
            "3" == result.info.type && 1 !== this.dx && (console.log(`已限制阅读   尝试过验证`), this.x = result.info.key, this.c = result.info.url.split("/s/")[1], this.b = 2,
                await $.wait(6000), await this.readfinish());
                */
    } catch (e) {
        console.log(e)
    } finally {
        return Promise.resolve(1);
    }
}
async readfinish() {
    try {

        this.url=newurl+'/tuijian/do_read?for=&zs=&pageshow=&r=0.7882316111246435&jkey='+this.jkey
        let body = ``;
        let urlObject = popu(this.url, body,this.ck)
        //console.log(urlObject)
        await httpRequest('get', urlObject)
        let result = httpResult;
        if (result && result.success_msg) {
            console.log(result.success_msg)
        } else {
            console.log(result)
        }
         
        /*
        "success" == result.msg && console.log(`增加金币-> ${result.info.num} 阅读次数 ${result.info.read_num} 当前金币 ${result.info.read_money}`),
            result.code > 200 && (console.log(`已达到阅读量 等待刷新`), this.fx = 1);
            */
    } catch (e) {
        console.log(e)
    } finally {
        return Promise.resolve(1);
    }
}
async getreadinfo() {
    try {
        let t = Date.now()
        let url = newurl+`/tuijian`;
        let body = ``;
        let urlObject = popu(url, body,this.ck)
        //console.log()
        await httpRequest('get', urlObject)
        let result = httpResult;
        //console.log(result)
         

        if (result && result.data) {
            result = result.data
            this.uid = result.user.uid
            console.log(`\n今日阅读数量/收益:${result.infoView.num}/${result.infoView.score}分 \n`)
            console.log(`\n当前余额:${result.user.score}分  \n`)
            this.cishu = result.infoView.rest
             
            if (result.infoView.status != 1) {
                this.fb = 1
            }
            if (result.infoView.status == 3) {
               // console.log(result.infoView.msg)
                msg += ''
                console.log('检测文章,需手动过')
                msg += `\n${this.idx} 碰到检测文章\n`
                this.fb = 1
              
            } else if (result.infoView.status == 4) {
                console.log(result.infoView.msg)

            } else if (result.infoView.rest == 0){
                console.log(result.infoView.msg)
            }
        }
    } catch (e) {
        console.log(e)
    } finally {
        return Promise.resolve(1);
    }
}


async withdrawal() {
    try {
        let t = Date.now()
        let url = newurl+`/withdrawal`;
        let body = ``;
        let urlObject = popu(url, body,this.ck)
        await httpRequest('get', urlObject)
        let result = httpResult;
        if (result.data.user) {
            result = result.data.user
            console.log(`\n当前账号余额 ${result.score}分 \n`)
            if (this.ck.indexOf('##') != -1) return
            this.f = parseInt(result.score)//= Number(Math.floor(result.info.sum / 1000))
            /*
            if (this.f < 3) console.log(`\n 不满足0.3 提现门槛\n`)
            this.f >= 3 && this.f < 5 && (this.cash = .3), this.f >= 10 && this.f < 20 && (this.cash = 1), this.f >= 20 && this.f < 50 && (this.cash = 2),
                this.f >= 50 && this.f < 100 && (this.cash = 2), this.f >= 100 && this.f < 200 && (this.cash = 10), this.f >= 200 && (this.cash = 20)
            if (this.f >= 3) console.log(`\n可以提现 ${result.info.sum}金币 去提现 ${this.cash} 元\n`), await this.exchange()
            */
            if (this.f < 30) {
                console.log(`不满足 提现门槛`)
            } else {
                console.log(`去提现${this.f/100}元。。。。。。`)
                await this.doWithdraw(this.f)
            }
        }
    } catch (e) {
        console.log(e)
    } finally {
        return Promise.resolve(1);
    }
}
async doWithdraw(tx) {
    try {
        if (tx > 2000) tx = 2000
        let t = Date.now()
        let url = newurl+`/withdrawal/doWithdraw`;
        let body = `amount=` + tx;
        let urlObject = popu(url, body,this.ck)
        await httpRequest('post', urlObject)
        let result = httpResult;
        console.log(result)

    } catch (e) {
        console.log(e)
    } finally {
        return Promise.resolve(1);
    }
}
async task() {
    try {
         
        let abc = [...new Array(15).keys()]
        console.log(`\n=========== ${this.idx} 开始阅读文章 ===========\n`)
        await this.getreadinfo()
        //console.log(this.fb)
        if (this.fb != 1) {
            for (let i = 0;i< this.cishu;i++) {
                await this.getreadurl()

                /*
                break
                if (this.dx == 1) break
                await this.getreadurl()
                if (this.fx == 1) break
                */
            }
            await this.getreadinfo()
            //await $.wait(15000)
             
        }
        await this.withdrawal()
         
    } catch (e) {
        console.log(e)
    } finally {
        return Promise.resolve(1);
    }
}

}

!(async () => {
if (typeof $request !== "undefined") {
await GetRewrite()
} else {
if (!(await checkEnv())) return;
if (userList.length > 0) {
await gethost()
console.log('获取到newurl:'+newurl)
for (let user of userList) {
await user.task()
}
if (msg) await notify.sendNotify('微信阅读检测文章',msg)
}
}
})()
.catch((e) => console.log(e))
.finally(() => $.done())

///////////////////////////////////////////////////////////////////

async function gethost() {
try {
let t = Date.now()
let url = 'https://qun.haozhuang.cn.com/fq_url/rk';
let body = ''
let urlObject = popugethost(url, body)
await httpRequest('get', urlObject)
let result = httpResult;
//console.log(result)
if (result.jump) {
newurl = result.jump.slice(0,-1)

    }
} catch (e) {
    console.log(e)
} finally {
    return Promise.resolve(1);
}

}

async function checkEnv() {
if (userCookie) {
let splitor = envSplitor[0];
for (let sp of envSplitor) {
if (userCookie.indexOf(sp) > -1) {
splitor = sp;
break;
}
}
for (let userCookies of userCookie.split(splitor)) {
if (userCookies)
userList.push(new UserInfo(userCookies))

    }
    userCount = userList.length
} else {
}

console.log(`找到[${ckName}] 变量 ${userCount}个账号`)



return true

}

////////////////////////////////////////////////////////////////////
function popu(url, body = '',ck) {
//console.log(ck) /?upuid\u003d10314864
let host = url.replace('//', '/').split('/')[1]
let urlObject = {
url: url,
headers: {
"Host": host,
"Connection": "keep-alive",
"Accept": "/",
"User-Agent": "Mozilla/5.0 (Linux; Android 12; M2012K11AC Build/SKQ1.211006.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 XWEB/4425 MMWEBSDK/20221206 Mobile Safari/537.36 MMWEBID/4883 MicroMessenger/8.0.32.2300(0x2800205D) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64",
"X-Requested-With": "com.tencent.mm",
"Referer": newurl+"/tuijian/read",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-CN,zh;q\u003d0.9,en-US;q\u003d0.8,en;q\u003d0.7",
"Cookie": ck,
},
timeout: 5000,
}
if (body) {
urlObject.body = body
}

return urlObject;

}
function popugethost(url, body = '',ck) {
//console.log(ck)
let host = url.replace('//', '/').split('/')[1]
let urlObject = {
url: url,
headers: {
"Host": "qun.haozhuang.cn.com",
"User-Agent": "Mozilla/5.0 (Linux; Android 12; M2012K11AC Build/SKQ1.211006.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 XWEB/4425 MMWEBSDK/20221206 Mobile Safari/537.36 MMWEBID/4883 MicroMessenger/8.0.32.2300(0x2800205D) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64",
"Accept": "/",
"Origin": "https://kygj0209122405-1316151879.cos.ap-nanjing.myqcloud.com",
"X-Requested-With": "com.tencent.mm",
"Referer": "https://kygj0209122405-1316151879.cos.ap-nanjing.myqcloud.com/index.html?upuid\u003d10315076"
},
timeout: 5000,
}
if (body) {
urlObject.body = body
}

return urlObject;

}

async function httpRequest(method, url) {
//console.log(url)
httpResult = null, httpReq = null, httpResp = null;
return new Promise((resolve) => {
$.send(method, url, async (err, req, resp) => {
try {
httpReq = req;
httpResp = resp;
if (err) {
} else {
if (resp.body) {
if (typeof resp.body == "object") {
httpResult = resp.body;
} else {
try {
httpResult = JSON.parse(resp.body);
} catch (e) {
httpResult = resp.body;
}
}
}
}
} catch (e) {
console.log(e);
} finally {
resolve();
}
});
});
}
////////////////////////////////////////////////////////////////////
function Env(a, b) {
return "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0), new class {
constructor(a, b) {
this.name = a, this.notifyStr = "", this.startTime = (new Date).getTime(), Object.assign(this, b), console.log(${this.name} 开始运行: )
/*

  • 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释
  • } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof task } isSurge() { return &#34;undefined&#34; != typeof httpClient && "undefined" == typeof loon } isLoon() { return &#34;undefined&#34; != typeof loon } getdata(b) { let a = this.getval(b); if (/^@/.test(b)) { let [, c, f] = /^@(.?).(.?)/.exec(b), d = c ? this.getval(c) : &#34;&#34;; if (d) try { let e = JSON.parse(d); a = e ? this.lodash_get(e, f, &#34;&#34;) : a } catch (g) { a = &#34;&#34; } } return a } setdata(c, d) { let a = !1; if (/^@/.test(d)) { let [, b, e] = /^@(.*?)\.(.*?)/.exec(d), f = this.getval(b), i = b ? "null" === f ? null : f || "{}" : "{}"; try { let g = JSON.parse(i); this.lodash_set(g, e, c), a = this.setval(JSON.stringify(g), b) } catch (j) { let h = {}; this.lodash_set(h, e, c), a = this.setval(JSON.stringify(h), b) } } else a = this.setval(c, d); return a } getval(a) { return this.isSurge() || this.isLoon() ? persistentStore.read(a) : this.isQuanX() ? prefs.valueForKey(a) : this.isNode() ? (this.data = this.loaddata(), this.data[a]) : this.data && this.data[a] || null } setval(b, a) { return this.isSurge() || this.isLoon() ? persistentStore.write(b, a) : this.isQuanX() ? prefs.setValueForKey(b, a) : this.isNode() ? (this.data = this.loaddata(), this.data[a] = b, this.writedata(), !0) : this.data && this.data[a] || null } send(b, a, f = () => { }) { if ("get" != b && "post" != b && "put" != b && "delete" != b) { console.log(无效的http方法:${b}); return } if ("get" == b && a.headers ? (delete a.headers["Content-Type"], delete a.headers["Content-Length"]) : a.body && a.headers && (a.headers["Content-Type"] || (a.headers["Content-Type"] = "application/x-www-form-urlencoded")), this.isSurge() || this.isLoon()) { this.isSurge() && this.isNeedRewrite && (a.headers = a.headers || {}, Object.assign(a.headers, { "X-Surge-Skip-Scripting": !1 })); let c = { method: b, url: a.url, headers: a.headers, timeout: a.timeout, data: a.body }; "get" == b && delete c.data, axios(c).then(a =&gt; { let { status: b, request: c, headers: d, data: e } = a; f(null, c, { statusCode: b, headers: d, body: e }) }).catch(a =&gt; console.log(a)) } else if (this.isQuanX()) a.method = b.toUpperCase(), this.isNeedRewrite &amp;&amp; (a.opts = a.opts || {}, Object.assign(a.opts, { hints: !1 })), task.fetch(a).then(a => { let { statusCode: b, request: c, headers: d, body: e } = a; f(null, c, { statusCode: b, headers: d, body: e }) }, a => f(a)); else if (this.isNode()) { this.got = this.got ? this.got : require("got"); let { url: d, ...e } = a; this.instance = this.got.extend({ followRedirect: !1 }), this.instance[b](d, e).then(a => { let { statusCode: b, request: c, headers: d, body: e } = a; f(null, c, { statusCode: b, headers: d, body: e }) }, b => { let { message: c, response: a } = b; f(c, a, a && a.body) }) } } time(a) { let b = { "M+": (new Date).getMonth() + 1, "d+": (new Date).getDate(), "h+": (new Date).getHours(), "m+": (new Date).getMinutes(), "s+": (new Date).getSeconds(), "q+": Math.floor(((new Date).getMonth() + 3) / 3), S: (new Date).getMilliseconds() }; for (let c in /(y+)/.test(a) && (a = a.replace(RegExp.$1, ((new Date).getFullYear() + "").substr(4 - RegExp.$1.length))), b) new RegExp("(" + c + ")").test(a) && (a = a.replace(RegExp.$1, 1 == RegExp.$1.length ? b[c] : ("00" + b[c]).substr(("" + b[c]).length))); return a } async showmsg() { if (!this.notifyStr) return; let a = this.name + " \u8FD0\u884C\u901A\u77E5\n\n" + this.notifyStr; if (.isNode()) { var b = require(&#34;./sendNotify&#34;); console.log(&#34;\n============== \u63A8\u9001 ==============&#34;), await b.sendNotify(this.name, a) } else this.msg(a) } logAndNotify(a) { console.log(a), this.notifyStr += a, this.notifyStr += &#34;\n&#34; } msg(d = t, a = &#34;&#34;, b = &#34;&#34;, e) { let f = a =&gt; { if (!a) return a; if (&#34;string&#34; == typeof a) return this.isLoon() ? a : this.isQuanX() ? { &#34;open-url&#34;: a } : this.isSurge() ? { url: a } : void 0; if (&#34;object&#34; == typeof a) { if (this.isLoon()) { let b = a.openUrl || a.url || a[&#34;open-url&#34;], c = a.mediaUrl || a[&#34;media-url&#34;]; return { openUrl: b, mediaUrl: c } } if (this.isQuanX()) { let d = a[&#34;open-url&#34;] || a.url || a.openUrl, e = a[&#34;media-url&#34;] || a.mediaUrl; return { &#34;open-url&#34;: d, &#34;media-url&#34;: e } } if (this.isSurge()) return { url: a.url || a.openUrl || a[&#34;open-url&#34;] } } }; this.isMute || (this.isSurge() || this.isLoon() ? notification.post(d, a, b, f(e)) : this.isQuanX() && $notify(d, a, b, f(e))); let c = ["", "============== \u7CFB\u7EDF\u901A\u77E5 =============="]; c.push(d), a && c.push(a), b && c.push(b), console.log(c.join("\n")) } getMin(a, b) { return a < b ? a : b } getMax(a, b) { return a < b ? b : a } padStr(e, b, f = "0") { let a = String(e), g = b > a.length ? b - a.length : 0, c = ""; for (let d = 0; d < g; d++)c += f; return c + a } json2str(b, e, f = !1) { let c = []; for (let d of Object.keys(b).sort()) { let a = b[d]; a && f && (a = encodeURIComponent(a)), c.push(d + "=" + a) } return c.join(e) } str2json(e, f = !1) { let d = {}; for (let a of e.split("#")) { if (!a) continue; let b = a.indexOf("="); if (-1 == b) continue; let g = a.substr(0, b), c = a.substr(b + 1); f && (c = decodeURIComponent(c)), d[g] = c } return d } randomString(d, a = "abcdef0123456789") { let b = ""; for (let c = 0; c < d; c++)b += a.charAt(Math.floor(Math.random() * a.length)); return b } randomList(a) { let b = Math.floor(Math.random() * a.length); return a[b] } wait(a) { return new Promise(b => setTimeout(b, a)) } done(a = {}) {
    */
    let b = (new Date).getTime(), c = (b - this.startTime) / 1e3; console.log( ${this.name} 运行结束,共运行了 ${c} 秒!), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(a)
    }
    }(a, b)
    }
代码语言:javascript
复制
/*
微信阅读
需要青龙环境
入口,微信打开 -> 入口1:https://api.shanghaiqiye.top/yunonline/v1/auth/080bb7730c1c22c0983b4c5755e84762?codeurl=shanghaiqiye.top:10262&codeuserid=2&time=1678618115
入口2:https://api.caorenkj.top/yunonline/v1/auth/080bb7730c1c22c0983b4c5755e84762?codeurl=caorenkj.top:10252&codeuserid=1&time=1678618115

抓包首页 https://erd.jjt2019.top/yunonline/v1/gold?unionid=nonxxxx&time=1678449887000 中的 unionid
抓包获取文章链接 https://erd.jjt2019.top/yunonline/v1/task 请求体中 secret
填写变量 jdyuedu ,填写方式 unionid&secret 不要unionid=和secret=,多账户换行隔开

目前验证文章不清楚,但每天第一轮必验证,不过验证必黑,建议第一轮读到第三篇文章,建议不要凌晨跑

3.12更新:前2篇以及101和102篇文章改为检测文章,遇到不读,请手动阅读

*/

const $ = new Env("微信简单阅读");
const notify = $.isNode() ? require('./sendNotify') : '';
let envSplitor = ['@', '\n']
let httpResult, httpReq, httpResp
let ckName = 'jdyuedu'
let userCookie = (.isNode() ? process.env[ckName] : .getdata(ckName)) || '';
let userList = []
let userIdx = 0
let userCount = 0
var msg = ''
var jiance = 0 //1获取文章 , 0阅读
let newurl = "https://erd.jjt2019.top"
///////////////////////////////////////////////////////////////////
class UserInfo {
constructor(str) {
//console.log(str)
this.istx = 1
if (str.indexOf('##')!=-1) this.istx=0
this.index = ++userIdx, this.idx = 账号[${this.index}] , this.unionid = str.split('&')[0], this.secret = str.split('&')[1]//.split('#'), this.u = this.ck[0], this.t = this.ck[1]
}

async dotask() {
    try {
        let t = Date.now()
        this.ul = newurl+`/yunonline/v1/task`;
        let body = &#39;secret=&#39;+this.secret+&#39;&amp;type=read&#39;;
        let urlObject = popu(this.ul, body,this.unionid)
        await httpRequest(&#39;post&#39;, urlObject)
        let result = httpResult;
        //console.log(result)
        if ( result.msg == &#39;success&#39;) {
            if (jiance == 1) {
                console.log( result.data.link)
                msg += &#39;\n&#39; + result.data.link + &#39;\n&#39;
            } else {
                await this.jump(result.data.link.split(&#39;redirect_uri=&#39;)[1])
            }
             
             
        } else if (result.errcode == 409){
            console.log(&#39;下次阅读时间:&#39;, result.msg/60,&#39;分钟后&#39;)

        } else if (result.errcode == 407){
            console.log(result.msg)
        } else {
            console.log(result)
        }
        /*
        &#34;1&#34; == result.info.type &amp;&amp; 1 !== this.dx &amp;&amp; (console.log(`文章获取成功 `), this.b = 1, await $.wait(1000), await this.readfinish()),
            &#34;3&#34; == result.info.type &amp;&amp; 1 !== this.dx &amp;&amp; (console.log(`已限制阅读   尝试过验证`), this.x = result.info.key, this.c = result.info.url.split(&#34;/s/&#34;)[1], this.b = 2,
                await $.wait(6000), await this.readfinish());
                */
    } catch (e) {
        console.log(e)
    } finally {
        return Promise.resolve(1);
    }
}

async jump(readurl) {
    try {
        let t = Date.now()
        readurl = decodeURIComponent(readurl);
        var sj = Math.random() * (7000 - 6000) + 4000
         
         
        this.key = readurl.match(/key=(.*?)&amp;/)[1]
        this.state= readurl.match(/state=(.*?)#/)[1]
        this.ul = newurl+`/yunonline/v1/jump?key=${this.key}&amp;unionid=${this.unionid}&amp;code=071jHI0w3wTxf03NIp1w36OkoF1jHI0P&amp;state=` + this.state
        //console.log(readurl)
         
        let body = ``;
        let urlObject = popu(this.ul, body,this.unionid)
        await httpRequest(&#39;get&#39;, urlObject)
        let result = httpResult;
        //console.log(result)
        //var sj = Math.random() * (8000 - 6000) + 6000
        //console.log(&#39;等待:&#39;+ sj)
        await $.wait(sj)
        await this.add_gold()
         
        /*
        &#34;1&#34; == result.info.type &amp;&amp; 1 !== this.dx &amp;&amp; (console.log(`文章获取成功 `), this.b = 1, await $.wait(1000), await this.readfinish()),
            &#34;3&#34; == result.info.type &amp;&amp; 1 !== this.dx &amp;&amp; (console.log(`已限制阅读   尝试过验证`), this.x = result.info.key, this.c = result.info.url.split(&#34;/s/&#34;)[1], this.b = 2,
                await $.wait(6000), await this.readfinish());
                */
    } catch (e) {
        console.log(e)
    } finally {
        return Promise.resolve(1);
    }
}
async add_gold() {
    try {
         var sj = Math.random() * (7000 - 6000) + 1000
        this.url=newurl+&#39;/yunonline/v1/add_gold&#39;
        let body = &#39;unionid=&#39; + this.unionid + &#39;&amp;time=7&#39;;
        let urlObject = popu(this.url, body,this.unionid)
        //console.log(urlObject)
        await httpRequest(&#39;post&#39;, urlObject)
        let result = httpResult;
        if (result &amp;&amp; result.data) {
            console.log(&#39;获得&#39;,result.data.gold,&#39;金币&#39;)
            if (result.data.day_read == 100 || result.data.day_read == 101 ) {
                console.log(&#39;可能是检测文章,请去手动看2-3篇&#39;)
                msg += `\n======== 账号 ${this.idx} 可能遇到检测文章 ========\n`
                msg += &#39;\n前两篇文章请手动阅读\n&#39;
            } else{
                await $.wait(sj)
                await this.dotask()
            }
             

        } else {
            console.log(result)
        }
         
        /*
        &#34;success&#34; == result.msg &amp;&amp; console.log(`增加金币-&gt; ${result.info.num} 阅读次数 ${result.info.read_num} 当前金币 ${result.info.read_money}`),
            result.code &gt; 200 &amp;&amp; (console.log(`已达到阅读量 等待刷新`), this.fx = 1);
            */
    } catch (e) {
        console.log(e)
    } finally {
        return Promise.resolve(1);
    }
}
async gold() {
    try {
        let t = Date.now()
        let url = newurl+`/yunonline/v1/gold?unionid=${this.unionid}&amp;time=`+t;
        let body = ``;
        let urlObject = popu(url, body,this.unionid)
        //console.log(urlObject)
        await httpRequest(&#39;get&#39;, urlObject)
        let result = httpResult;
        //console.log(result)
         

        if (result &amp;&amp; result.data) {
            result = result.data

            console.log(`\n今日阅读数量/收益:${result.day_read}/${result.day_gold}金币 `)
            console.log(`当前余额:${result.last_gold}金币  `)
            this.fb = 1
            this.left_gold=result.last_gold
            if (result.day_read == 0 || result.day_read == 1) {
                console.log(&#39;前两篇文章请手动阅读&#39;)
                this.fb = 0
                msg += `\n======== 账号 ${this.idx} 可能遇到检测文章 ========\n`
                msg += &#39;\n前两篇文章请手动阅读\n&#39;

            } else if (result.day_read == 100 || result.day_read == 101) {
                console.log(&#39;101和102可能为检测文章,请手动阅读&#39;)
                this.fb=0
                msg += `\n======== 账号 ${this.idx} 可能遇到检测文章 ========\n`
                msg += &#39;\n前两篇文章请手动阅读\n&#39;
            }
            /*
            this.cishu = result.infoView.rest
             
            if (result.infoView.status != 1) {
                this.fb = 1
            }
            if (result.infoView.status == 3) {
               // console.log(result.infoView.msg)
                msg += &#39;&#39;
                console.log(&#39;检测文章,需手动过&#39;)
                msg += `\n${this.idx} 碰到检测文章\n`
                this.fb = 1
              
            } else if (result.infoView.status == 4) {
                console.log(result.infoView.msg)

            } else if (result.infoView.rest == 0){
                console.log(result.infoView.msg)
            }
            */
        }
    } catch (e) {
        console.log(e)
    } finally {
        return Promise.resolve(1);
    }
}


async withdrawal() {
    try {
        let t = Date.now()
        let url = newurl+`/yunonline/v1/user_gold`;
        let body = `unionid=${this.unionid}&amp;request_id=4c33a60c5f1068b83e576ca806bd4b6b&amp;gold=1000`;
        let urlObject = popu(url, body,this.unionid)
        await httpRequest(&#39;post&#39;, urlObject)
        let result = httpResult;
        if (result.msg==&#39;success&#39;) {
            result = result.data
            console.log(`\n转化获得余额 ${result.money}元 \n`)
            if (result.money &gt;= 0.3) {
                await this.doWithdraw()
            }
            /*
            if (this.f &lt; 3) console.log(`\n 不满足0.3 提现门槛\n`)
            this.f &gt;= 3 &amp;&amp; this.f &lt; 5 &amp;&amp; (this.cash = .3), this.f &gt;= 10 &amp;&amp; this.f &lt; 20 &amp;&amp; (this.cash = 1), this.f &gt;= 20 &amp;&amp; this.f &lt; 50 &amp;&amp; (this.cash = 2),
                this.f &gt;= 50 &amp;&amp; this.f &lt; 100 &amp;&amp; (this.cash = 2), this.f &gt;= 100 &amp;&amp; this.f &lt; 200 &amp;&amp; (this.cash = 10), this.f &gt;= 200 &amp;&amp; (this.cash = 20)
            if (this.f &gt;= 3) console.log(`\n可以提现 ${result.info.sum}金币 去提现 ${this.cash} 元\n`), await this.exchange()
            */

        }else{
            console.log(result)
        }
    } catch (e) {
        console.log(e)
    } finally {
        return Promise.resolve(1);
    }
}
async doWithdraw(tx) {
    try {

        let t = Date.now()
        let url = newurl+`/yunonline/v1/withdraw`;
        let body =  `unionid=${this.unionid}&amp;request_id=4c33a60c5f1068b83e576ca806bd4b6b&amp;ua=2`;
        let urlObject = popu(url, body,this.unionid)
        await httpRequest(&#39;post&#39;, urlObject)
        let result = httpResult;
        console.log(result)

    } catch (e) {
        console.log(e)
    } finally {
        return Promise.resolve(1);
    }
}
async task() {
    try {
         
        let abc = [...new Array(15).keys()]
         
        console.log(`\n=========== ${this.idx} 开始阅读文章 ===========\n`)
        await this.gold()
         
        //console.log(this.fb)
        if (this.fb == 1) {
            await this.dotask()
            await this.gold()
            //await $.wait(15000)
             
        }
        if (this.left_gold &gt;= 3000 &amp;&amp; this.istx == 1) await this.withdrawal()
         
    } catch (e) {
        console.log(e)
    } finally {
        return Promise.resolve(1);
    }
}

}

!(async () => {
if (typeof $request !== "undefined") {
await GetRewrite()
} else {
if (!(await checkEnv())) return;
if (userList.length > 0) {
//await gethost()
//console.log('获取到newurl:'+newurl)
for (let user of userList) {
await user.task()
}
if (msg.indexOf('请手动阅读') !=-1) await notify.sendNotify('微信阅读检测文章',msg)
}
}
})()
.catch((e) => console.log(e))
.finally(() => $.done())

///////////////////////////////////////////////////////////////////

async function gethost() {
try {
let t = Date.now()
let url = 'https://qun.haozhuang.cn.com/fq_url/rk';
let body = ''
let urlObject = popugethost(url, body)
await httpRequest('get', urlObject)
let result = httpResult;
//console.log(result)
if (result.jump) {
newurl = result.jump.slice(0,-1)

    }
} catch (e) {
    console.log(e)
} finally {
    return Promise.resolve(1);
}

}

async function checkEnv() {
if (userCookie) {
let splitor = envSplitor[0];
for (let sp of envSplitor) {
if (userCookie.indexOf(sp) > -1) {
splitor = sp;
break;
}
}
for (let userCookies of userCookie.split(splitor)) {
if (userCookies)
userList.push(new UserInfo(userCookies))

    }
    userCount = userList.length
} else {
}

console.log(`找到[${ckName}] 变量 ${userCount}个账号`)



return true

}

////////////////////////////////////////////////////////////////////
function popu(url, body = '',ck) {
//console.log(ck) /?upuid\u003d10314864
let host = url.replace('//', '/').split('/')[1]
let urlObject = {
url: url,
headers: {
"Host": "erd.jjt2019.top:10267",
//"content-length": "50",
"accept": "application/json, text/javascript, /; q\u003d0.01",
"x-requested-with": "XMLHttpRequest",
"user-agent": "Mozilla/5.0 (Linux; Android 12; M2012K11AC Build/SKQ1.211006.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 XWEB/5019 MMWEBSDK/20221206 Mobile Safari/537.36 MMWEBID/3684 MicroMessenger/8.0.32.2300(0x2800205D) WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64",
"content-type": "application/x-www-form-urlencoded; charset\u003dUTF-8",
//"origin": "https://erd.jjt2019.top",
"sec-fetch-site": "same-origin",
"sec-fetch-mode": "cors",
"sec-fetch-dest": "empty",
"referer": "https://erd.jjt2019.top/yunonline/v8623/redirect/156db1c3b5dd01c24254aa07a793ff15?openid\u003doUDcn6KK6c8bQ1VAVgD8PAX0OqEE\u0026unionid\u003d"+ck,
"accept-encoding": "gzip, deflate",
"accept-language": "zh-CN,zh;q\u003d0.9,en-US;q\u003d0.8,en;q\u003d0.7"
},
timeout: 5000,
}
if (body) {
urlObject.body = body
urlObject.headers['content-length'] = body.length
}

return urlObject;

}
function popugethost(url, body = '',ck) {
//console.log(ck)
let host = url.replace('//', '/').split('/')[1]
let urlObject = {
url: url,
headers: {
"Host": "qun.haozhuang.cn.com",
"User-Agent": "Mozilla/5.0 (Linux; Android 12; M2012K11AC Build/SKQ1.211006.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 XWEB/4425 MMWEBSDK/20221206 Mobile Safari/537.36 MMWEBID/4883 MicroMessenger/8.0.32.2300(0x2800205D) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64",
"Accept": "/",
"Origin": "https://kygj0209122405-1316151879.cos.ap-nanjing.myqcloud.com",
"X-Requested-With": "com.tencent.mm",
"Referer": "https://kygj0209122405-1316151879.cos.ap-nanjing.myqcloud.com/index.html?upuid\u003d10315076"
},
timeout: 5000,
}
if (body) {
urlObject.body = body
}

return urlObject;

}

async function httpRequest(method, url) {
//console.log(url)
httpResult = null, httpReq = null, httpResp = null;
return new Promise((resolve) => {
$.send(method, url, async (err, req, resp) => {
try {
httpReq = req;
httpResp = resp;
if (err) {
} else {
if (resp.body) {
if (typeof resp.body == "object") {
httpResult = resp.body;
} else {
try {
httpResult = JSON.parse(resp.body);
} catch (e) {
httpResult = resp.body;
}
}
}
}
} catch (e) {
console.log(e);
} finally {
resolve();
}
});
});
}
////////////////////////////////////////////////////////////////////
function Env(a, b) {
return "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0), new class {
constructor(a, b) {
this.name = a, this.notifyStr = "", this.startTime = (new Date).getTime(), Object.assign(this, b), console.log(${this.name} 开始运行: )
/*

  • 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释
  • } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof task } isSurge() { return &#34;undefined&#34; != typeof httpClient && "undefined" == typeof loon } isLoon() { return &#34;undefined&#34; != typeof loon } getdata(b) { let a = this.getval(b); if (/^@/.test(b)) { let [, c, f] = /^@(.?).(.?)/.exec(b), d = c ? this.getval(c) : &#34;&#34;; if (d) try { let e = JSON.parse(d); a = e ? this.lodash_get(e, f, &#34;&#34;) : a } catch (g) { a = &#34;&#34; } } return a } setdata(c, d) { let a = !1; if (/^@/.test(d)) { let [, b, e] = /^@(.*?)\.(.*?)/.exec(d), f = this.getval(b), i = b ? "null" === f ? null : f || "{}" : "{}"; try { let g = JSON.parse(i); this.lodash_set(g, e, c), a = this.setval(JSON.stringify(g), b) } catch (j) { let h = {}; this.lodash_set(h, e, c), a = this.setval(JSON.stringify(h), b) } } else a = this.setval(c, d); return a } getval(a) { return this.isSurge() || this.isLoon() ? persistentStore.read(a) : this.isQuanX() ? prefs.valueForKey(a) : this.isNode() ? (this.data = this.loaddata(), this.data[a]) : this.data && this.data[a] || null } setval(b, a) { return this.isSurge() || this.isLoon() ? persistentStore.write(b, a) : this.isQuanX() ? prefs.setValueForKey(b, a) : this.isNode() ? (this.data = this.loaddata(), this.data[a] = b, this.writedata(), !0) : this.data && this.data[a] || null } send(b, a, f = () => { }) { if ("get" != b && "post" != b && "put" != b && "delete" != b) { console.log(无效的http方法:${b}); return } if ("get" == b && a.headers ? (delete a.headers["Content-Type"], delete a.headers["Content-Length"]) : a.body && a.headers && (a.headers["Content-Type"] || (a.headers["Content-Type"] = "application/x-www-form-urlencoded")), this.isSurge() || this.isLoon()) { this.isSurge() && this.isNeedRewrite && (a.headers = a.headers || {}, Object.assign(a.headers, { "X-Surge-Skip-Scripting": !1 })); let c = { method: b, url: a.url, headers: a.headers, timeout: a.timeout, data: a.body }; "get" == b && delete c.data, axios(c).then(a =&gt; { let { status: b, request: c, headers: d, data: e } = a; f(null, c, { statusCode: b, headers: d, body: e }) }).catch(a =&gt; console.log(a)) } else if (this.isQuanX()) a.method = b.toUpperCase(), this.isNeedRewrite &amp;&amp; (a.opts = a.opts || {}, Object.assign(a.opts, { hints: !1 })), task.fetch(a).then(a => { let { statusCode: b, request: c, headers: d, body: e } = a; f(null, c, { statusCode: b, headers: d, body: e }) }, a => f(a)); else if (this.isNode()) { this.got = this.got ? this.got : require("got"); let { url: d, ...e } = a; this.instance = this.got.extend({ followRedirect: !1 }), this.instance[b](d, e).then(a => { let { statusCode: b, request: c, headers: d, body: e } = a; f(null, c, { statusCode: b, headers: d, body: e }) }, b => { let { message: c, response: a } = b; f(c, a, a && a.body) }) } } time(a) { let b = { "M+": (new Date).getMonth() + 1, "d+": (new Date).getDate(), "h+": (new Date).getHours(), "m+": (new Date).getMinutes(), "s+": (new Date).getSeconds(), "q+": Math.floor(((new Date).getMonth() + 3) / 3), S: (new Date).getMilliseconds() }; for (let c in /(y+)/.test(a) && (a = a.replace(RegExp.$1, ((new Date).getFullYear() + "").substr(4 - RegExp.$1.length))), b) new RegExp("(" + c + ")").test(a) && (a = a.replace(RegExp.$1, 1 == RegExp.$1.length ? b[c] : ("00" + b[c]).substr(("" + b[c]).length))); return a } async showmsg() { if (!this.notifyStr) return; let a = this.name + " \u8FD0\u884C\u901A\u77E5\n\n" + this.notifyStr; if (.isNode()) { var b = require(&#34;./sendNotify&#34;); console.log(&#34;\n============== \u63A8\u9001 ==============&#34;), await b.sendNotify(this.name, a) } else this.msg(a) } logAndNotify(a) { console.log(a), this.notifyStr += a, this.notifyStr += &#34;\n&#34; } msg(d = t, a = &#34;&#34;, b = &#34;&#34;, e) { let f = a =&gt; { if (!a) return a; if (&#34;string&#34; == typeof a) return this.isLoon() ? a : this.isQuanX() ? { &#34;open-url&#34;: a } : this.isSurge() ? { url: a } : void 0; if (&#34;object&#34; == typeof a) { if (this.isLoon()) { let b = a.openUrl || a.url || a[&#34;open-url&#34;], c = a.mediaUrl || a[&#34;media-url&#34;]; return { openUrl: b, mediaUrl: c } } if (this.isQuanX()) { let d = a[&#34;open-url&#34;] || a.url || a.openUrl, e = a[&#34;media-url&#34;] || a.mediaUrl; return { &#34;open-url&#34;: d, &#34;media-url&#34;: e } } if (this.isSurge()) return { url: a.url || a.openUrl || a[&#34;open-url&#34;] } } }; this.isMute || (this.isSurge() || this.isLoon() ? notification.post(d, a, b, f(e)) : this.isQuanX() && $notify(d, a, b, f(e))); let c = ["", "============== \u7CFB\u7EDF\u901A\u77E5 =============="]; c.push(d), a && c.push(a), b && c.push(b), console.log(c.join("\n")) } getMin(a, b) { return a < b ? a : b } getMax(a, b) { return a < b ? b : a } padStr(e, b, f = "0") { let a = String(e), g = b > a.length ? b - a.length : 0, c = ""; for (let d = 0; d < g; d++)c += f; return c + a } json2str(b, e, f = !1) { let c = []; for (let d of Object.keys(b).sort()) { let a = b[d]; a && f && (a = encodeURIComponent(a)), c.push(d + "=" + a) } return c.join(e) } str2json(e, f = !1) { let d = {}; for (let a of e.split("#")) { if (!a) continue; let b = a.indexOf("="); if (-1 == b) continue; let g = a.substr(0, b), c = a.substr(b + 1); f && (c = decodeURIComponent(c)), d[g] = c } return d } randomString(d, a = "abcdef0123456789") { let b = ""; for (let c = 0; c < d; c++)b += a.charAt(Math.floor(Math.random() * a.length)); return b } randomList(a) { let b = Math.floor(Math.random() * a.length); return a[b] } wait(a) { return new Promise(b => setTimeout(b, a)) } done(a = {}) {
    */
    let b = (new Date).getTime(), c = (b - this.startTime) / 1e3; console.log( ${this.name} 运行结束,共运行了 ${c} 秒!), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(a)
    }
    }(a, b)
    }

脚本链接链接: https://pan.baidu.com/s/1aeZJzX2YsSmRel34YqoS-g 提取码: 52pj