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

[油猴脚本开发指南]XHR劫持的第二种格式

[复制链接]

该用户从未签到

16

主题

56

回帖

91

积分

初级工程师

积分
91

新人报道

发表于 2023-1-2 23:45:40 | 显示全部楼层
如果使用这段代码,劫持并修改POST data 之后在再发起网络请求该如何做
回复
订阅

使用道具 举报

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

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

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

    积分
    6758

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

    发表于 2023-1-2 23:47:38 | 显示全部楼层
    Major 发表于 2023-1-2 23:45
    如果使用这段代码,劫持并修改POST data 之后在再发起网络请求该如何做

    劫持并修改POST data 之后在再发起网络请求 是什么意思?
    修改数据吗
    https://bbs.tampermonkey.net.cn/thread-752-1-1.html
    可以参考这个demo
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

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

    使用道具 举报

    该用户从未签到

    16

    主题

    56

    回帖

    91

    积分

    初级工程师

    积分
    91

    新人报道

    发表于 2023-1-3 00:19:46 | 显示全部楼层
    李恒道 发表于 2023-1-2 23:47
    劫持并修改POST data 之后在再发起网络请求 是什么意思?
    修改数据吗
    https://bbs.tampermonkey.net.cn/t ...

    就是在psot发送出去之前 修改 PSOT,请求内容。例如POST请求中的参数是1,截获修改成2后再把请求发送出去
    回复

    使用道具 举报

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

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

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

    积分
    6758

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

    发表于 2023-1-3 09:47:16 | 显示全部楼层
    Major 发表于 2023-1-3 00:19
    就是在psot发送出去之前 修改 PSOT,请求内容。例如POST请求中的参数是1,截获修改成2后再把请求发送出去 ...

    是可以的
    我发的就是
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

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

    使用道具 举报

    该用户从未签到

    0

    主题

    24

    回帖

    14

    积分

    助理工程师

    积分
    14
    发表于 2023-2-3 16:34:02 | 显示全部楼层
    请问我想在点击某个按钮后,讲某个xhr的返回值保存下来或者转发到另一个接口上可以用这个方式吗?
    回复

    使用道具 举报

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

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

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

    积分
    6758

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

    发表于 2023-2-3 16:58:11 | 显示全部楼层
    908517142 发表于 2023-2-3 16:34
    请问我想在点击某个按钮后,讲某个xhr的返回值保存下来或者转发到另一个接口上可以用这个方式吗?
    ...

    这样适用于监听xhr
    不需要修改response
    直接堆send劫持就可以了
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

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

    使用道具 举报

    该用户从未签到

    0

    主题

    24

    回帖

    14

    积分

    助理工程师

    积分
    14
    发表于 2023-2-6 10:04:26 | 显示全部楼层
    李恒道 发表于 2023-2-3 16:58
    这样适用于监听xhr
    不需要修改response
    直接堆send劫持就可以了

    哥哥你好,我最近在网上翻了很多哥哥的帖子研究了快一个星期,但是还是挺失败的
    我其实并不需要修改response或任何东西,只需要在点击页面后,对所有fetch/xhr中的请求进行检查,拿到特定链接的请求响应中的那个json返回值就可以,我就可以用ajax把这个json字符串另外发送
    但是目前,我试遍了各种方法,都无法正确的检查到所有的fetch请求,尤其是后续点击按钮时 开发者工具中 fetch/xhr 中新出现的请求项。
    请哥哥教我一下好吗,我头痛了一个星期了
    回复

    使用道具 举报

  • TA的每日心情

    2023-2-16 01:48
  • 签到天数: 2 天

    [LV.1]初来乍到

    0

    主题

    12

    回帖

    10

    积分

    助理工程师

    积分
    10
    发表于 2023-2-15 14:22:53 | 显示全部楼层
    李恒道 发表于 2023-2-3 16:58
    这样适用于监听xhr
    不需要修改response
    直接堆send劫持就可以了

    在原有接口返回数据后,修改返回数据,这个没有问题。
    我想在返回数据后再发送一个请求,根据这个请求再修改返回的数据。可是加入异步函数后,修改数据就失效了。求大佬告知。

    下面是代码

    1.     function addXMLRequestCallback(callback) {
    2.         var oldSend, i;
    3.         if (XMLHttpRequest.callbacks) {
    4.             XMLHttpRequest.callbacks.push(callback);
    5.         } else {
    6.             XMLHttpRequest.callbacks = [callback];
    7.             oldSend = XMLHttpRequest.prototype.send;
    8.             XMLHttpRequest.prototype.send = function () {
    9.                 for (i = 0; i < XMLHttpRequest.callbacks.length; i++) {
    10.                     XMLHttpRequest.callbacks[i](this);
    11.                 }
    12.                 this.payload = arguments[0]
    13.                 oldSend.apply(this, arguments);
    14.             };
    15.         }
    16.     }

    17.     function async_GM_req() {
    18.         return new Promise((resolve, reject) => {
    19.             GM_xmlhttpRequest({
    20.                 method: "POST",
    21.                 url: "http://127.0.0.1:8080/",
    22.                 headers: {"Content-Type": "application/json"},
    23.                 data:JSON.stringify({arg:"tapmer arg"}),
    24.                 synchronous: true,
    25.                 onload: function(response) {
    26.                     resolve(JSON.parse(response.responseText))
    27.                 }
    28.             });
    29.         });
    30.     }

    31.     addXMLRequestCallback(function (xhr) {
    32.         xhr.addEventListener("load",async function () {
    33.             if (xhr.readyState == 4 && xhr.status == 200) {

    34.                 // 加了这行异步整个代码就失效了
    35.                 const res =await async_GM_req()

    36.                 const resObj = JSON.parse(xhr.responseText);
    37.                 Object.defineProperty(xhr, "responseText", {
    38.                     writable: true,
    39.                 });
    40.                 resObj.data.push({test:"hi tapmer"})
    41.                 xhr.responseText = JSON.stringify(resObj);
    42.             }
    43.         });
    44.     });
    复制代码

    回复

    使用道具 举报

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

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

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

    积分
    6758

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

    发表于 2023-2-15 15:38:52 | 显示全部楼层
    清清清 发表于 2023-2-15 14:22
    在原有接口返回数据后,修改返回数据,这个没有问题。
    我想在返回数据后再发送一个请求,根据这个请求再 ...

    这个是不允许异步的
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

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

    使用道具 举报

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

    [LV.7]常住居民III

    712

    主题

    5959

    回帖

    6758

    积分

    管理员

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

    积分
    6758

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

    发表于 2023-2-15 15:39:14 | 显示全部楼层
    清清清 发表于 2023-2-15 14:22
    在原有接口返回数据后,修改返回数据,这个没有问题。
    我想在返回数据后再发送一个请求,根据这个请求再 ...

    而且这个是监听的,应该用修改的
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

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

    使用道具 举报

    发表回复

    本版积分规则

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