2024-08-24 11:17:58 +08:00
/ * *
* 阻塞代码运行
* @ param { * } n 秒数
* @ returns
* /
2024-08-19 17:05:34 +08:00
function delay ( n ) {
return new Promise ( function ( resolve ) {
setTimeout ( resolve , n * 1000 ) ;
} ) ;
}
2024-08-24 11:17:58 +08:00
/ * *
* 随机数生成
* @ param { * } min 最小值
* @ param { * } max 最大值
* @ returns
* /
2024-08-19 18:02:42 +08:00
function getRandomInt ( min , max ) {
2024-08-20 14:26:52 +08:00
min = Math . ceil ( min ) ;
max = Math . floor ( max ) ;
return Math . floor ( Math . random ( ) * ( max - min + 1 ) ) + min ;
}
2024-08-19 18:02:42 +08:00
2024-08-24 11:17:58 +08:00
/ * *
* 随机滑动函数
* @ param { * } y 滑动像素 不传递默认随机
* /
2024-08-20 14:26:52 +08:00
function RandomIntscrollBy ( y = 0 ) {
let rand = getRandomInt ( 100 , 600 ) ;
scrollBy ( 0 , y == 0 ? rand : y ) ;
console . log ( "随机滑动" + rand ) ;
2024-08-19 18:02:42 +08:00
}
2024-08-19 17:05:34 +08:00
//naver使用函数
const naver = async ( r , id ) => {
2024-08-24 09:24:11 +08:00
// await delay(1);
2024-08-20 14:26:52 +08:00
send _close ( id ) ;
2024-08-19 17:05:34 +08:00
} ;
2024-08-24 11:17:58 +08:00
/ * *
*
* @ param { * } str 字符串
* @ param { * } arr 需要匹配的字符串数组
* @ returns boole
* /
function searchStringContainsArrayKeywords ( str , arr ) {
for ( let i = 0 ; i < arr . length ; i ++ ) {
if ( str . includes ( arr [ i ] ) ) {
return true ;
}
}
return false ;
}
2024-08-20 14:26:52 +08:00
//youto短视频
async function youtube _shorts ( r , id ) {
i = 0 ;
// 随机执行次数
randTime = Math . floor ( Math . random ( ) * 16 ) + 15 ;
console . log ( "执行" , randTime , "次" ) ;
// 根据次数随机每次观看的时长
const list = [ ] ;
for ( let i = 0 ; i < randTime ; i ++ ) {
// 生成 1 到 5 之间的随机整数
const randomNum = Math . floor ( Math . random ( ) * 44 ) + 5 ; //44
// 将随机数添加到列表中
list . push ( randomNum * 1000 ) ;
}
console . log ( "每个视频的观看时长:" , list ) ;
// 首次进入判断是否播放
var playing =
document . querySelector ( "div.playing-mode" ) == null ? false : true ;
var paused = document . querySelector ( "div.paused-mode" ) == null ? false : true ;
console . log ( "playing" , playing , "paused" , paused ) ;
if ( playing ) {
console . log ( "首次进入在播放!" ) ;
} else {
await delay ( 5 ) ;
var playButton = document . getElementsByClassName (
"ytp-large-play-button ytp-button"
) [ 0 ] ;
playButton . click ( ) ;
console . log ( "点击了播放!" ) ;
}
// 执行
2024-08-21 11:30:52 +08:00
// var dingshiqi_duanshipin = setInterval(() => {
// run((randomTime = list[i]));
// }, list[i] + 2000);
while ( true ) {
await run ( ( randomTime = list [ i ] ) ) ;
// await delay((list[i] + 2000)/1000);
}
2024-08-20 14:26:52 +08:00
// 定义一个执行函数
async function run ( randomTime ) {
// 执行randTime次后停止
console . log (
"总计:" ,
randTime ,
"次,当前第:" ,
i + 1 ,
"次,观看时长:" ,
randomTime / 1000 ,
"s"
) ;
if ( i == randTime ) {
console . log ( "已经执行" , randTime , "次,关闭当前标签页!" ) ;
2024-08-21 11:30:52 +08:00
// clearInterval(dingshiqi_duanshipin);
2024-08-20 14:26:52 +08:00
send _close ( id ) ;
}
// 点赞
var button = document . querySelector (
".yt-spec-button-shape-next--icon-button"
) ;
console . log ( "是否已点赞:" , button . getAttribute ( "aria-pressed" ) ) ;
button . click ( ) ;
bao = $ ( "#shorts-inner-container ytd-reel-video-renderer" ) ;
for ( j = 0 ; j < bao . length ; j ++ ) {
// 如果是当前正在播放的视频 点赞+订阅
if ( typeof $ ( bao [ j ] ) . attr ( "is-active" ) == "string" ) {
dianzan = $ ( bao [ j ] ) . find ( "button" ) [ 23 ] ;
dingyue = $ ( bao [ j ] ) . find ( "button" ) [ 20 ] ;
// 点赞
if ( $ ( dianzan ) . is ( ".yt-spec-button-shape-next--tonal" ) )
$ ( dianzan ) . click ( ) ;
// 订阅
if ( $ ( dingyue ) . is ( ".yt-spec-button-shape-next--filled" ) )
$ ( dingyue ) . click ( ) ;
j = bao . length ;
}
}
// 下一集 randomTime - 2s
await delay ( randomTime ) ;
$ ( "div #navigation-button-down button" ) . click ( ) ;
console . log ( "点击了下一个视频" ) ;
i ++ ;
}
// 定时器
let timer = setTimeout ( function ( ) {
location . reload ( ) ;
console . log ( "页面长时间无响应" ) ;
} , 60000 ) ; // 设置超时时间为 5 秒钟
// 在每次页面有响应的时候,清除计时器即可
window . addEventListener ( "click" , function ( ) {
console . log ( "页面有响应" ) ;
// 清除计时器
clearTimeout ( timer ) ;
// 判断是否再播放
var playing =
document . querySelector ( "div.playing-mode" ) == null ? false : true ;
var paused =
document . querySelector ( "div.paused-mode" ) == null ? false : true ;
console . log ( "播放:" , playing , "暂停:" , paused ) ;
if ( playing ) {
console . log ( "已播放!" ) ;
} else {
var playButton = document . getElementsByClassName (
"ytp-large-play-button ytp-button"
) [ 0 ] ;
playButton . click ( ) ;
console . log ( "点击了播放!" ) ;
}
} ) ;
send _close ( id ) ;
}
2024-08-22 16:25:33 +08:00
async function shopping ( r , id ) {
let number = getRandomInt ( 2 , 10 ) ;
for ( let index = 0 ; index < number ; index ++ ) {
RandomIntscrollBy ( ) ;
await delay ( getRandomInt ( 3 , 7 ) ) ;
}
send _close ( id ) ;
}
2024-08-22 14:06:42 +08:00
async function calendar ( r , id ) {
await delay ( 3 ) ;
let number = getRandomInt ( 2 , 5 ) ;
2024-08-22 16:25:33 +08:00
console . log ( $ ) ;
2024-08-22 14:06:42 +08:00
for ( let index = 0 ; index < number ; index ++ ) {
//上一页
// $$('.T5GQA >span')[1].querySelectorAll('button')[0].click()
$ ( ".T5GQA > span" ) . eq ( 1 ) . find ( "button" ) . eq ( 0 ) . click ( ) ;
await delay ( getRandomInt ( 2 , 5 ) ) ;
//今天
$ ( ".L09ZLe >div >div >span >div >button" ) . click ( ) ;
await delay ( getRandomInt ( 2 , 5 ) ) ;
}
//下一页
$ ( ".T5GQA > span" ) . eq ( 2 ) . find ( "button" ) . eq ( 0 ) . click ( ) ;
await delay ( getRandomInt ( 2 , 5 ) ) ;
send _close ( id ) ;
}
2024-08-21 11:30:52 +08:00
async function news _google ( r , id ) {
2024-08-21 17:35:28 +08:00
console . log ( "加在完成开始等待8秒" ) ;
2024-08-21 11:30:52 +08:00
//等待五秒怕加载速度过慢
await delay ( 10 ) ;
2024-08-21 17:35:28 +08:00
console . log ( "等待8秒完成" ) ;
2024-08-21 11:30:52 +08:00
//焦点新闻 数量
let new _length = $ ( ".KDoq1" ) . length ;
//点击会创建新标签暂时没办法控制
// let rand_new_index=getRandomInt(0,new_length)
//点击焦点新闻
$ ( "#i10" ) . click ( ) ;
$ ( ".KDoq1" ) [ 0 ] . click ( ) ;
2024-08-21 17:35:28 +08:00
// console.log( $("#i10"))
// await delay(10);
// let the_number_of_swipes = getRandomInt(3, 6);
// for (let index = 0; index < the_number_of_swipes; index++) {
// RandomIntscrollBy();
// await delay(getRandomInt(10, 30));
// }
let x = $ ( ".WwrzSb" ) . length ,
y = 1 ,
shu = parseInt ( Math . random ( ) * ( x - y + 1 ) + y ) ;
$ ( ".WwrzSb" ) . eq ( shu ) [ 0 ] . click ( ) ;
scrollBy ( 0 , 153 ) ;
send _close ( id ) ;
}
//谷歌商店浏览
async function play _google ( r , id ) {
//等待五秒怕加载速度过慢
await delay ( 5 ) ;
//滑动次数
let a = getRandomInt ( 3 , 5 ) ;
for ( let index = 0 ; index < a ; index ++ ) {
RandomIntscrollBy ( ) ;
await delay ( getRandomInt ( 0 , 5 ) ) ;
}
//点击推荐
if ( getRandomInt ( 0 , 1 ) == 0 ) {
$ ( ".Pdcv8e" ) . click ( ) ;
await delay ( getRandomInt ( 5 , 10 ) ) ;
//返回主页
$ ( "#kO001e > header > nav > a" ) . click ( ) ;
}
//热门游戏随机列表 直接触发点击事件就行
let popular _games = $ (
"#yDmH0d > c-wiz.SSPGKf.glB9Ve > div > div > div.N4FjMb.Z97G4e > c-wiz > div > c-wiz > c-wiz:nth-child(4) > c-wiz > section > div > div > div > div > div.aoJE7e.b0ZfVe"
) . children ;
await delay ( getRandomInt ( 5 , 10 ) ) ;
//
send _close ( id ) ;
}
async function play _finance ( r , id ) {
2024-08-24 09:24:11 +08:00
await delay ( 5 ) ;
2024-08-22 16:25:33 +08:00
let recommended _attention = $ ( ".sbnBtf >li >a" ) ;
2024-08-24 09:24:11 +08:00
2024-08-22 16:25:33 +08:00
for (
let index = 0 ;
2024-08-24 09:24:11 +08:00
index < getRandomInt ( 0 , recommended _attention . length ) ;
2024-08-22 16:25:33 +08:00
index ++
) {
2024-08-22 15:52:05 +08:00
recommended _attention [ index ] . click ( ) ;
2024-08-22 16:25:33 +08:00
await delay ( getRandomInt ( 5 , 10 ) ) ;
for ( let indexx = 0 ; indexx < getRandomInt ( 0 , 5 ) ; indexx ++ ) {
RandomIntscrollBy ( ) ;
await delay ( getRandomInt ( 5 , 10 ) ) ;
2024-08-22 15:52:05 +08:00
}
//返回主页
2024-08-22 16:25:33 +08:00
$ ( ".gb_Bc >a" ) . click ( ) ;
2024-08-22 15:52:05 +08:00
}
2024-08-24 09:24:11 +08:00
// send_close(id);
2024-08-21 17:35:28 +08:00
}
async function mail ( r , id ) {
let emailReply = [
"우리 실장님이 승진을 축하하기 위해서 다음주 금요일에 (1월 21일에) 오후 5시에 XX 호텔에서 회식이 있습니다 첨부 파일에서 구체적이 정보을 참고하세요. " ,
"회장님의 회의 잘료을 준비위해서 16년에 상품 기획부의 목표 달성 상황을 필요합니다. 다음주 화요일전에 첨부 파일에 형식으로 준비 됬으면 좋겠습니다.많이 감사 드립니다" ,
"좋은 하루 지내세요." ,
"연휴에 잘 지내세요." ,
"감사합니다" ,
"이번주의 판매 보고을 보내드립니다. 세해 세일때문에 판매 목표를 잘 달성했슴니다. 첨부 파일을 참고하세요. " ,
2024-08-22 14:27:34 +08:00
"좋습니다 좋아요" ,
"안녕하세요" ,
"좋습니다" ,
"좋아요" ,
"화이팅" ,
"모르겠습니다" ,
"모르지만 해도 좋아요" ,
"저는 동현 입니다" ,
"해도 좋습니까?" ,
"괜찮아요?" ,
"몇살이에요?" ,
"감사합니다" ,
"미안합니다" ,
"저 갑니다" ,
2024-08-22 16:25:33 +08:00
"사랑해요" ,
2024-08-21 17:35:28 +08:00
] ;
2024-08-21 19:24:51 +08:00
await delay ( 8 ) ;
2024-08-21 17:35:28 +08:00
let mails = document . querySelectorAll ( ".zA" ) ;
2024-08-24 11:17:58 +08:00
let mails _is _google = $ ( ".zA" ) ;
2024-08-21 17:35:28 +08:00
for ( let index = 0 ; index < mails . length ; index ++ ) {
//挨个查看
mails [ index ] . click ( ) ;
RandomIntscrollBy ( ) ;
await delay ( getRandomInt ( 1 , 5 ) ) ;
2024-08-24 11:17:58 +08:00
//获取邮件发送人
let mail _for = mails _is _google [ index ] . find ( '.yP' ) [ 0 ] . attr ( "email" )
//是否回复
let whether _or _not _to _reply _to = searchStringContainsArrayKeywords ( mail _for , [ 'google' , 'youtube' ] )
console . log ( ` 当前邮件发送人: ${ mail _for } 是否回复 ${ whether _or _not _to _reply _to } ` )
2024-08-21 17:35:28 +08:00
//邮箱回复
2024-08-24 11:17:58 +08:00
if ( getRandomInt ( 0 , 1 ) == 0 && whether _or _not _to _reply _to ) {
2024-08-22 14:06:42 +08:00
$ ( ".amn >.ams.bkH" ) . click ( ) ;
2024-08-21 19:24:51 +08:00
await delay ( getRandomInt ( 1 , 5 ) ) ;
2024-08-22 14:06:42 +08:00
let text = emailReply [ getRandomInt ( 0 , emailReply . length - 1 ) ] ;
console . log ( "注入内容为" + text ) ;
2024-08-22 14:27:34 +08:00
// $(".Ar.Au >div >div").html = text;
2024-08-22 16:25:33 +08:00
let tmp _ele = $ ( ".Ar.Au >div" ) ;
$ ( ".Ar.Au >div >div" ) . html ( tmp _ele . html ( text ) ) ;
2024-08-21 19:24:51 +08:00
await delay ( 3 ) ;
2024-08-22 14:06:42 +08:00
$ ( ".dC >div" ) . click ( ) ;
2024-08-21 17:35:28 +08:00
await delay ( getRandomInt ( 1 , 5 ) ) ;
}
//返回
2024-08-22 14:06:42 +08:00
$ ( ".aim.ain >div >div >div + div" ) . click ( ) ;
2024-08-21 17:35:28 +08:00
await delay ( getRandomInt ( 5 , 10 ) ) ;
}
2024-08-21 11:30:52 +08:00
send _close ( id ) ;
}
async function youtube _shorts2 ( r , id ) {
//等待五秒怕加载速度过慢
await delay ( 5 ) ;
//观看次数
2024-08-21 13:56:31 +08:00
let views = getRandomInt ( 50 , 100 ) ;
2024-08-21 11:30:52 +08:00
for ( let index = 0 ; index < views ; index ++ ) {
//观看多少秒
2024-08-21 19:24:51 +08:00
let watch _time = getRandomInt ( 10 , 20 ) ;
2024-08-21 11:30:52 +08:00
await delay ( getRandomInt ( 2 , 5 ) ) ;
//随机暂停播放
if ( getRandomInt ( 0 , 1 ) == 0 ) {
$ ( ".video-stream.html5-main-video" ) . click ( ) ;
await delay ( getRandomInt ( 2 , 5 ) ) ;
$ ( ".video-stream.html5-main-video" ) . click ( ) ;
await delay ( watch _time ) ;
}
//点赞
2024-08-21 17:35:28 +08:00
if ( getRandomInt ( 0 , 5 ) == 3 ) {
2024-08-22 14:06:42 +08:00
//点赞
2024-08-21 17:35:28 +08:00
document . querySelector ( "#like-button > yt-button-shape > label" ) . click ( ) ;
}
2024-08-22 14:06:42 +08:00
if ( getRandomInt ( 0 , 5 ) == 2 ) {
2024-08-21 17:35:28 +08:00
//不爱看
document
. querySelector ( "#dislike-button > yt-button-shape > label" )
. click ( ) ;
}
2024-08-22 14:06:42 +08:00
//论区操作
2024-08-21 11:30:52 +08:00
if ( getRandomInt ( 0 , 1 ) == 0 ) {
//打开评论区
$ (
"#comments-button > ytd-button-renderer > yt-button-shape > label > button > yt-touch-feedback-shape > div > div.yt-spec-touch-feedback-shape__fill"
) . click ( ) ;
2024-08-21 19:24:51 +08:00
await delay ( getRandomInt ( 5 , 15 ) ) ;
2024-08-21 11:30:52 +08:00
//随机滑动评论区
2024-08-21 13:56:31 +08:00
// RandomIntscrollBy();
2024-08-21 11:30:52 +08:00
//关闭评论区
$ (
"#visibility-button > ytd-button-renderer > yt-button-shape > button > yt-touch-feedback-shape > div > div.yt-spec-touch-feedback-shape__stroke"
) . click ( ) ;
}
2024-08-22 14:06:42 +08:00
await delay ( getRandomInt ( 3 , 5 ) ) ;
2024-08-21 13:56:31 +08:00
//下一个视频
2024-08-21 17:35:28 +08:00
$ (
"#navigation-button-down > ytd-button-renderer > yt-button-shape > button > yt-touch-feedback-shape > div > div.yt-spec-touch-feedback-shape__stroke"
) . click ( ) ;
2024-08-21 11:30:52 +08:00
}
//看完关闭窗口
send _close ( id ) ;
}
2024-08-20 14:26:52 +08:00
async function youtube ( r , id ) {
2024-08-21 11:30:52 +08:00
alert ( "youto" ) ;
2024-08-20 14:26:52 +08:00
// 点击长视频观看
await delay ( 10 ) ;
2024-08-21 13:56:31 +08:00
//点击订阅 如果已经订阅过了就不用点
2024-08-21 17:35:28 +08:00
if (
$ (
"div ytd-subscribe-button-renderer yt-smartimation yt-button-shape button"
)
. eq ( 0 )
. is ( ".yt-spec-button-shape-next--filled" )
)
$ (
"div ytd-subscribe-button-renderer yt-smartimation yt-button-shape button"
)
. eq ( 0 )
. click ( ) ;
2024-08-21 13:56:31 +08:00
// 点赞
2024-08-21 17:35:28 +08:00
if (
$ (
"div ytd-segmented-like-dislike-button-renderer div ytd-toggle-button-renderer yt-button-shape button"
) . is ( ".yt-spec-button-shape-next--tonal" )
)
$ (
"div ytd-segmented-like-dislike-button-renderer div ytd-toggle-button-renderer yt-button-shape button"
)
. eq ( 0 )
. click ( ) ;
2024-08-20 14:26:52 +08:00
2024-08-21 17:35:28 +08:00
$ ( "button .yt-spec-button-shape-next--size-m" ) . click ( ) ;
next _vido = Math . round (
Math . random ( ) *
$ ( "contents ytd-compact-video-renderer div ytd-thumbnail a" ) . length
) ;
if (
next _vido ==
$ ( "contents ytd-compact-video-renderer div ytd-thumbnail a" ) . length
)
next _vido = next _vido - 1 ;
$ ( "#contents ytd-compact-video-renderer div ytd-thumbnail a" )
. eq ( next _vido ) [ 0 ]
. click ( ) ;
2024-08-20 14:26:52 +08:00
}
function ServiceLogin ( r , id ) {
let mkeww = 0 ,
mue = setInterval ( function ( ) {
if ( $ ( "form ul>li img" ) . length ) {
clearInterval ( mue ) ;
setTimeout ( function ( ) {
$ ( "form ul>li img" ) . eq ( 0 ) [ 0 ] . click ( ) ;
} , 1900 ) ;
} else {
mkeww ++ ;
if ( mkeww > 106 ) {
clearInterval ( mue ) ;
}
}
} , 500 ) ;
send _close ( id ) ;
}
function send _close ( id ) {
chrome . runtime . sendMessage ( {
ty : "remove" ,
id : id ,
} ) ;
}
2024-08-19 18:02:42 +08:00
2024-08-19 17:05:34 +08:00
chrome . runtime . sendMessage (
{
ty : "get" ,
} ,
2024-08-19 18:02:42 +08:00
function ( obj ) {
2024-08-20 14:26:52 +08:00
let r = obj . name ;
let id = obj . id ;
console . log ( "传递过来的obj" + JSON . stringify ( obj ) ) ;
2024-08-19 17:05:34 +08:00
switch ( r ) {
case "naver" :
2024-08-20 14:26:52 +08:00
naver ( r , id ) ;
2024-08-19 17:05:34 +08:00
break ;
2024-08-20 14:26:52 +08:00
case "youtube" :
youtube ( r , id ) ;
2024-08-20 11:02:53 +08:00
break ;
2024-08-21 11:30:52 +08:00
case "youtube_shorts" :
youtube _shorts2 ( r , id ) ;
break ;
case "news_google" :
news _google ( r , id ) ;
break ;
2024-08-21 17:35:28 +08:00
case "play_google" :
play _google ( r , id ) ;
break ;
case "play_finance" :
play _finance ( r , id ) ;
break ;
case "mail" :
mail ( r , id ) ;
break ;
2024-08-22 14:06:42 +08:00
case "calendar" :
calendar ( r , id ) ;
break ;
2024-08-22 16:25:33 +08:00
case "shopping" :
shopping ( r , id ) ;
break ;
2024-08-19 17:05:34 +08:00
default :
break ;
}
}
) ;
2024-08-20 10:05:28 +08:00
chrome . runtime . onMessage . addListener ( ( request , sender , sendResponse ) => {
2024-08-20 14:26:52 +08:00
console . log ( request ) ;
sendResponse ( "我收到了你的情书, popup~" ) ;
} ) ;