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

ajax劫持库ajaxHooker

  [复制链接]

该用户从未签到

5

主题

21

回帖

42

积分

初级工程师

积分
42

新人报道油中3周年

发表于 2024-1-8 22:47:10 | 显示全部楼层
本帖最后由 JML 于 2024-1-9 22:56 编辑
cxxjackie 发表于 2024-1-8 22:07
有测试账号吗?我注册不了,验证码加载不出来。
偶尔不成功可能是执行时机的问题,改为document-start试 ...

不是执行时机的问题,document-start一直有设置。等级不够无法私信,****64:
回复
订阅

使用道具 举报

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

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

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

    发表于 2024-1-9 22:10:33 | 显示全部楼层
    JML 发表于 2024-1-8 22:47
    不是执行时机的问题,document-start一直有设置。等级不够无法私信,****64:
    6LSm5Y+377yad29ydWNlekBzb ...
    1. ajaxHooker.filter([
    2.     {type: 'fetch', url: 'dox.grammarly.com/documents'},
    3. ]);
    4. ajaxHooker.hook(request => {
    5.     request.response = res => {
    6.         res.json[0].first_content = 'test';
    7.     };
    8. });
    复制代码

    我测试了一下,没有发现报错的情况,你具体是劫持哪个请求发生的问题呢?最好提供一下能复现的代码。
    回复

    使用道具 举报

    该用户从未签到

    5

    主题

    21

    回帖

    42

    积分

    初级工程师

    积分
    42

    新人报道油中3周年

    发表于 2024-1-9 22:31:24 | 显示全部楼层
    cxxjackie 发表于 2024-1-9 22:10
    我测试了一下,没有发现报错的情况,你具体是劫持哪个请求发生的问题呢?最好提供一下能复现的代码。 ...

    失败代码昨天删除了......测试的是https://subscription.grammarly.com/api/v2/subscription
    点击Account页面就有,测试修改"isPremium": false为true不生效。
    回复

    使用道具 举报

    该用户从未签到

    5

    主题

    21

    回帖

    42

    积分

    初级工程师

    积分
    42

    新人报道油中3周年

    发表于 2024-1-9 22:38:44 | 显示全部楼层
    本帖最后由 JML 于 2024-1-9 22:57 编辑
    cxxjackie 发表于 2024-1-9 22:10
    我测试了一下,没有发现报错的情况,你具体是劫持哪个请求发生的问题呢?最好提供一下能复现的代码。 ...

    这种修改完网页直接显示Something went wrong...
    Something went wrong on our end. Please try to reload the page.
    是不是改不了了。

    复制代码
    回复

    使用道具 举报

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

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

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

    发表于 2024-1-9 22:48:41 | 显示全部楼层
    JML 发表于 2024-1-9 22:31
    失败代码昨天删除了......测试的是https://subscription.grammarly.com/api/v2/subscription
    点击Account ...

    我测试过了,劫持本身是成功的,页面报错是因为你修改的信息不够,光改一个isPremium不足以通过付费验证,这是报错信息:
    There is an inconsistency between Auth and Subscription services, the user’s subscription has isPremium=true flag but the user itself has type='Free' from the Auth response
    大意就是检测到isPremium为true但你是免费用户,说明还有别的地方要改,这需要你自己去逆向他的代码了,库本身是没问题的。
    回复

    使用道具 举报

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

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

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

    发表于 2024-1-9 22:52:46 | 显示全部楼层
    JML 发表于 2024-1-9 22:38
    这种修改完网页直接显示Something went wrong...
    Something went wrong on our end. Please try to reload ...

    你不要整段重写他的响应值,res.json.isPremium = true 就行了,有些字段可能每次都不一样,写死了就容易出问题。
    回复

    使用道具 举报

    该用户从未签到

    5

    主题

    21

    回帖

    42

    积分

    初级工程师

    积分
    42

    新人报道油中3周年

    发表于 2024-1-9 22:54:50 | 显示全部楼层
    本帖最后由 JML 于 2024-1-9 22:59 编辑
    cxxjackie 发表于 2024-1-9 22:52
    你不要整段重写他的响应值,res.json.isPremium = true 就行了,有些字段可能每次都不一样,写死了就容易 ...

    还有这种网页,https://www.kdocs.cn/l/cvz6BJpAdbHV
    控制台调试都没有任何输出,劫持没看到效果。
    控制台显示:The page did not request an origin-keyed agent cluster, but was put in one anyway because the origin 'https://www.kdocs.cn' had previously been placed in an origin-keyed agent cluster. Update your headers to uniformly request origin-keying for all pages on the origin.
    是不是不行?
    例如将包含metadata的链接响应数据中的file_acl.modify改为20
    回复

    使用道具 举报

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

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

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

    发表于 2024-1-10 22:35:19 | 显示全部楼层
    JML 发表于 2024-1-9 22:54
    还有这种网页,https://www.kdocs.cn/l/cvz6BJpAdbHV
    控制台调试都没有任何输出,劫持没看到效果。
    控制台 ...
    1. ajaxHooker.filter([
    2.     {url: 'drive.kdocs.cn/api/v5/files/212645213133/metadata'},
    3. ]);
    4. ajaxHooker.hook(request => {
    5.     request.response = res => {
    6.         const json = JSON.parse(res.responseText);
    7.         json.file_acl.modify = '20';
    8.         res.responseText = JSON.stringify(json);
    9.     };
    10. });
    复制代码

    修改似乎是成功的,就是我不知道该有什么效果,没看到你说的错误信息,看起来像是浏览器的设置问题,你换个浏览器再测试看看?
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    3

    回帖

    5

    积分

    助理工程师

    积分
    5
    发表于 2024-1-11 16:24:54 | 显示全部楼层
    大佬冒昧问一下,如果想在请求完成之前,直接返回请求结果应该怎么写。起因是我有个xhr请求但是速度太慢了得好几秒,我想提早返回结果
    回复

    使用道具 举报

    该用户从未签到

    5

    主题

    21

    回帖

    42

    积分

    初级工程师

    积分
    42

    新人报道油中3周年

    发表于 2024-1-11 19:29:48 | 显示全部楼层
    cxxjackie 发表于 2024-1-10 22:35
    修改似乎是成功的,就是我不知道该有什么效果,没看到你说的错误信息,看起来像是浏览器的设置问题,你 ...

    只是测试而已,没多大作用。后来发现修改响应数据即使成功,但是网页只是偶尔变成修改后的状态,可能有其他代码控制。但是如果劫持过程加入输出语句,控制台也没有任何输出。现在已经放弃了。谢谢大佬,辛苦了。
    回复

    使用道具 举报

    发表回复

    本版积分规则

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