11/*
2- 更新时间: 2021-02-24 20 :00
2+ 更新时间: 2021-02-24 23 :00
33Github Actions使用方法见[@lxk0301](https://raw.githubusercontent.com/lxk0301/scripts/master/githubAction.md) 使用方法大同小异
44
5- 中青看点浏览赚任务,手动完成任务,获取请求体,支持boxjs及Github Actions,多请求用"&"分开,支持自动获取请求
5+ 中青看点浏览赚任务,手动完成任务,获取请求体,支持boxjs及Github Actions,多请求用"&"分开,点击任务, 支持自动获取请求
66
77https:\/\/ios\.baertt\.com\/v5\/task\/browse_start\.json url script-request-body youth_gain.js
88
9+ https:\/\/ios\.baertt\.com\/v5\/Nameless\/adlickstart\.json url script-request-body youth_gain.js
10+
911
1012多个请求体时用'&'号或者换行隔开",本脚本可自动删除失效请求,请须知 ‼️
1113
1214*/
1315
1416
15- const $ = new Env ( "中青看点浏览赚" )
17+ const $ = new Env ( "中青看点浏览赚&看看赚 " )
1618//const notify = $.isNode() ? require('./sendNotify') : '';
17- let startArr = [ ] , gainscore = 0 ;
19+ let startArr = [ ] , lookArr = [ ] ;
20+ let gainscore = 0 , lookscore = 0 ;
21+ let StartBody = [ ] , LookBody = [ ] ;
1822let startbodys = $ . getdata ( 'youth_start' ) ;
23+ let lookbodys = $ . getdata ( 'youth_look' )
1924
2025if ( isGetCookie = typeof $request !== `undefined` ) {
2126 GetCookie ( ) ;
2227 $ . done ( )
2328}
24- if ( ! $ . isNode ( ) && ! startbodys ) {
29+ if ( ! $ . isNode ( ) && ! startbodys && ! lookbodys ) {
2530 $ . msg ( $ . name , "您未获取任何请求,请先获取" ) ;
2631 return
2732} else if ( ! $ . isNode ( ) && ! startbodys . indexOf ( "&" ) == - 1 ) {
2833 startArr . push ( startbodys )
34+ }
35+ if ( ! $ . isNode ( ) && ! lookbodys . indexOf ( "&" ) == - 1 ) {
36+ lookArr . push ( lookbodys )
2937} else {
3038 if ( ! $ . isNode ( ) && ! startbodys . indexOf ( "&" ) > - 1 ) {
3139 StartBody = startbodys . split ( '&' ) ;
3240 }
41+ if ( ! $ . isNode ( ) && ! lookbodys . indexOf ( "&" ) > - 1 ) {
42+ LookBody = lookbodys . split ( '&' ) ;
43+ }
3344 if ( $ . isNode ( ) ) {
3445 if ( process . env . YOUTH_START && process . env . YOUTH_START . indexOf ( '&' ) > - 1 ) {
3546 StartBody = process . env . YOUTH_START . split ( '&' ) ;
3647 } else {
3748 StartBody = [ process . env . YOUTH_START ]
49+ } ;
50+ if ( process . env . YOUTH_LOOK && process . env . YOUTH_LOOK . indexOf ( '&' ) > - 1 ) {
51+ LookBody = process . env . YOUTH_LOOK . split ( '&' ) ;
52+ } else {
53+ LookBody = [ process . env . YOUTH_LOOK ]
3854 }
3955 }
4056 Object . keys ( StartBody ) . forEach ( ( item ) => {
4157 if ( StartBody [ item ] ) {
4258 startArr . push ( StartBody [ item ] )
4359 }
60+ } ) ;
61+ Object . keys ( LookBody ) . forEach ( ( item ) => {
62+ if ( LookBody [ item ] ) {
63+ lookArr . push ( LookBody [ item ] )
64+ }
4465 } )
4566}
4667 timeZone = new Date ( ) . getTimezoneOffset ( ) / 60 ;
@@ -55,10 +76,23 @@ if (!$.isNode() && !startbodys) {
5576 $ . index = i + 1 ;
5677 $ . log ( `-------------------------\n\n开始中青看点浏览赚第${ $ . index } 次任务` )
5778 }
58- await GainStart ( ) ;
79+ // await GainStart();
5980 }
6081 console . log ( `-------------------------\n\n中青看点共完成${ $ . index } 次任务,共计获得${ gainscore } 个青豆,浏览赚任务全部结束` ) ;
61- $ . msg ( $ . name , `共完成${ $ . index } 次任务` , `共计获得${ gainscore } 个青豆` )
82+ //$.msg("中青看点浏览赚", `共完成${$.index}次任务`+` 共计获得${gainscore}个青豆`);
83+
84+ $ . log ( `\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n您共提供${ lookArr . length } 次看看赚任务\n` )
85+ for ( let k = 0 ; k < lookArr . length ; k ++ ) {
86+ if ( lookArr [ k ] ) {
87+ lookbody = lookArr [ k ] ;
88+ $ . index = k + 1 ;
89+ $ . log ( `-------------------------\n\n开始中青看点看看赚第${ $ . index } 次任务` )
90+ }
91+ await lookStart ( ) ;
92+ }
93+ console . log ( `-------------------------\n\n中青看点共完成${ $ . index } 次任务,共计获得${ lookscore } 个青豆,看看赚任务全部结束` ) ;
94+ $ . msg ( "中青看点看看赚" , '共完成' + ( lookArr . length + startArr . length ) + '次任务,共计获得' + parseInt ( lookscore + gainscore ) + '个青豆' ) ;
95+
6296 if ( $ . isNode ( ) ) {
6397 //await notify.sendNotify($.name,`共完成${$.index}次任务,\n共计获得${gainscore}个青豆`
6498}
@@ -68,7 +102,7 @@ if (!$.isNode() && !startbodys) {
68102
69103function GainStart ( ) {
70104 return new Promise ( ( resolve , reject ) => {
71- $ . post ( gainHost ( 'browse_start.json' ) , async ( error , resp , data ) => {
105+ $ . post ( gainHost ( 'task/ browse_start.json' , gainbody ) , async ( error , resp , data ) => {
72106 let startres = JSON . parse ( data ) ;
73107 if ( startres . success == false ) {
74108 gainbodys = gainbody == startArr [ 0 ] ?gainbody :"&" + gainbody ;
@@ -90,10 +124,39 @@ function GainStart() {
90124 } )
91125 } )
92126}
127+
128+ function lookStart ( ) {
129+ return new Promise ( ( resolve , reject ) => {
130+ $ . post ( gainHost ( 'Nameless/adlickstart.json' , lookbody ) , async ( error , resp , data ) => {
131+ startlk = JSON . parse ( data ) ;
132+ if ( startlk . success == false ) {
133+ seebodys = lookbodys == startArr [ 0 ] ?lookbodys :"&" + lookbodys ;
134+ smbody = $ . getdata ( 'youth_start' ) . replace ( gainbodys , "" ) ;
135+ $ . setdata ( smbody , 'youth_start' ) ;
136+ $ . log ( startlk . message + "已自动删除" )
137+ } else {
138+ comstate = startlk . items . comtele_state ;
139+ if ( comstate == 0 ) {
140+ $ . log ( "任务开始," + startlk . items . banner_id + startlk . message ) ;
141+ for ( let j = 0 ; j < startlk . items . see_num - startlk . items . read_num ; j ++ ) {
142+ $ . log ( "任务执行第" + parseInt ( j + 1 ) + "次" )
143+ await $ . wait ( 8000 ) ;
144+ await lookstatus ( )
145+ }
146+ await $ . wait ( 10000 ) ;
147+ await lookEnd ( )
148+ } else if ( comstate == 1 ) {
149+ $ . log ( "任务:" + startlk . items . banner_id + "已完成,本次跳过" ) ;
150+ }
151+ }
152+ resolve ( )
153+ } )
154+ } )
155+ }
93156
94157function GainEnd ( ) {
95158 return new Promise ( ( resolve , reject ) => {
96- $ . post ( gainHost ( 'browse_end.json' ) , ( error , resp , data ) => {
159+ $ . post ( gainHost ( 'task/ browse_end.json' , gainbody ) , ( error , resp , data ) => {
97160 let endres = JSON . parse ( data ) ;
98161 if ( endres . success == true ) {
99162 $ . log ( "任务" + endres . items . banner_id + endres . message + ",恭喜获得" + endres . items . score + "个青豆" ) ;
@@ -106,18 +169,46 @@ function GainEnd() {
106169 } )
107170}
108171
109- function gainHost ( api ) {
172+ function lookstatus ( ) {
173+ return new Promise ( ( resolve , reject ) => {
174+ $ . post ( gainHost ( 'Nameless/bannerstatus.json' , lookbody ) , ( error , resp , data ) => {
175+ let endres = JSON . parse ( data ) ;
176+ if ( endres . success == true ) {
177+ $ . log ( "任务" + endres . items . banner_id + endres . message + ",恭喜获得" + endres . items . score + "个青豆" ) ;
178+ lookscore += parseInt ( endres . items . score )
179+ } else {
180+ $ . log ( endres . message )
181+ }
182+ resolve ( )
183+ } )
184+ } )
185+ }
186+ function lookEnd ( ) {
187+ return new Promise ( ( resolve , reject ) => {
188+ $ . post ( gainHost ( 'Nameless/adlickend.json' , lookbody ) , ( error , resp , data ) => {
189+ let endres = JSON . parse ( data ) ;
190+ if ( endres . success == true ) {
191+ $ . log ( "任务" + endres . items . banner_id + endres . message )
192+ } else {
193+ $ . log ( endres . message )
194+ }
195+ resolve ( )
196+ } )
197+ } )
198+ }
199+ function gainHost ( api , body ) {
110200 return {
111- url : 'https://ios.baertt.com/v5/task/ ' + api ,
201+ url : 'https://ios.baertt.com/v5/' + api ,
112202 headers : {
113203 'User-Agent' : 'KDApp/1.7.8 (iPhone; iOS 14.0; Scale/3.00)' ,
114204 'Host' : 'ios.baertt.com' ,
115205 'Content-Type' : 'application/x-www-form-urlencoded'
116206 } ,
117- body : gainbody
207+ body : body
118208 }
119209}
120210
211+
121212function GetCookie ( ) {
122213 if ( $request && $request . method != 'OPTIONS' && $request . url . match ( / \/ b r o w s e _ s t a r t \. j s o n / ) ) {
123214 startbodyVal = $request . body ;
@@ -134,7 +225,23 @@ function GetCookie() {
134225 $ . setdata ( startbodys , 'youth_start' ) ;
135226 $ . log ( "获取浏览赚请求: " + startbodyVal ) ;
136227 $ . msg ( $ . name , '获取浏览赚请求成功' )
137- } ;
228+ } else if ( $request && $request . method != 'OPTIONS' && $request . url . match ( / \/ a d l i c k s t a r t \. j s o n / ) ) {
229+ seeVal = $request . body ;
230+ if ( lookbodys ) {
231+ if ( lookbodys . indexOf ( seeVal ) > - 1 ) {
232+ $ . msg ( $ . name , '阅读请求重复,本次跳过' ) ;
233+ return
234+ } else if ( lookbodys . indexOf ( seeVal ) == - 1 ) {
235+ lookbodys += "&" + seeVal
236+ $ . msg ( $ . name , '获取看看赚请求' + lookbodys . split ( "&" ) . length + '成功' )
237+ }
238+ } else {
239+ lookbodys = $request . body
240+ $ . msg ( $ . name , '获取看看赚请求成功' )
241+ }
242+ $ . setdata ( lookbodys , 'youth_look' ) ;
243+ $ . log ( "获取浏览赚请求: " + seeVal )
244+ }
138245}
139246
140247function Env ( t , e ) { class s { constructor ( t ) { this . env = t } send ( t , e = "GET" ) { t = "string" == typeof t ?{ url :t } :t ; let s = this . get ; return "POST" === e && ( s = this . post ) , new Promise ( ( e , i ) => { s . call ( this , t , ( t , s , r ) => { t ?i ( t ) :e ( s ) } ) } ) } get ( t ) { return this . send . call ( this . env , t ) } post ( t ) { return this . send . call ( this . env , t , "POST" ) } } return new class { constructor ( t , e ) { this . name = t , this . http = new s ( this ) , this . data = null , this . dataFile = "box.dat" , this . logs = [ ] , this . isMute = ! 1 , this . isNeedRewrite = ! 1 , this . logSeparator = "\n" , this . startTime = ( new Date ) . getTime ( ) , Object . assign ( this , e ) , this . log ( "" , `\ud83d\udd14${ this . name } , \u5f00\u59cb!` ) } isNode ( ) { return "undefined" != typeof module && ! ! module . exports } isQuanX ( ) { return "undefined" != typeof $task } isSurge ( ) { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon ( ) { return "undefined" != typeof $loon } toObj ( t , e = null ) { try { return JSON . parse ( t ) } catch { return e } } toStr ( t , e = null ) { try { return JSON . stringify ( t ) } catch { return e } } getjson ( t , e ) { let s = e ; const i = this . getdata ( t ) ; if ( i ) try { s = JSON . parse ( this . getdata ( t ) ) } catch { } return s } setjson ( t , e ) { try { return this . setdata ( JSON . stringify ( t ) , e ) } catch { return ! 1 } } getScript ( t ) { return new Promise ( e => { this . get ( { url :t } , ( t , s , i ) => e ( i ) ) } ) } runScript ( t , e ) { return new Promise ( s => { let i = this . getdata ( "@chavy_boxjs_userCfgs.httpapi" ) ; i = i ?i . replace ( / \n / g, "" ) . trim ( ) :i ; let r = this . getdata ( "@chavy_boxjs_userCfgs.httpapi_timeout" ) ; r = r ?1 * r :20 , r = e && e . timeout ?e . timeout :r ; const [ o , h ] = i . split ( "@" ) , a = { url :`http://${ h } /v1/scripting/evaluate` , body :{ script_text :t , mock_type :"cron" , timeout :r } , headers :{ "X-Key" :o , Accept :"*/*" } } ; this . post ( a , ( t , e , i ) => s ( i ) ) } ) . catch ( t => this . logErr ( t ) ) } loaddata ( ) { if ( ! this . isNode ( ) ) return { } ; { this . fs = this . fs ?this . fs :require ( "fs" ) , this . path = this . path ?this . path :require ( "path" ) ; const t = this . path . resolve ( this . dataFile ) , e = this . path . resolve ( process . cwd ( ) , this . dataFile ) , s = this . fs . existsSync ( t ) , i = ! s && this . fs . existsSync ( e ) ; if ( ! s && ! i ) return { } ; { const i = s ?t :e ; try { return JSON . parse ( this . fs . readFileSync ( i ) ) } catch ( t ) { return { } } } } } writedata ( ) { if ( this . isNode ( ) ) { this . fs = this . fs ?this . fs :require ( "fs" ) , this . path = this . path ?this . path :require ( "path" ) ; const t = this . path . resolve ( this . dataFile ) , e = this . path . resolve ( process . cwd ( ) , this . dataFile ) , s = this . fs . existsSync ( t ) , i = ! s && this . fs . existsSync ( e ) , r = JSON . stringify ( this . data ) ; s ?this . fs . writeFileSync ( t , r ) :i ?this . fs . writeFileSync ( e , r ) :this . fs . writeFileSync ( t , r ) } } lodash_get ( t , e , s ) { const i = e . replace ( / \[ ( \d + ) \] / g, ".$1" ) . split ( "." ) ; let r = t ; for ( const t of i ) if ( r = Object ( r ) [ t ] , void 0 === r ) return s ; return r } lodash_set ( t , e , s ) { return Object ( t ) !== t ?t :( Array . isArray ( e ) || ( e = e . toString ( ) . match ( / [ ^ . [ \] ] + / g) || [ ] ) , e . slice ( 0 , - 1 ) . reduce ( ( t , s , i ) => Object ( t [ s ] ) === t [ s ] ?t [ s ] :t [ s ] = Math . abs ( e [ i + 1 ] ) >> 0 == + e [ i + 1 ] ?[ ] :{ } , t ) [ e [ e . length - 1 ] ] = s , t ) } getdata ( t ) { let e = this . getval ( t ) ; if ( / ^ @ / . test ( t ) ) { const [ , s , i ] = / ^ @ ( .* ?) \. ( .* ?) $ / . exec ( t ) , r = s ?this . getval ( s ) :"" ; if ( r ) try { const t = JSON . parse ( r ) ; e = t ?this . lodash_get ( t , i , "" ) :e } catch ( t ) { e = "" } } return e } setdata ( t , e ) { let s = ! 1 ; if ( / ^ @ / . test ( e ) ) { const [ , i , r ] = / ^ @ ( .* ?) \. ( .* ?) $ / . exec ( e ) , o = this . getval ( i ) , h = i ?"null" === o ?null :o || "{}" :"{}" ; try { const e = JSON . parse ( h ) ; this . lodash_set ( e , r , t ) , s = this . setval ( JSON . stringify ( e ) , i ) } catch ( e ) { const o = { } ; this . lodash_set ( o , r , t ) , s = this . setval ( JSON . stringify ( o ) , i ) } } else s = this . setval ( t , e ) ; return s } getval ( t ) { return this . isSurge ( ) || this . isLoon ( ) ?$persistentStore . read ( t ) :this . isQuanX ( ) ?$prefs . valueForKey ( t ) :this . isNode ( ) ?( this . data = this . loaddata ( ) , this . data [ t ] ) :this . data && this . data [ t ] || null } setval ( t , e ) { return this . isSurge ( ) || this . isLoon ( ) ?$persistentStore . write ( t , e ) :this . isQuanX ( ) ?$prefs . setValueForKey ( t , e ) :this . isNode ( ) ?( this . data = this . loaddata ( ) , this . data [ e ] = t , this . writedata ( ) , ! 0 ) :this . data && this . data [ e ] || null } initGotEnv ( t ) { this . got = this . got ?this . got :require ( "got" ) , this . cktough = this . cktough ?this . cktough :require ( "tough-cookie" ) , this . ckjar = this . ckjar ?this . ckjar :new this . cktough . CookieJar , t && ( t . headers = t . headers ?t . headers :{ } , void 0 === t . headers . Cookie && void 0 === t . cookieJar && ( t . cookieJar = this . ckjar ) ) } get ( t , e = ( ( ) => { } ) ) { t . headers && ( delete t . headers [ "Content-Type" ] , delete t . headers [ "Content-Length" ] ) , this . isSurge ( ) || this . isLoon ( ) ?( this . isSurge ( ) && this . isNeedRewrite && ( t . headers = t . headers || { } , Object . assign ( t . headers , { "X-Surge-Skip-Scripting" :! 1 } ) ) , $httpClient . get ( t , ( t , s , i ) => { ! t && s && ( s . body = i , s . statusCode = s . status ) , e ( t , s , i ) } ) ) :this . isQuanX ( ) ?( this . isNeedRewrite && ( t . opts = t . opts || { } , Object . assign ( t . opts , { hints :! 1 } ) ) , $task . fetch ( t ) . then ( t => { const { statusCode :s , statusCode :i , headers :r , body :o } = t ; e ( null , { status :s , statusCode :i , headers :r , body :o } , o ) } , t => e ( t ) ) ) :this . isNode ( ) && ( this . initGotEnv ( t ) , this . got ( t ) . on ( "redirect" , ( t , e ) => { try { if ( t . headers [ "set-cookie" ] ) { const s = t . headers [ "set-cookie" ] . map ( this . cktough . Cookie . parse ) . toString ( ) ; this . ckjar . setCookieSync ( s , null ) , e . cookieJar = this . ckjar } } catch ( t ) { this . logErr ( t ) } } ) . then ( t => { const { statusCode :s , statusCode :i , headers :r , body :o } = t ; e ( null , { status :s , statusCode :i , headers :r , body :o } , o ) } , t => { const { message :s , response :i } = t ; e ( s , i , i && i . body ) } ) ) } post ( t , e = ( ( ) => { } ) ) { if ( t . body && t . headers && ! t . headers [ "Content-Type" ] && ( t . headers [ "Content-Type" ] = "application/x-www-form-urlencoded" ) , t . headers && delete t . headers [ "Content-Length" ] , this . isSurge ( ) || this . isLoon ( ) ) this . isSurge ( ) && this . isNeedRewrite && ( t . headers = t . headers || { } , Object . assign ( t . headers , { "X-Surge-Skip-Scripting" :! 1 } ) ) , $httpClient . post ( t , ( t , s , i ) => { ! t && s && ( s . body = i , s . statusCode = s . status ) , e ( t , s , i ) } ) ; else if ( this . isQuanX ( ) ) t . method = "POST" , this . isNeedRewrite && ( t . opts = t . opts || { } , Object . assign ( t . opts , { hints :! 1 } ) ) , $task . fetch ( t ) . then ( t => { const { statusCode :s , statusCode :i , headers :r , body :o } = t ; e ( null , { status :s , statusCode :i , headers :r , body :o } , o ) } , t => e ( t ) ) ; else if ( this . isNode ( ) ) { this . initGotEnv ( t ) ; const { url :s , ...i } = t ; this . got . post ( s , i ) . then ( t => { const { statusCode :s , statusCode :i , headers :r , body :o } = t ; e ( null , { status :s , statusCode :i , headers :r , body :o } , o ) } , t => { const { message :s , response :i } = t ; e ( s , i , i && i . body ) } ) } } time ( t ) { let e = { "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 ( ) } ; / ( y + ) / . test ( t ) && ( t = t . replace ( RegExp . $1 , ( ( new Date ) . getFullYear ( ) + "" ) . substr ( 4 - RegExp . $1 . length ) ) ) ; for ( let s in e ) new RegExp ( "(" + s + ")" ) . test ( t ) && ( t = t . replace ( RegExp . $1 , 1 == RegExp . $1 . length ?e [ s ] :( "00" + e [ s ] ) . substr ( ( "" + e [ s ] ) . length ) ) ) ; return t } msg ( e = t , s = "" , i = "" , r ) { const o = t => { if ( ! t ) return t ; if ( "string" == typeof t ) return this . isLoon ( ) ?t :this . isQuanX ( ) ?{ "open-url" :t } :this . isSurge ( ) ?{ url :t } :void 0 ; if ( "object" == typeof t ) { if ( this . isLoon ( ) ) { let e = t . openUrl || t . url || t [ "open-url" ] , s = t . mediaUrl || t [ "media-url" ] ; return { openUrl :e , mediaUrl :s } } if ( this . isQuanX ( ) ) { let e = t [ "open-url" ] || t . url || t . openUrl , s = t [ "media-url" ] || t . mediaUrl ; return { "open-url" :e , "media-url" :s } } if ( this . isSurge ( ) ) { let e = t . url || t . openUrl || t [ "open-url" ] ; return { url :e } } } } ; this . isMute || ( this . isSurge ( ) || this . isLoon ( ) ?$notification . post ( e , s , i , o ( r ) ) :this . isQuanX ( ) && $notify ( e , s , i , o ( r ) ) ) ; let h = [ "" , "==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3==============" ] ; h . push ( e ) , s && h . push ( s ) , i && h . push ( i ) , console . log ( h . join ( "\n" ) ) , this . logs = this . logs . concat ( h ) } log ( ...t ) { t . length > 0 && ( this . logs = [ ...this . logs , ...t ] ) , console . log ( t . join ( this . logSeparator ) ) } logErr ( t , e ) { const s = ! this . isSurge ( ) && ! this . isQuanX ( ) && ! this . isLoon ( ) ; s ?this . log ( "" , `\u2757\ufe0f${ this . name } , \u9519\u8bef!` , t . stack ) :this . log ( "" , `\u2757\ufe0f${ this . name } , \u9519\u8bef!` , t ) } wait ( t ) { return new Promise ( e => setTimeout ( e , t ) ) } done ( t = { } ) { const e = ( new Date ) . getTime ( ) , s = ( e - this . startTime ) / 1e3 ; this . log ( "" , `\ud83d\udd14${ this . name } , \u7ed3\u675f! \ud83d\udd5b ${ s } \u79d2` ) , this . log ( ) , ( this . isSurge ( ) || this . isQuanX ( ) || this . isLoon ( ) ) && $done ( t ) } } ( t , e ) }
0 commit comments