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

一次失败的研究

[复制链接]
  • TA的每日心情
    慵懒
    2024-10-21 21:38
  • 签到天数: 53 天

    [LV.5]常住居民I

    7

    主题

    34

    回帖

    68

    积分

    初级工程师

    积分
    68

    新人报道喜迎中秋

    发表于 2023-11-12 13:00:22 | 显示全部楼层 | 阅读模式

    一篇帖子不仅可以记录成功,也可以记录失败,所有花费过时间的事情都是值得被记录的。

    起因

    一之必应积分的脚本最近运提示必应每日签到错误, 请手动检查积分或者重新执行,早上起来在调试了一下其实逻辑并不难,难得是发现问题出在哪里。
    这里简单说一下脚本的逻辑,先获取用户任务信息判断是否达标,没有达标就网络请求获取百度热点关键字再发送请求来完成任务,功能不复杂但需要耐心找接口数据,还有同步执行代码流程,这个脚本是一个相当不错的例子。

    发现的问题

    一开始以为接口的数据格式发生了变化,所以导致代码执行结果异常,后来通过打印请求会来的数据,发现所有请求都是成功的,请求后的数据可以正常解析和使用,仅仅是微软后台不认可之前简单的请求操作,所以没算做是完成了搜索任务,而手动搜索的方式积分是会正常增加的,很明显就是后台加强了积分的认证方式。

    调试代码的收获

    1. 强化了对ScriptCat脚本的了解,原来后台脚本和定时脚本是通过返回一个promise对象作为脚本的入口,之前还在想怎么突然就用到return关键字了,也没有发现有那个函数包裹return的内容。
    2. js实现同步操作的代码技巧,关键字 asyncawait ,两个关键字在同一个函数的申明处和里面函数调用处。
    3. web上可以通过ua识别网络请求设备的型号的,当然这也是可以伪造的。
    4. 加深了GM_xmlhttpRequest的理解,以前只是了解它是用来发起网络请求的,但是里面的一些参数都没详细了解,用的时候再查一下也行但终究不熟练。

    修复想法

    既然需要手动搜索才能完成任务,那就模拟手动填写和触发,先说结果没有成功,以目前技术水平还没能力实现,只是通过获取input标签赋值,但是模拟键盘上enter事件的触发没有成功,这里有一个抗后面再说。
    通过gpt找到了触发enter事件的代码,在控制台调试没有成功,直接上脚本调试也没有成功。

    // 创建一个键盘事件  
    var event = new KeyboardEvent('keydown', {  
        key: 'Enter',  
        code: 'Enter',  
        charCode: 13,  
        keyCode: 13,  
        which: 13  
    });  
    // 触发该事件  
    document.dispatchEvent(event);

    自己也摸索到了一些东西,在浏览器的源代码区可以调试js代码,右侧断点下面有作用域``调用堆栈还有我想要的事件侦听器断点,这里面可以给键盘的监听自动下断点找到enter触发的函数,后面的部分还是不太会实现。

    上面说的坑

    1. 存在死循环,想通过匹配https://cn.bing.com/search?q=*模拟手动点击enter打开新的检索网页,但新的网页还是会触发脚本的运行,但也应该有办法控制的。
    2. 还可以通过 window.location.href 来实现,控制的方法可以通过GM_getValue GM_setValue,目前没有尝试,因为今天的PC检索任务手动搞完了。
    3. 暂时还没有很好的完成必应手机端任务的想法,每天少了60积分想想也心痛,如果可以找到微软后台判断的机制应该可以更好实现自动。

    代码还是要自己写一遍,仅仅分析别人的代码还是会有疏漏之处。

  • TA的每日心情
    开心
    6 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

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

    发表于 2023-11-12 16:34:22 | 显示全部楼层
    ggnb,可以的

    手机端的话,之前是看UserAgent来的,现在不知道怎么样
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-12-24 00:00
  • 签到天数: 31 天

    [LV.5]常住居民I

    4

    主题

    39

    回帖

    52

    积分

    初级工程师

    积分
    52

    油中3周年挑战者 lv1

    发表于 2023-11-12 19:53:44 | 显示全部楼层
    ggnb!!!!!
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-21 21:38
  • 签到天数: 53 天

    [LV.5]常住居民I

    7

    主题

    34

    回帖

    68

    积分

    初级工程师

    积分
    68

    新人报道喜迎中秋

    发表于 2023-11-12 21:58:30 | 显示全部楼层

    谢谢哥哥
    回复

    使用道具 举报

  • TA的每日心情
    开心
    6 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

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

    发表于 2023-11-13 10:34:47 | 显示全部楼层
    已更新
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-21 21:38
  • 签到天数: 53 天

    [LV.5]常住居民I

    7

    主题

    34

    回帖

    68

    积分

    初级工程师

    积分
    68

    新人报道喜迎中秋

    发表于 2023-11-13 21:27:34 | 显示全部楼层

    从哥哥的代码中学到了没有一个参数是无用的
    回复

    使用道具 举报

  • TA的每日心情
    开心
    6 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

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

    发表于 2023-11-14 09:39:30 | 显示全部楼层
    youwh 发表于 2023-11-13 21:27
    从哥哥的代码中学到了没有一个参数是无用的

    本来有个id的参数的,但是不是很好解(虽然解出来了,代码不好写),不加也能用就没加了
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

    发表回复

    本版积分规则

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