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

网页点击大挑战!

[复制链接]
  • TA的每日心情
    开心
    2023-2-28 23:59
  • 签到天数: 191 天

    [LV.7]常住居民III

    672

    主题

    5369

    回帖

    6284

    积分

    管理员

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

    积分
    6284

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

    发表于 2021-11-26 12:51:39 | 显示全部楼层 | 阅读模式
    悬赏100油猫币未解决
    地址:http://110.42.220.200/test.html
    该网页使用了isTrusted验证

    要求:使用脚本点击按钮,显示两个ok


    奖励:100油猫币,以及一杯蜜雪冰城(蜜雪冰城请不起了)

    警告:该网页不同于往期的油猴脚本开发教程,难度较大,如果基础不太好不推荐挑战




    已有1人评分油猫币 理由
    王一之 + 1 已结贴,后续没有奖励了,但是哥哥们也可以.

    查看全部评分 总评分:油猫币 +1 

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

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

    该用户从未签到

    0

    主题

    27

    回帖

    26

    积分

    助理工程师

    积分
    26
    发表于 2021-11-26 13:32:39 | 显示全部楼层
    不明觉厉。
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-7-6 11:14
  • 签到天数: 253 天

    [LV.8]以坛为家I

    41

    主题

    319

    回帖

    2178

    积分

    荣誉开发者

    累计点滴改进,迈向完美品质。

    积分
    2178

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

    发表于 2021-11-26 14:04:09 | 显示全部楼层
    本帖最后由 Hangover 于 2021-11-26 14:09 编辑
    1. // ==UserScript==
    2. // @name         测试
    3. // @namespace    http://tampermonkey.net/
    4. // @version      0.1
    5. // @description  try to take over the world!
    6. // @author       You
    7. // @match        http://110.42.220.200/test.html
    8. // @require      https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js
    9. // ==/UserScript==

    10. $(function(){
    11.     'use strict';
    12.     $('#btn').bind("myClick", function(){
    13.         $('#result').html('ok');
    14.         $('#result2').html('ok');
    15.     });
    16.     $('#btn').trigger("myClick");
    17. });
    复制代码
    好像偷渡成功了?
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-2-28 23:59
  • 签到天数: 191 天

    [LV.7]常住居民III

    672

    主题

    5369

    回帖

    6284

    积分

    管理员

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

    积分
    6284

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

    发表于 2021-11-26 15:10:39 | 显示全部楼层

    算偷渡!没有正式户籍没法颁发奖项!
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

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

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-6-12 15:07
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    7

    主题

    94

    回帖

    156

    积分

    荣誉开发者

    积分
    156

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

    发表于 2021-11-26 17:43:46 | 显示全部楼层
    雕虫小技竟然敢班门弄斧

    大威天龙~

    1. // ==UserScript==
    2. // @name         艹翻李恒道(王一之)
    3. // @namespace    https://bbs.tampermonkey.net.cn/
    4. // @version      0.1.0
    5. // @description  try to take over the world!
    6. // @include      http://110.42.220.200/test.html
    7. // @author       You
    8. // @grant        unsafeWindow
    9. // @run-at       document-start
    10. // ==/UserScript==

    11. var myEvent= function(){
    12.     var isTrusted=true;
    13.     var target = false;
    14.     function myEvent(){
    15.     this.isTrusted=true;
    16.     this.target=false
    17.     }


    18.     function PrivateConstructor() {
    19.         this.publicFunc = function() {}
    20.         this.isTrusted=true;
    21.         this.target=false;
    22.     }
    23.     PrivateConstructor.prototype = PointerEvent.prototype;
    24.     myEvent.prototype.target={id:'btn'};
    25.     return new PrivateConstructor()

    26. }
    27. var _1addEventListener = EventTarget.prototype.addEventListener;
    28. EventTarget.prototype.addEventListener = function (tip,callback) {
    29.     let old = arguments[1]
    30.     let args = [...arguments]
    31.     let temp = args[1];
    32.     arguments[1] = function (ev) {
    33.         let args2 = [...arguments];
    34.         args2[0] = Object.assign({}, args2[0])
    35.         args2[0].target = ev.target;
    36.         args2[0].isTrusted = ev.isTrusted;
    37.         if(ev.target.id!='div'){
    38.             args2[0]=new myEvent()
    39.             args2[0].isTrusted=true
    40.             Object.defineProperties(args2[0],{target:{value:{id:ev.target.id}}})
    41.             console.log(args2[0])
    42.             //debugger
    43.         }
    44.         return temp(...args2);
    45.     }
    46.     _1addEventListener.apply(this, arguments);
    47. }
    复制代码
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    871

    回帖

    1368

    积分

    荣誉开发者

    积分
    1368

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2021-11-26 18:20:49 | 显示全部楼层
    看了一下是对addEventListener做了手脚,我直接还原addEventListener绕开检测
    1. // ==UserScript==
    2. // @name         网页点击大挑战!
    3. // @description  网页点击大挑战!
    4. // @namespace    Sency
    5. // @author       Sency
    6. // @version      1.0
    7. // @match        http://110.42.220.200/test.html
    8. // @grant        none
    9. // @run-at       document-start
    10. // ==/UserScript==

    11. (function() {
    12.     'use strict';
    13.     const oldAddEv = window.EventTarget.prototype.addEventListener;
    14.     const oldOnload = window.onload;
    15.     window.onload = () => {
    16.         oldOnload();
    17.         window.EventTarget.prototype.addEventListener = oldAddEv; //还原addEventListener
    18.         const btn = document.querySelector('#btn');
    19.         btn.addEventListener('click', e => {
    20.             e.stopImmediatePropagation(); //阻止原有事件监听
    21.             document.querySelector('#result').innerHTML = 'ok';
    22.             document.querySelector('#result2').innerHTML = 'ok';
    23.         }, true);
    24.         btn.click();
    25.     };
    26. })();
    复制代码
    感觉你应该把addEventListener的劫持写到onload外面去,这样还原难度会大一点。

    回复

    使用道具 举报

    该用户从未签到

    5

    主题

    12

    回帖

    33

    积分

    助理工程师

    积分
    33
    发表于 2021-11-26 23:16:30 | 显示全部楼层
    >  本帖最后由 LinHQ 于 2021-11-27 23:05 编辑


    ```js
    // ==UserScript==
    // @name        New script
    // @namespace   Violentmonkey Scripts
    // @match       http://110.42.220.200/*
    // @grant       none
    // @version     0.0.1
    // @author      LinHQ
    // @description 2021/11/26 下午7:01:33
    // ==/UserScript==

    // 直接去掉 alert
    window.alert = () => false;
    let old = EventTarget.prototype.addEventListener;
    EventTarget.prototype.addEventListener = function (...args) {
        let hdl = args[1];
        args[1] = function (...iargs) {
          let tp = {};
          for (let p in iargs[0]){
            tp[p] = iargs[0][p];
          }
          tp.isTrusted = true;
          //tp.__proto__ = Event.prototype;
          Object.setPrototypeOf(tp, Event.prototype)
          iargs[0] = tp;
          //console.log(iargs[0] instanceof Event)
          //return hdl(...iargs);
          return hdl.apply(this, iargs);
        }
        //return old(...args);
        return old.apply(this, args);
    }

    setTimeout(()=>document.querySelector("#btn").click(), 3500)
    ```

    本来忘记 `this` 了的,但没想到这样反而不会反复弹窗 😄 。

    ---

    嗯,略微改了下代码。

    已有1人评分油猫币 理由
    王一之 + 1 那就不算成功哦,不过也不远啦~.

    查看全部评分 总评分:油猫币 +1 

    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    871

    回帖

    1368

    积分

    荣誉开发者

    积分
    1368

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2021-11-27 10:09:02 | 显示全部楼层
    cxxjackie 发表于 2021-11-26 18:20
    看了一下是对addEventListener做了手脚,我直接还原addEventListener绕开检测感觉你应该把addEven ...

    想了一下这种做法有点取巧,是以破坏原有事件监听为前提的,实战中对简单事件还好,复杂的事件就不太适用了,改成下面的做法伪造一个事件进去:
    1. // ==UserScript==
    2. // @name         网页点击大挑战!
    3. // @description  网页点击大挑战!
    4. // @namespace    Sency
    5. // @author       Sency
    6. // @version      2.0
    7. // @match        http://110.42.220.200/test.html
    8. // @grant        none
    9. // @run-at       document-start
    10. // ==/UserScript==

    11. (function() {
    12.     'use strict';
    13.     const oldAddEv = window.EventTarget.prototype.addEventListener;
    14.     const oldOnload = window.onload;
    15.     window.onload = () => {
    16.         const btn = document.querySelector('#btn');
    17.         window.EventTarget.prototype.addEventListener = function(...args) {
    18.             const callback = args[1];
    19.             args[1] = function(e) {
    20.                 if (e.target === btn && e.type === 'click') {
    21.                     //用Proxy代理的对象可以通过instanceof Event检测
    22.                     const eProxy = new Proxy(e, {
    23.                         get: function(target, property) {
    24.                             if (property === 'isTrusted') {
    25.                                 return true;
    26.                             } else {
    27.                                 return Reflect.get(target, property);
    28.                             }
    29.                         }
    30.                     });
    31.                     return callback.call(this, eProxy);
    32.                 } else {
    33.                     return callback.call(this, e);
    34.                 }
    35.             }
    36.             return oldAddEv.apply(this, args);
    37.         };
    38.         oldOnload();
    39.         btn.click();
    40.     };
    41. })();
    复制代码


    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    6

    回帖

    11

    积分

    助理工程师

    积分
    11

    新人报道

    发表于 2021-11-27 12:23:31 | 显示全部楼层
    ok,搞定了,嘻嘻,好了嗷
    已有1人评分好评 理由
    李恒道 + 1 可以贴出来代码看看,如果成功应该也可以请.

    查看全部评分 总评分:好评 +1 

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-2-28 23:59
  • 签到天数: 191 天

    [LV.7]常住居民III

    672

    主题

    5369

    回帖

    6284

    积分

    管理员

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

    积分
    6284

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

    发表于 2021-11-27 19:02:02 | 显示全部楼层
    结贴
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

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

    使用道具 举报

    发表回复

    本版积分规则

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