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

[油猴脚本开发指南]基本油猴编程的一些常见误区

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

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

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

    积分
    6758

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

    发表于 2021-8-10 19:39:12 | 显示全部楼层
    涛之雨 发表于 2021-8-9 18:17
    [md]```js
    const w = unsafeWndow || window,
        id = setInterval(() => {

    哥哥你对xhr的返回内容劫持有什么好的想法么,我是基础proxy代理,感觉性能太低了
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

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

    使用道具 举报

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

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

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

    积分
    6758

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

    发表于 2021-8-10 19:39:16 | 显示全部楼层
    cxxjackie 发表于 2021-8-9 21:37
    好像matches有兼容性问题,如果你的浏览器不支持,在代码前加一句:

    哥哥你对xhr的返回内容劫持有什么好的想法么,我是基础proxy代理,感觉性能太低了
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

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

    使用道具 举报

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

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

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

    积分
    6758

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

    发表于 2021-8-10 20:31:02 | 显示全部楼层
    yy550623346 发表于 2021-8-10 18:56
    重新上传截图了,

    contentwindow穿透,match匹配都可以的
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

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

    使用道具 举报

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

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

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

    发表于 2021-8-10 22:33:17 | 显示全部楼层
    本帖最后由 cxxjackie 于 2021-8-10 22:37 编辑
    李恒道 发表于 2021-8-10 19:39
    哥哥你对xhr的返回内容劫持有什么好的想法么,我是基础proxy代理,感觉性能太低了 ...

    呃,我没怎么用过proxy,所以性能问题不太了解。如果只关心返回内容的话,是不是没必要劫持整个对象,只用Object.defineProperty劫持属性比较好?可以试一下这段代码,我也不确定性能会不会比proxy好:

    1. const xhrOpen = XMLHttpRequest.prototype.open;
    2. XMLHttpRequest.prototype.open = function() {
    3.   const xhr = this;
    4.   if (arguments[1] == hookUrl) {
    5.     const property = xhr.responseType ? 'response' : 'responseText';
    6.     const getter = xhr.__lookupGetter__(property);
    7.     Object.defineProperty(xhr, property, {
    8.       get: () => {
    9.         let result = getter.call(xhr);
    10.         console.log(result);
    11.         return result;
    12.       }
    13.     });
    14.   }
    15.   return xhrOpen.apply(xhr, arguments);
    16. };
    复制代码

    这有个问题就是__lookupGetter__的兼容性不是很好,可能有其他获取getter的办法?还有个比较dirty的做法是open以后延迟100毫秒再劫持onreadystatechange,从readystatechange里面对response做手脚





    已有1人评分好评 贡献 理由
    李恒道 + 1 + 1 ggnb!

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

    回复

    使用道具 举报

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

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

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

    积分
    6758

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

    发表于 2021-8-10 22:39:25 | 显示全部楼层
    cxxjackie 发表于 2021-8-10 22:33
    呃,我没怎么用过proxy,所以性能问题不太了解。如果只关心返回内容的话,是不是没必要劫持整个对象,只用 ...

    延迟100ms骚到我了
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

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

    使用道具 举报

  • TA的每日心情
    慵懒
    2023-11-28 11:18
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    17

    主题

    161

    回帖

    327

    积分

    荣誉开发者

    积分
    327

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

    发表于 2021-8-10 23:38:54 | 显示全部楼层
    李恒道 发表于 2021-8-10 19:39
    哥哥你对xhr的返回内容劫持有什么好的想法么,我是基础proxy代理,感觉性能太低了 ...

    emmm没有,xhr劫持我都不咋用,因为用起来太麻烦,如果有其他的办法实现我一定会绕过这个。。。如果不行我就自己写插件(也不愿意用xhr劫持)
    回复

    使用道具 举报

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

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

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

    积分
    6758

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

    发表于 2021-8-11 00:20:11 | 显示全部楼层
    涛之雨 发表于 2021-8-10 23:38
    emmm没有,xhr劫持我都不咋用,因为用起来太麻烦,如果有其他的办法实现我一定会绕过这个。。。如果不行 ...

    没事了...我是xhr痴迷患者,感觉干个xhr劫持解决大部分东西太舒服了....哥哥晚安早点睡
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

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

    使用道具 举报

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

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

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

    积分
    6758

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

    发表于 2021-10-1 21:55:16 | 显示全部楼层
    cxxjackie 发表于 2021-8-9 21:34
    给一个我自己写的函数:
    原理是首先用querySelector获取元素,获取不到时用MutationObserver监听插入节点, ...

    哥哥我突然有一个问题
    mutationObserver的观察函数为啥不直接考虑用queryselector
    而要遍历所有的数组和addednodes
    感觉不如直接上个queryselector查询是否存在的效率更高吧

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

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

    使用道具 举报

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

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

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

    发表于 2021-10-1 22:03:00 | 显示全部楼层
    李恒道 发表于 2021-10-1 21:55
    哥哥我突然有一个问题
    mutationObserver的观察函数为啥不直接考虑用queryselector
    而要遍历所有的数组和a ...

    因为我感觉querySelector会比从addedNodes里找要慢,毕竟范围大了一点,不过实际也没有测试过,可能性能差异小到可以忽略不计的,还得考虑matches的兼容性,现在来看可能确实用querySelector要好一点。
    回复

    使用道具 举报

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

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

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

    积分
    6758

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

    发表于 2021-10-1 22:24:30 | 显示全部楼层
    cxxjackie 发表于 2021-10-1 22:03
    因为我感觉querySelector会比从addedNodes里找要慢,毕竟范围大了一点,不过实际也没有测试过,可能性能 ...

    懂了...我之前没考虑过querySelector的性能问题,大佬牛逼!
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

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

    使用道具 举报

    发表回复

    本版积分规则

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