首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
V2EX  ›  问与答

请教前段牛,如何劫持 window.onblur 事件?

  •  
  •   Telegram · 250 天前 · 2177 次点击
    这是一个创建于 250 天前的主题,其中的信息可能已经有所发展或是发生改变。
    老妹是个注册会计,每年都要在 chinahrt.com 听一些无聊的东西,刷满 18 学时。
    它的播放页是个 flash,听课时,只要该页面失去焦点,播放就暂停,也就无法计时了。



    我就想能不能用 Tamperm onkey 把 window. onblur 事件劫持了,不要运行后面的暂停函数。
    38 回复  |  直到 2017-11-29 18:26:40 +08:00
        1
    hatw   250 天前
    开个虚拟机在里边让它自己播?在外边操作应该不影响虚拟机里边的浏览器焦点吧?
        2
    Telegram   250 天前
    @hatw #1 这个方案我是考虑过滴,算是备选的,不够优雅。哈哈
        3
    safedogcc   250 天前
    不用“劫持”,直接把 window.onblur 设置为 null,或者把 blurStop 函数设置为 null 即可(如果全局):

    ``` js
    window.onblur = null;
    blurStop = () => null;
    ```
        4
    a342191555   250 天前
    不知道直接 window.onblur=null 是否可以
        5
    Telegram   250 天前
    @safedogcc #3
    @a342191555 #4
    let me have a try
        6
    m939594960   250 天前
    你劫持 blurStop() 为啥要劫持 onblur
        7
    Telegram   250 天前
    @m939594960 #6 应该是我表述问题,哈哈,就是不让 blurStop()执行
        8
    Telegram   250 天前
    @safedogcc #3
    @a342191555 #4
    试了下,不行。看来没有辣么简单。

    要是哪个大侠有兴趣帮忙看看,感激不尽了

    我先去下个虚拟机先应付一下。
        9
    Sypher   250 天前
    注册会计,厉害了
        10
    safedogcc   250 天前
    @Telegram #8
    其实可以换个角度,不用在 blurStop 上下功夫,模拟一下 onfocus 呢~~
    ``` js
    setInterval(window.focus, 1000)
    ```
        11
    Telegram   250 天前
    @Sypher #9 这个,不带这么嘲讽的,小哥
        12
    m939594960   250 天前
    http://guajibao.me/ 一块钱一天。 100 块解决这个问题?
        13
    ysc3839   250 天前 via Android
    我们学校也有类似的任务要完成,我的做法是虚拟机
        14
    Telegram   249 天前
    @ysc3839 #13
    这是另外一个需要学习的,那个系统比较简单,定时弹出知识点让你做题,同时播放暂停。只要把相应的弹出框隐藏,然后执行继续播放就行
        15
    Telegram   249 天前
    @m939594960 #12 我看了下,没那么便宜,还不如我的虚拟机
        16
    Telegram   249 天前
    @safedogcc #10 没那么简单,获得焦点不会触发继续播放,需要手动去点击播放按钮的,这后面可能涉及好几个操作,比如开始计时这些
        17
    hatw   249 天前
    @Telegram #2 简单嘛。。。系统再怎么改进反作弊都不怕。。。除非摄像头活人人脸识别了,哈哈哈
        18
    xavierskip   249 天前
    我有经验,弄过。先清除 onfocus 和 onblur,然后去掉所有的定时器,最后自己实现 ajax 发送请求。
    不知道适不适合你的课程。

        19
    shyling   249 天前
    我以前的做法是用 charles 过滤那段脚本,把对应代码删掉。。。这方法应该靠谱
        20
    begoingtodo   249 天前
    whistle 或者 fiddler 工具会用么,本地替换线上代码,随你修改
        21
    Telegram   249 天前
    @xavierskip #18 你这个好像很彻底,不过感觉我那个网站流程比较复杂,不然我都打算自己写个客户端发请求了。
        22
    Telegram   249 天前
    @shyling #19
    @begoingtodo #20
    这 2 个思路不错,么么哒
        23
    xavierskip   249 天前
    @Telegramyun.chinahrt.com 这上面的课程吗?应该都是差不多的。会在服务端验证你的播放时间的,貌似绕不过去,专门的客户端也就没什么意义了,就在页面上修改脚本就可以了。
        24
    jin5354   249 天前
    charles map-remote 再也不用考虑本地 hack 了
        25
    Telegram   249 天前
    @xavierskip #23 对,就是 yun.chinahrt.com 的课程, 我到家仔细看了下,你的代码,确实应该一样的。我也看了下他的请求,貌似就是隔几秒一个请求,发送播放到的时间点 reqLessonLocation
        26
    Telegram   249 天前
    问题大概解决了,和大家分享一下:
    这个页面有 2 个 iframe,根据 @xavierskip #18 提示,在 console 中选择 context,执行
    window.onblur = function(){console.log('onblur')};
    把 onblur 事件触发暂停给替换掉,然后就可以不触发暂停了。

    然后看 network 发现,计时其实很简单,一开始太高看他了,就是每 30 秒一个请求而已。

    这样的话,就可以直接写个程序开始脱机挂机了。懒得搞,用网页挂也可以。
        27
    Telegram   249 天前
    @xavierskip #23 然后我尝试了一下,服务端根本没做限制,我的天,可以一个请求秒杀。


    直接改其中的 reqLessonLocation 就行了。这个就是播放进度,单位是秒。直接提交视频总时长的秒数,就直接学习完了。。。
        28
    xavierskip   249 天前
    @Telegram #27 好样的,不过我今年的学完了。留着明年看看还有没有用!
        29
    yingfengi   249 天前 via Android
    虚拟机,出
        30
    ysc3839   249 天前 via Android
    @Telegram 要感谢一下你,我去看了一下我学校的那个网站,发现也是 onblur 暂停。现在的方法是把 pauseMovie 改成 playMovie,最小化之后自动播放。
        31
    sypopo   230 天前
    @Telegram 具体怎么改呀
        32
    Telegram   230 天前 via iPhone
    @sypopo #31 同一个听课网站?
        33
    sypopo   229 天前 via Android
    同一个网站,失去焦点暂停播放搞定了,那个进度时间不知道怎么改。
        34
    sypopo   229 天前 via Android
    @Telegram 是的,同一个。
        35
    Telegram   229 天前 via iPhone
    @sypopo #34 改进度太暴力,就怕后台能看出来
        36
    Telegram   229 天前 via iPhone
    @sypopo #34 看我 27 楼那个图片,听课时抓个包,然后修改其中 reqLessonLocation 的值,然后发送这个包就行了。
        37
    sypopo   229 天前 via Android
    @Telegram 已经搞定学完了。
        38
    Telegram   229 天前
    @sypopo #37 真暴力,祝你好运
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   实用小工具   ·   2897 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 21ms · UTC 08:02 · PVG 16:02 · LAX 01:02 · JFK 04:02
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1