上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖
楼主: 李恒道 - 

[油猴脚本开发指南]破解鼠标移出限制实战

[复制链接]
  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5992

    回帖

    6780

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6780

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2021-10-2 17:34:32 | 显示全部楼层 | 阅读模式

    前言

    由于他人账号,无法提供具体网址,这节课主要跟大家聊一下思路,火狐浏览器我研究了一下没找到监听器,所以这节课用chrome浏览器的f12

    目标

    移除网页的鼠标移出检测

    我们查看事件监听器

    图片.png

    根据测试,是点击其他页面的时候触发停止消息。

    查阅各个消息,我将其注意力放在了

    图片.png

    https://developer.mozilla.org/zh-CN/docs/Web/API/Document/visibilitychange_event

    visibilitychange

    当其选项卡的内容变得可见或被隐藏时,会在文档上触发 visibilitychange (能见度更改)事件。

    所以我们点击移除再进行测试一下

    发现这时候移出检测依然存在。

    所以这里我直接暴力测试了,对所有监听器进行逐个移除。

    最后确定了blur监听器起到了检测屏幕移出的功能。

    点击右边代码,发现了

    图片.png

    在你浏览其他窗口页面、或是浏览器最小化、又或是点击了其他程序等等,都算是浏览器窗口失去焦点,那么 window.onblur 事件就会触发。

    当你浏览别的窗口或者别的程序,直接点就是当你的窗口失去焦点的时候,就会触发window.onblur

    所以解决方法也非常简单

    直接window.onblur=null;即可

    经过测试解除成功!

    后续

    通过测试,发现最小化标签页依然会暂停,这里我们不得不怀疑上visibilitychange了。

    我们直接移除visibilitychange事件,发现已经解除这个问题了。

    这里证明是visibilitychange的问题,我们点击

    图片.png

    进入源码

    图片.png

    下方有一个document.addEventListener函数,e是事件名,s是回调函数,这里我们跳到了s

    根据之前的

    图片.png

    可以确定,事件名是visibilitychange,函数则是这个,这时候我们想到了之前学的addeventlistener事件劫持。

    直接用代码邦邦上去就是两拳,顺便解决onblur

    let oldadd=EventTarget.prototype.addEventListener
    EventTarget.prototype.addEventListener=function (...args){
        if(window.onblur!==null){
            window.onblur=null;
        }
        console.log('addEventListener',...args)
        oldadd.call(this,...args)
    }

    然后刷新一下页面看输出,因为输出了一大堆addeventlistener的消息,所以这里我们过滤一下

    图片.png

    这里可以看到只有一个,所以我们直接写代码过滤!

    let oldadd=EventTarget.prototype.addEventListener
    EventTarget.prototype.addEventListener=function (...args){
        if(window.onblur!==null){
            window.onblur=null;
        }
        if(args.length!==0&&args[0]==='visibilitychange'){
            console.log('劫持visibilitychange成功,奥利给!')
            return;
        }
        return oldadd.call(this,...args)
    }

    跑一下测试看看

    图片.png

    发现提示了消息。

    这时候再看事件监听器,发现不存在了blur监听器以及visibilitychange监听器,拿捏!

    图片.png

    经过测试没有问题,我们已经成功破解鼠标移出限制。

    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5992

    回帖

    6780

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6780

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2021-10-2 17:48:03 | 显示全部楼层
    终于找到一个addeventlistener实战例子,太难了...
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-30 00:00
  • 签到天数: 122 天

    [LV.7]常住居民III

    29

    主题

    601

    回帖

    542

    积分

    专家

    积分
    542

    油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2021-10-2 20:12:29 | 显示全部楼层
    李恒道 发表于 2021-10-2 17:48
    终于找到一个addeventlistener实战例子,太难了...

    能开前人未有之先河,别出机杼,自成一体,流传千古者,皆为大宗师
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2023-8-5 11:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    6

    回帖

    8

    积分

    助理工程师

    积分
    8
    发表于 2023-4-29 16:33:41 | 显示全部楼层
    网站的js在我的油猴脚本执行前就添加了匿名事件怎么搞,劫持不了之前的事件了
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5992

    回帖

    6780

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6780

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2023-4-29 22:50:49 | 显示全部楼层
    pocoloco 发表于 2023-4-29 16:33
    网站的js在我的油猴脚本执行前就添加了匿名事件怎么搞,劫持不了之前的事件了 ...

    尝试上document-start试试
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2023-8-5 11:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    6

    回帖

    8

    积分

    助理工程师

    积分
    8
    发表于 2023-8-1 11:51:51 | 显示全部楼层
    李恒道 发表于 2023-4-29 22:50
    尝试上document-start试试

    感谢!成功了
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表