|
@ -1,21 +1,15 @@ |
|
|
|
|
|
//定时建议 */30 8-18/1 * * *
|
|
|
/* |
|
|
/* |
|
|
快手极速 |
|
|
快手极速 |
|
|
定时建议 10 7-16/1 * * * |
|
|
|
|
|
|
|
|
|
|
|
export kshd='cookie1@cookie2@cookie3' |
|
|
export kshd='cookie1@cookie2@cookie3' |
|
|
|
|
|
//提现微信或支付宝
|
|
|
|
|
|
export kspaymodel='wechat@alipay@wechat' |
|
|
cookie获取: |
|
|
cookie获取: |
|
|
重写地址:https://nebula.kuaishou.com/rest/n/nebula/activity/earn/overview/basicInfo
|
|
|
重写地址:https://nebula.kuaishou.com/rest/n/nebula/activity/earn/overview/basicInfo
|
|
|
mitm: nebula.kuaishou.com |
|
|
mimt:nebula.kuaishou.com |
|
|
api2.e.kuaishou.com |
|
|
|
|
|
api.e.kuaishou.com |
|
|
|
|
|
|
|
|
|
|
|
自动获取不到的 手动抓 |
|
|
|
|
|
|
|
|
|
|
|
签到: kshd 整段cookie |
|
|
|
|
|
|
|
|
|
|
|
广告获取: https://api.e.kuaishou.com/rest/e/v1/reward/ad
|
|
|
广告获取: https://api.e.kuaishou.com/rest/e/v1/reward/ad
|
|
|
广告请求: ksggqqbody 整段body |
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
|
*/ |
|
|
|
|
|
|
|
|
const jsname = '快手极速' |
|
|
const jsname = '快手极速' |
|
@ -30,13 +24,15 @@ let notifyFlag=1 |
|
|
|
|
|
|
|
|
let kshd = ($.isNode() ? (process.env.kshd) : ($.getval('kshd'))) || ''; |
|
|
let kshd = ($.isNode() ? (process.env.kshd) : ($.getval('kshd'))) || ''; |
|
|
let kshdArr = [] |
|
|
let kshdArr = [] |
|
|
|
|
|
let kspaymodel = ($.isNode() ? (process.env.kspaymodel) : ($.getval('kspaymodel'))) || ''; |
|
|
|
|
|
let kspaymodelArr = [] |
|
|
|
|
|
|
|
|
let userIdx = 0 |
|
|
let userIdx = 0 |
|
|
|
|
|
|
|
|
let kscookie='' |
|
|
let kscookie='' |
|
|
let ksgjbody='' |
|
|
let ksgjbody='' |
|
|
let waittime=1 |
|
|
let waittime=1 |
|
|
|
|
|
let paymodel='' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const hour = new Date(new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000).getHours(); |
|
|
const hour = new Date(new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000).getHours(); |
|
@ -55,19 +51,24 @@ const minute = new Date(new Date().getTime() + new Date().getTimezoneOffset() * |
|
|
{ |
|
|
{ |
|
|
if(!await CheckEnv()) return |
|
|
if(!await CheckEnv()) return |
|
|
|
|
|
|
|
|
//用来检测任务状态的cookie
|
|
|
for(userIdx=0; userIdx<kshdArr.length; userIdx++) { |
|
|
kscookie=kshdArr[0] |
|
|
console.log(`\n用户${userIdx+1} 开始检测任务状态`) |
|
|
await checktask(kscookie) |
|
|
kscookie=kshdArr[userIdx] |
|
|
await $.wait(1000) |
|
|
paymodel=kspaymodelArr[userIdx] |
|
|
if(hour >=5 && hour<23 && minute < 30){ |
|
|
if (!paymodel)paymodel='WECHAT' |
|
|
for(userIdx=0; userIdx<kshdArr.length; userIdx++) { |
|
|
await checktask(kscookie,userIdx) |
|
|
|
|
|
await $.wait(1000) |
|
|
|
|
|
//await checkwithdraw(kscookie,userIdx)
|
|
|
|
|
|
await $.wait(1000) |
|
|
|
|
|
if(hour >=5 && hour<23 && minute < 30){ |
|
|
console.log(`\n用户${userIdx+1} 开宝箱`) |
|
|
console.log(`\n用户${userIdx+1} 开宝箱`) |
|
|
kscookie=kshdArr[userIdx] |
|
|
|
|
|
await openbox(kscookie,userIdx) |
|
|
await openbox(kscookie,userIdx) |
|
|
await $.wait(1000) |
|
|
await $.wait(1000) |
|
|
await userinfo(kscookie) |
|
|
await userinfo(kscookie,userIdx) |
|
|
|
|
|
if (hour==18) await checkwithdraw(kscookie,userIdx) |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
await tgrj() |
|
|
await tgrj() |
|
|
await $.wait(1000) |
|
|
await $.wait(1000) |
|
|
await showmsg() |
|
|
await showmsg() |
|
@ -92,7 +93,21 @@ async function CheckEnv() { |
|
|
console.log('没有找到kshd') |
|
|
console.log('没有找到kshd') |
|
|
return false |
|
|
return false |
|
|
} |
|
|
} |
|
|
|
|
|
if(kspaymodel) { |
|
|
|
|
|
if(kspaymodel.indexOf('@') > -1) { |
|
|
|
|
|
let kspaymodels = kspaymodel.split('@') |
|
|
|
|
|
for(let i=0; i<kspaymodels.length; i++) { |
|
|
|
|
|
kspaymodelP = kspaymodels[i] |
|
|
|
|
|
kspaymodelArr.push(kspaymodelP) |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
kspaymodelP = kspaymodel |
|
|
|
|
|
kspaymodelArr.push(kspaymodelP) |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
console.log('未设置kspaymodel,默认提现到WECHAT') |
|
|
|
|
|
//return false
|
|
|
|
|
|
} |
|
|
return true |
|
|
return true |
|
|
} |
|
|
} |
|
|
//通知
|
|
|
//通知
|
|
@ -158,7 +173,7 @@ async function getRewrite(){ |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
//账号信息
|
|
|
//账号信息
|
|
|
async function userinfo(cookie) { |
|
|
async function userinfo(cookie,userIdx) { |
|
|
let caller = PrintCaller() |
|
|
let caller = PrintCaller() |
|
|
let url = `https://nebula.kuaishou.com/rest/n/nebula/activity/earn/overview/basicInfo` |
|
|
let url = `https://nebula.kuaishou.com/rest/n/nebula/activity/earn/overview/basicInfo` |
|
|
let urlObject = PopulateGetUrl(url) |
|
|
let urlObject = PopulateGetUrl(url) |
|
@ -168,10 +183,10 @@ async function userinfo(cookie) { |
|
|
|
|
|
|
|
|
//console.log(`${JSON.stringify(result)}`);
|
|
|
//console.log(`${JSON.stringify(result)}`);
|
|
|
if (result.result == 1) { |
|
|
if (result.result == 1) { |
|
|
console.log(`用户:${result.data.userData.nickname}`) |
|
|
console.log(`\n用户${userIdx+1}:${result.data.userData.nickname}`) |
|
|
console.log(`快乐豆:${result.data.totalCoin}`) |
|
|
console.log(`快乐豆:${result.data.totalCoin}`) |
|
|
console.log(`礼品卷:${result.data.allCash}`) |
|
|
console.log(`礼品卷:${result.data.allCash}`) |
|
|
notifyStr += `用户:${result.data.userData.nickname}\n快乐豆:${result.data.totalCoin}\n礼品卷:${result.data.allCash}\n\n` |
|
|
notifyStr += `\n用户${userIdx+1}:${result.data.userData.nickname}\n快乐豆:${result.data.totalCoin}\n礼品卷:${result.data.allCash}\n\n` |
|
|
}else console.log(`${JSON.stringify(result)}`) |
|
|
}else console.log(`${JSON.stringify(result)}`) |
|
|
} |
|
|
} |
|
|
//签到
|
|
|
//签到
|
|
@ -188,9 +203,60 @@ async function Sign(cookie) { |
|
|
notifyStr += `${result.data.toast} - 获得:${result.data.totalCoin} 快乐豆\n` |
|
|
notifyStr += `${result.data.toast} - 获得:${result.data.totalCoin} 快乐豆\n` |
|
|
}else console.log(`${result.error_msg}`) |
|
|
}else console.log(`${result.error_msg}`) |
|
|
} |
|
|
} |
|
|
|
|
|
//提现 列表
|
|
|
|
|
|
async function checkwithdraw(cookie,userIdx) { |
|
|
|
|
|
let caller = PrintCaller() |
|
|
|
|
|
let tmpwithdraw='' |
|
|
|
|
|
let url = 'https://nebula.kuaishou.com/rest/n/nebula/account/withdraw' |
|
|
|
|
|
let urlObject = PopulateGetUrl(url) |
|
|
|
|
|
urlObject.headers.Cookie=cookie |
|
|
|
|
|
urlObject.headers.Referer='https://nebula.kuaishou.com/nebula/task/cash' |
|
|
|
|
|
await HttpGet(urlObject,caller) |
|
|
|
|
|
let result = httpResult; |
|
|
|
|
|
if(!result) return |
|
|
|
|
|
//console.log(`${JSON.stringify(result)}`);
|
|
|
|
|
|
if (result.result == 1) { |
|
|
|
|
|
withdrawlist=result.data.enWithdrawList |
|
|
|
|
|
let amount=parseInt(result.data.enWithdrawAmount*100)/100 |
|
|
|
|
|
console.log('可领取:'+amount) |
|
|
|
|
|
if (!result.data.isLimit) console.log('限制提现:否') |
|
|
|
|
|
else console.log('限制提现:是') |
|
|
|
|
|
console.log('提现到:'+paymodel) |
|
|
|
|
|
let k=withdrawlist.length-1 |
|
|
|
|
|
while (k>-1){ |
|
|
|
|
|
tmpwithdraw += withdrawlist[k]+'\t' |
|
|
|
|
|
if (amount>=parseInt(withdrawlist[k]) && !result.data.isLimit ){ |
|
|
|
|
|
console.log('开始提现'+withdrawlist[k]) |
|
|
|
|
|
notifyStr += `开始提现${withdrawlist[k]}\n` |
|
|
|
|
|
await withdraw(cookie,userIdx,withdrawlist[k]*100) |
|
|
|
|
|
} |
|
|
|
|
|
k--; |
|
|
|
|
|
} |
|
|
|
|
|
console.log('可提:'+tmpwithdraw) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
//提现
|
|
|
|
|
|
async function withdraw(cookie,userIdx,amount) { |
|
|
|
|
|
let caller = PrintCaller() |
|
|
|
|
|
let url = 'https://www.kuaishoupay.com/pay/account/h5/withdraw/apply' |
|
|
|
|
|
let referer='https://www.kuaishoupay.com/kspay-v2/withdraw?accountGroupKey=NEBULA_CASH_ACCOUNT&withdrawAmount='+amount |
|
|
|
|
|
let reqBody = 'account_group_key=NEBULA_CASH_ACCOUNT&mobile_code=&fen='+amount+'&provider='+paymodel+'&total_fen='+amount+'&commission_fen=0&attach=&biz_content=&session_id=' |
|
|
|
|
|
let urlObject = PopulatePostUrl(url,reqBody) |
|
|
|
|
|
urlObject.headers.Referer=referer |
|
|
|
|
|
urlObject.headers.Origin='https://www.kuaishoupay.com' |
|
|
|
|
|
urlObject.headers.Host='www.kuaishoupay.com' |
|
|
|
|
|
await HttpPost(urlObject,caller) |
|
|
|
|
|
let result = httpResult; |
|
|
|
|
|
if(!result) return |
|
|
|
|
|
|
|
|
|
|
|
if (result.result == 'SUCCESS') { |
|
|
|
|
|
console.log(result.title+result.msg) |
|
|
|
|
|
notifyStr += `${result.title}${result.msg}\n` |
|
|
|
|
|
}else console.log(`${JSON.stringify(result)}`); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
//tasks 列表
|
|
|
//tasks 列表
|
|
|
async function checktask(cookie) { |
|
|
async function checktask(cookie,userIdx) { |
|
|
let caller = PrintCaller() |
|
|
let caller = PrintCaller() |
|
|
let url = 'https://nebula.kuaishou.com/rest/n/nebula/activity/earn/overview/tasks?addressBookAccessStatus=true&pushNotificationStatus=false&imei=&oaid=' |
|
|
let url = 'https://nebula.kuaishou.com/rest/n/nebula/activity/earn/overview/tasks?addressBookAccessStatus=true&pushNotificationStatus=false&imei=&oaid=' |
|
|
let urlObject = PopulateGetUrl(url) |
|
|
let urlObject = PopulateGetUrl(url) |
|
@ -204,38 +270,33 @@ async function checktask(cookie) { |
|
|
|
|
|
|
|
|
if( tasksArr && Array.isArray(tasksArr)) { |
|
|
if( tasksArr && Array.isArray(tasksArr)) { |
|
|
for (let i=0;i<tasksArr.length;i++){ |
|
|
for (let i=0;i<tasksArr.length;i++){ |
|
|
if (tasksArr[i].id=='5' && tasksArr[i].finish!=true){//签到
|
|
|
let taskid=tasksArr[i].id |
|
|
|
|
|
let taskstatus=tasksArr[i].finish |
|
|
|
|
|
if (taskid=='5' && taskstatus!=true){//签到
|
|
|
if(hour >=5 && hour<17 && minute < 15){ |
|
|
if(hour >=5 && hour<17 && minute < 15){ |
|
|
console.log(`${tasksArr[i].name}--去完成`) |
|
|
console.log(`${tasksArr[i].name}--去完成`) |
|
|
console.log(`${tasksArr[i].desc}`) |
|
|
console.log(`${tasksArr[i].desc}`) |
|
|
for(userIdx=0; userIdx<kshdArr.length; userIdx++) { |
|
|
await Sign(kscookie) |
|
|
kscookie=kshdArr[userIdx] |
|
|
await $.wait(1000) |
|
|
await Sign(kscookie) |
|
|
await yylj(kscookie,userIdx) |
|
|
await $.wait(1000) |
|
|
await $.wait(1000) |
|
|
} |
|
|
await yy(kscookie,userIdx) |
|
|
} |
|
|
} |
|
|
}else if (tasksArr[i].id=='148' && tasksArr[i].finish!=true){//逛街任务
|
|
|
}else if (taskid=='148' && taskstatus!=true){//逛街任务
|
|
|
if(hour >5 && hour<17 && minute < 20){ |
|
|
//if(hour >5 && hour<17 ){
|
|
|
console.log(`${tasksArr[i].name}--去完成\n`) |
|
|
console.log(`${tasksArr[i].name}--去完成\n`) |
|
|
console.log(`${tasksArr[i].desc}`) |
|
|
console.log(`${tasksArr[i].desc}`) |
|
|
for(userIdx=0; userIdx<kshdArr.length; userIdx++) { |
|
|
await ksgj(kscookie,userIdx) |
|
|
kscookie=kshdArr[userIdx] |
|
|
await $.wait(1000) |
|
|
//adsbody=adsbodyArr[userIdx]
|
|
|
//}
|
|
|
await ksgj(kscookie,userIdx) |
|
|
}else if (taskid=='17' && taskstatus!=true){//广告任务
|
|
|
await $.wait(1000) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
}else if (tasksArr[i].id=='17' && tasksArr[i].finish!=true){//广告任务
|
|
|
|
|
|
console.log(`${tasksArr[i].name}--去完成\n`) |
|
|
console.log(`${tasksArr[i].name}--去完成\n`) |
|
|
console.log(`${tasksArr[i].desc}`) |
|
|
console.log(`${tasksArr[i].desc}`) |
|
|
for(userIdx=0; userIdx<kshdArr.length; userIdx++) { |
|
|
await ksads(kscookie,userIdx) |
|
|
kscookie=kshdArr[userIdx] |
|
|
await $.wait(1000) |
|
|
//adsbody=adsbodyArr[userIdx]
|
|
|
|
|
|
await ksads(kscookie,userIdx) |
|
|
|
|
|
await $.wait(1000) |
|
|
|
|
|
} |
|
|
|
|
|
}else{ |
|
|
}else{ |
|
|
let finish_status=tasksArr[i].finish==true?'已完成':'未完成' |
|
|
let finish_status=taskstatus==true?'已完成':'未完成' |
|
|
|
|
|
if (taskid=='148' || taskid=='17' || taskid=='5') |
|
|
console.log(`${tasksArr[i].name} --${finish_status}`) |
|
|
console.log(`${tasksArr[i].name} --${finish_status}`) |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
@ -243,6 +304,37 @@ async function checktask(cookie) { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
async function yy(cookie,userIdx) { |
|
|
|
|
|
let caller = PrintCaller() |
|
|
|
|
|
let url = `https://nebula.kuaishou.com/rest/n/nebula/reservation-task/reserve` |
|
|
|
|
|
let urlObject = PopulateGetUrl(url) |
|
|
|
|
|
await HttpGet(urlObject,caller) |
|
|
|
|
|
let result = httpResult; |
|
|
|
|
|
if(!result) return |
|
|
|
|
|
|
|
|
|
|
|
//console.log(`${JSON.stringify(result)}`);
|
|
|
|
|
|
if (result.result == 1) { |
|
|
|
|
|
console.log(`用户${userIdx+1} ${result.data.feedbackPopup.title}`) |
|
|
|
|
|
console.log(`用户${userIdx+1} ${result.data.feedbackPopup.subTitle}`) |
|
|
|
|
|
notifyStr += `用户${userIdx+1} ${result.data.feedbackPopup.title}\n${result.data.feedbackPopup.subTitle}\n` |
|
|
|
|
|
}else console.log(`用户${userIdx+1} ${result.error_msg}`) |
|
|
|
|
|
} |
|
|
|
|
|
//
|
|
|
|
|
|
async function yylj(cookie,userIdx) { |
|
|
|
|
|
let caller = PrintCaller() |
|
|
|
|
|
let url = `https://nebula.kuaishou.com/rest/n/nebula/reservation-task/award` |
|
|
|
|
|
let urlObject = PopulateGetUrl(url) |
|
|
|
|
|
await HttpGet(urlObject,caller) |
|
|
|
|
|
let result = httpResult; |
|
|
|
|
|
if(!result) return |
|
|
|
|
|
|
|
|
|
|
|
//console.log(`${JSON.stringify(result)}`);
|
|
|
|
|
|
if (result.result == 1) { |
|
|
|
|
|
console.log(`用户${userIdx+1} ${result.data.msg}`) |
|
|
|
|
|
notifyStr += `用户${userIdx+1} ${result.data.msg}\n` |
|
|
|
|
|
}else console.log(`用户${userIdx+1} ${result.error_msg}`) |
|
|
|
|
|
} |
|
|
//开宝箱
|
|
|
//开宝箱
|
|
|
async function openbox(cookie,userIdx) { |
|
|
async function openbox(cookie,userIdx) { |
|
|
let caller = PrintCaller() |
|
|
let caller = PrintCaller() |
|
@ -254,8 +346,8 @@ async function openbox(cookie,userIdx) { |
|
|
if(!result) return |
|
|
if(!result) return |
|
|
|
|
|
|
|
|
//console.log(`${JSON.stringify(result)}`);
|
|
|
//console.log(`${JSON.stringify(result)}`);
|
|
|
if (result.result == 1) { |
|
|
if (result.result == 1 && result.data) { |
|
|
if (result.data.show==false){ |
|
|
if (result.data.show&&result.data.show==false){ |
|
|
console.log(`你的宝箱都没看见,开个毛线`) |
|
|
console.log(`你的宝箱都没看见,开个毛线`) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
@ -264,16 +356,16 @@ async function openbox(cookie,userIdx) { |
|
|
score=result.data.commonAwardPopup.awardAmount |
|
|
score=result.data.commonAwardPopup.awardAmount |
|
|
console.log(`用户${userIdx+1}开宝箱-获得:${score} 快乐豆`) |
|
|
console.log(`用户${userIdx+1}开宝箱-获得:${score} 快乐豆`) |
|
|
notifyStr += `用户${userIdx+1}开宝箱-获得:${score} 快乐豆\n` |
|
|
notifyStr += `用户${userIdx+1}开宝箱-获得:${score} 快乐豆\n` |
|
|
waittime=randomNum(14,20) |
|
|
//waittime=randomNum(14,20)
|
|
|
console.log(`用户${userIdx+1}等待${waittime}秒开启宝箱翻倍`) |
|
|
//console.log(`用户${userIdx+1}等待${waittime}秒开启宝箱翻倍`)
|
|
|
await $.wait(1000) |
|
|
await $.wait(1000) |
|
|
await ksads(cookie,userIdx,1) |
|
|
await ksads(cookie,userIdx,1) |
|
|
//await $.wait(waittime*1000)
|
|
|
|
|
|
|
|
|
|
|
|
}else{ |
|
|
}else{ |
|
|
let opentime=result.data.openTime |
|
|
let opentime=result.data.openTime |
|
|
if (opentime>0) |
|
|
if (opentime>0){ |
|
|
console.log(`用户${userIdx+1}宝箱开启还需${opentime}`) |
|
|
opentime=Math.floor(opentime/600)/100 |
|
|
|
|
|
console.log(`用户${userIdx+1}宝箱开启还需${opentime}分钟`) |
|
|
|
|
|
} |
|
|
else console.log(`用户${userIdx+1}:明日再来`) |
|
|
else console.log(`用户${userIdx+1}:明日再来`) |
|
|
} |
|
|
} |
|
|
}else console.log(`${result.message}`) |
|
|
}else console.log(`${result.message}`) |
|
@ -298,7 +390,6 @@ async function openbox_double(cookie,spid,llsid,userIdx) { |
|
|
}else console.log(`${result.message}`) |
|
|
}else console.log(`${result.message}`) |
|
|
} |
|
|
} |
|
|
//逛街
|
|
|
//逛街
|
|
|
//{"result":1,"message":"成功","data":{"amount":50},"host":"ad-rs6-bjmt2090.idcyz.hb1.kwaidc.com","traceId":"ELqAgIDQqY67ChiLDSDYotrx2C8op4O2nAM=","ts":1638768480734}
|
|
|
|
|
|
async function ksgj(cookie,userIdx) { |
|
|
async function ksgj(cookie,userIdx) { |
|
|
ksgjbody = cookie.split('client_key=')[1].split('&')[0] |
|
|
ksgjbody = cookie.split('client_key=')[1].split('&')[0] |
|
|
let caller = PrintCaller() |
|
|
let caller = PrintCaller() |
|
@ -369,7 +460,7 @@ function PopulatePostUrl(url,reqBody){ |
|
|
'Connection': 'keep-alive', |
|
|
'Connection': 'keep-alive', |
|
|
'Content-Length': '1138', |
|
|
'Content-Length': '1138', |
|
|
'Content-Type': 'application/x-www-form-urlencoded', |
|
|
'Content-Type': 'application/x-www-form-urlencoded', |
|
|
'Cookie': '' + kscookie |
|
|
'Cookie': kscookie |
|
|
}, |
|
|
}, |
|
|
body: reqBody, |
|
|
body: reqBody, |
|
|
} |
|
|
} |
|
@ -384,7 +475,7 @@ function PopulateGetUrl(url){ |
|
|
'Connection': 'keep-alive', |
|
|
'Connection': 'keep-alive', |
|
|
'Content-Length': '1138', |
|
|
'Content-Length': '1138', |
|
|
'Content-Type': 'application/x-www-form-urlencoded', |
|
|
'Content-Type': 'application/x-www-form-urlencoded', |
|
|
'Cookie': '' + kscookie |
|
|
'Cookie': kscookie |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
return urlObject; |
|
|
return urlObject; |
|
|