/ *
舒淇小说
大约每天5 - 8 毛 , 看你能抓到几个不同的广告视频
1.0 iv : 3 hhvbe , 672181
下载 【 书旗小说 】 , 新用户必得现金红包 !
点击下方链接下载吧 !
https : //t2.shuqi.com/s/p/sid?inviteCode=3hhvbe,672181
抓完包升级到最新版本4 . 61 , 可以领取一周的新手打卡奖励
is分享 80 vip Th3yST5cRVJr
定时 一天一次
提现 ( 微信10 , 支付宝15 ) 要手动刷时长 抓取链接 : / collection / iosapi / reading / upload 重放50次
要接验证码 , 接码请小心
支持多用户 , 支持v2p , 青龙
ios 4.31 福利中心 签到 - 气泡 - 转转转抽奖 - 看视频赚金币
v2p重写
/ a p i / a c t i v i t y / x a p i / g o l d / w i t h d r a w / i n f o s q . j s
/ a p i / a c t i v i t y / x a p i / s i g n i n / v 5 / s i g n I n A c t i o n s q . j s
/ a p i / p r i z e c e n t e r / x a p i / p r i z e / m a n u a l / r e c e i v e s q . j s
/ a p i / a d / u n i o n / s d k / r e w a r d _ v i d e o / r e w a r d / s q . j s
/ a p i / a c t i v i t y / a c t i v i t y / v 1 / l o t t e r y / d r a w s q . j s
mitm :
ocean . shuqireader . com
api - access . pangolin - sdk - toutiao . com
青龙 : 回车符分割
export sqinfo = ''
export sqsign = ''
export sqreceive = ''
export sqlottery = ''
export sqreward = ''
定时 : 一天1 - 2 次 , 8 - 9 点执行签到 。 参考定时 10 7 , 8 * * * task sq . js
* /
const _0 x2d5d62 = _0 x1e29 ; ( function ( _0 x1b61f9 , _0 x3597a0 ) { const _0 x142b9b = _0 x1e29 , _0 x486501 = _0 x1b61f9 ( ) ; while ( ! ! [ ] ) { try { const _0 x144b96 = parseInt ( _0 x142b9b ( 0x1f8 ) ) / 0x1 + - parseInt ( _0 x142b9b ( 0x1f7 ) ) / 0x2 * ( parseInt ( _0 x142b9b ( 0x21c ) ) / 0x3 ) + - parseInt ( _0 x142b9b ( 0x22b ) ) / 0x4 + - parseInt ( _0 x142b9b ( 0x21f ) ) / 0x5 * ( parseInt ( _0 x142b9b ( 0x247 ) ) / 0x6 ) + - parseInt ( _0 x142b9b ( 0x232 ) ) / 0x7 + - parseInt ( _0 x142b9b ( 0x231 ) ) / 0x8 + - parseInt ( _0 x142b9b ( 0x1ee ) ) / 0x9 * ( - parseInt ( _0 x142b9b ( 0x20e ) ) / 0xa ) ; if ( _0 x144b96 === _0 x3597a0 ) break ; else _0 x486501 [ 'push' ] ( _0 x486501 [ 'shift' ] ( ) ) ; } catch ( _0 x37404f ) { _0 x486501 [ 'push' ] ( _0 x486501 [ 'shift' ] ( ) ) ; } } } ( _0 x14af , 0x67a2a ) ) ; const jsname = '舒淇' , $ = Env ( jsname ) , notify = $ [ _0 x2d5d62 ( 0x242 ) ] ( ) ? require ( _0 x2d5d62 ( 0x25d ) ) : '' , notifyFlag = ( $ [ _0 x2d5d62 ( 0x242 ) ] ( ) ? process [ _0 x2d5d62 ( 0x218 ) ] [ _0 x2d5d62 ( 0x203 ) ] : $ [ _0 x2d5d62 ( 0x257 ) ] ( _0 x2d5d62 ( 0x203 ) ) ) || 0x1 ; let money1 = 0x0 , money2 = 0x0 , phone = '' , tsxx = _0 x2d5d62 ( 0x24c ) , sqsign = ( $ [ _0 x2d5d62 ( 0x242 ) ] ( ) ? process [ _0 x2d5d62 ( 0x218 ) ] [ _0 x2d5d62 ( 0x220 ) ] : $ [ _0 x2d5d62 ( 0x257 ) ] ( _0 x2d5d62 ( 0x220 ) ) ) || '' , sqsignArr = [ ] , sqreceive = ( $ [ _0 x2d5d62 ( 0x242 ) ] ( ) ? process [ _0 x2d5d62 ( 0x218 ) ] [ _0 x2d5d62 ( 0x250 ) ] : $ [ _0 x2d5d62 ( 0x257 ) ] ( _0 x2d5d62 ( 0x250 ) ) ) || '' , sqreceiveArr = [ ] , sqreward = ( $ [ _0 x2d5d62 ( 0x242 ) ] ( ) ? process [ _0 x2d5d62 ( 0x218 ) ] [ 'sqreward' ] : $ [ _0 x2d5d62 ( 0x257 ) ] ( _0 x2d5d62 ( 0x262 ) ) ) || '' , sqrewardArr = [ ] , sqinfo = ( $ [ _0 x2d5d62 ( 0x242 ) ] ( ) ? process [ _0 x2d5d62 ( 0x218 ) ] [ _0 x2d5d62 ( 0x205 ) ] : $ [ _0 x2d5d62 ( 0x257 ) ] ( _0 x2d5d62 ( 0x205 ) ) ) || '' , sqinfoArr = [ ] , sqlottery = ( $ [ 'isNode' ] ( ) ? process [ _0 x2d5d62 ( 0x218 ) ] [ _0 x2d5d62 ( 0x1f3 ) ] : $ [ _0 x2d5d62 ( 0x257 ) ] ( _0 x2d5d62 ( 0x1f3 ) ) ) || '' , sqlotteryArr = [ ] ; const hour = new Date ( new Date ( ) [ _0 x2d5d62 ( 0x254 ) ] ( ) + new Date ( ) [ _0 x2d5d62 ( 0x255 ) ] ( ) * 0x3c * 0x3e8 + 0x8 * 0x3c * 0x3c * 0x3e8 ) [ _0 x2d5d62 ( 0x201 ) ] ( ) , minute = new Date ( new Date ( ) [ 'getTime' ] ( ) + new Date ( ) [ _0 x2d5d62 ( 0x255 ) ] ( ) * 0x3c * 0x3e8 + 0x8 * 0x3c * 0x3c * 0x3e8 ) [ _0 x2d5d62 ( 0x25f ) ] ( ) ; let userList = [ ] , moneyList = [ ] , times = 0x0 ; function _0 x1e29 ( _0 x5e2f30 , _0 x18ffeb ) { const _0 x14afba = _0 x14af ( ) ; return _0 x1e29 = function ( _0 x1e298a , _0 x2049d9 ) { _0 x1e298a = _0 x1e298a - 0x1ee ; let _0 x3ea65c = _0 x14afba [ _0 x1e298a ] ; return _0 x3ea65c ; } , _0 x1e29 ( _0 x5e2f30 , _0 x18ffeb ) ; } function _0 x14af ( ) { const _0 x22a836 = [ '️【气泡】:收取失败' , 'prizeDesc' , 'https://ocean.shuqireader.com/api/activity/v1/task/convert?asac=' , 'isNode' , 'match' , '【大转盘】' , 'Mozilla/5.0\x20(iPhone;\x20CPU\x20iPhone\x20OS\x2012_0\x20like\x20Mac\x20OS\x20X)\x20AppleWebKit/605.1.15\x20(KHTML,\x20like\x20Gecko)\x20Mobile/15E148' , 'https://api-access.pangolin-sdk-toutiao.com/api/ad/union/sdk/reward_video/reward/' , '6gVZDXz' , 'round' , 'zh-Hans-US;q=1,\x20zh-Hant-HK;q=0.9,\x20hi-US;q=0.8,\x20en-US;q=0.7' , '签到失败:' , '*/*' , '//////////////////\x0a' , 'stringify' , 'valueOf' , 'name' , 'sqreceive' , 'api/activity/xapi/signin/v5/signInAction' , 'push' , 'keep-alive' , 'getTime' , 'getTimezoneOffset' , '未找到receiveCK' , 'getdata' , '失败:' , 'split' , '个receiveck成功:\x20' , '/api/activity/activity/v1/lottery/draw' , 'log' , './sendNotify' , 'prizeName' , 'getMinutes' , '【极速阅读】刷第' , 'gzip,\x20deflate,\x20br' , 'sqreward' , '个signck成功:\x20' , 'finally' , 'setdata' , '🈶极速版书城:' , '️【任务中心】' , '2013300UgEtRs' , '个账号' , 'replace' , 'logErr' , 'indexOf' , 'sqlottery' , 'url' , 'api/prizecenter/xapi/prize/manual/receive' , 'parse' , '1936ZpGySK' , '277088WXacIH' , 'https://ocean.shuqireader.com/api/prizecenter/xapi/prize/manual/receive' , 'cypher' , '\x20获取第' , '个infock成功:\x20' , 'catch' , '个lotteryck成功:\x20' , 'userId=' , 'timestamp=' , 'getHours' , 'gold' , 'sqnotify' , 'chanceMaxCnt' , 'sqinfo' , '\x20🎉' , 'api/ad/union/sdk/reward_video/reward/' , '次,今日\x20' , 'https://ocean.shuqireader.com/api/activity/xapi/gold/withdraw/info' , 'wait' , 'message' , 'body' , 'prizeList' , '110icbddH' , 'rewards' , 'copyWriting' , 'https://ocean.shuqireader.com/api/activity/activity/v1/lottery/draw?asac=2A20C07RJ9F51AOEFSNHDR' , '此脚本已失效,请停止使用' , '\x20获取第1个rewardck成功:\x20' , 'HHnB_' , '未找到rewardCK' , 'sendNotify' , '未找到lotteryCK' , 'env' , '本次获得' , '书旗签到:' , '未找到signCK' , '1218SUhwJP' , 'post' , '开始转盘抽奖' , '710980WuSjTE' , 'sqsign' , 'statusCode' , 'data' , ' https : //ocean.shuqireader.com/api/activity/v1/activity
/////////////////////////////////
function populateUrlObject ( url , body = '' ) {
let host = url . replace ( '//' , '/' ) . split ( '/' ) [ 1 ]
let urlObject = {
url : url ,
headers : {
"Origin" : "https://render-web.shuqireader.com" ,
"Accept-Encoding" : "gzip, deflate, br" ,
"Connection" : "keep-alive" ,
"Content-Type" : "application/x-www-form-urlencoded" ,
"Accept" : "application/json, text/plain, */*" ,
"Host" : host ,
"User-Agent" : "Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 AliApp(shuqi/4.5.0.0) WindVane/8.6.1 Shuqi (iPhone11,2__shuqi__v4.5.0.0) 1125x2436 Winding(WV_6) WK" ,
//"Referer": "https://render-web.shuqireader.com/render/sq-welfare/page/welfare_page_v2/?serviceWorkerOn=1&stopPullRefresh=1&upf=20559&from=ShuqiTab&sdk=12.0&utdid=YS4QdoRAb/cDALU3c6blgBkx&ustatus=1&contentRecom=1&first_placeid=111111&net_env=wifi&placeid=111111&user_id=2940533611&sn=C9349F8FCFF670AD45E3E27EEC65D9658B023895&umidtoken=+nJLaZdLOsarZzV8WfusDQnxgtq3CeOz&msv=8.0.0&brand=Apple&skinVersionPrefix=1&isTeenMode=0&appVer=4.5.0.0&personalized=1&manufacturer=Apple&session=eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIyOTQwNTMzNjExIiwidXRkaWQiOiIiLCJpbWVpIjoiNjE2OEFEQjI4RTJGOUM4OTk3MDczQUZFM0FFNkE2MkZGRUQ4Q0VDQyIsInNuIjoiQzkzNDlGOEZDRkY2NzBBRDQ1RTNFMjdFRUM2NUQ5NjU4QjAyMzg5NSIsImV4cCI6MTYzNDEyOTYyMCwidXNlcklkIjoiMjk0MDUzMzYxMSIsImlhdCI6MTYzMzYxMTIyMCwib2FpZCI6IiIsInBsYXRmb3JtIjoiaU9TIn0.4lO7CHX4UQWQ9OEAWLXzAlC-ZPYdhpiudIelCppMPatUsLA-QVyFldqLQW5gvBQ01tiM7h8XesOa9gb0u1Uv6Q&skinColor=23B383&platform=iOS&sqiOSUniqDeviceId=6168ADB28E2F9C8997073AFE3AE6A62FFED8CECC&mod=iPhone8&ver=210827&skinVersion=1&skinActiveColor=0F9970&statusBarHeight=20.000000&wh=750x1334&soft_id=21&utype=vip&skinId=999&idfa=08A53849-3D58-417A-8484-7D10A9A3A125",
"Content-Length" : "1349" ,
"Accept-Language" : "zh-cn"
} ,
}
if ( body ) urlObject . body = body
return urlObject ;
}
async function httpRequest ( method , url ) {
httpResult = null
return new Promise ( ( resolve ) => {
$ [ method ] ( url , async ( err , resp , data ) => {
try {
if ( err ) {
console . log ( ` ${ method } 请求失败 ` ) ;
console . log ( JSON . stringify ( err ) ) ;
$ . logErr ( err ) ;
} else {
httpResult = resp ;
}
} catch ( e ) {
$ . logErr ( e , resp ) ;
} finally {
resolve ( ) ;
}
} ) ;
} ) ;
}
function safeGet ( data ) {
try {
if ( typeof JSON . parse ( data ) == "object" ) {
return true ;
} else {
console . log ( data )
}
} catch ( e ) {
console . log ( e ) ;
console . log ( ` 服务器访问数据为空,请检查自身设备网络情况 ` ) ;
return false ;
}
}
function UrlParamHash ( url ) {
var params = [ ] , h ;
//var hash = url.slice(url.indexOf("?") + 1).split('&');
var hash = url . split ( '&' ) ;
for ( var i = 0 ; i < hash . length ; i ++ ) {
h = hash [ i ] . split ( "=" ) ;
params . push ( h [ 0 ] ) ;
params [ h [ 0 ] ] = h [ 1 ] ;
}
return params ;
}
//解码
function decodeUnicode ( str ) {
str = str . replace ( /\\/g , "%" ) ;
return unescape ( str ) ;
}
function 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 ( "" , ` 🔔 ${ this . name } , 开始! ` ) } 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 ( "@" ) , n = { url : ` http:// ${ h } /v1/scripting/evaluate ` , body : { script_text : t , mock_type : "cron" , timeout : r } , headers : { "X-Key" : o , Accept : "*/*" } } ; this . post ( n , ( 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 || { } , Ob