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

怎么劫持网站请求数据的参数?

[复制链接]

该用户从未签到

2

主题

7

回帖

14

积分

助理工程师

积分
14
发表于 昨天 21:28 | 显示全部楼层 | 阅读模式
悬赏2油猫币已解决

本帖最后由 gues1688 于 2024-10-17 21:31 编辑

本帖最后由 gues1688 于 2024-10-17 21:29 编辑

打开下面这个网址:

https://fund.eastmoney.com/ztjj/default.html#!zdf/SYL_1N/curr/BK000278-国资云/fst/DESC

会通过ajax向下面这个url请求数据:

https://api.fund.eastmoney.com/ZTJJ/GetBKRelTopicFundNew?callback=jQuery18303897346401549022_1729137195250&sort=undefined&sorttype=DESC&pageindex=1&pagesize=10&tp=BK000278&isbuy=1&_=1729137195380

里面的参数 pagesize=10,想改成 pagesize=30。

我的调试过程是,在chorme浏览器中,按F12进入开发者工具:

1、在【网络】调试中,过滤 GetBKRelTopicFundNew,找到这个网络请求

2、在【请求调用堆栈】中,点击函数 ajax,跳到 ajax 的源代码处

3、在函数 ajax 源代码处,设置条件断点,条件为 c.url.includes('GetBKRelTopicFundNew')

4、按 F5 刷新网页,javaScript 中断于函数 ajax 位置

5、在控制台修改参数:c.url = c.url.replace(/pagesize=10/,'pagesize=300')
6、按 F8 继续运行,完成任务

请教大佬,应该如何劫持,实现上述目标,谢谢大佬!

最佳答案

查看完整内容

[md]查询https://developer.mozilla.org/zh-CN/docs/Web/API/Node 可以得出原型链在Node.prototype.insertBefore 可以得出劫持代码 ```js // ==UserScript== // @name New Userscript // @namespace https://bbs.tampermonkey.net.cn/ // @version 0.1.0 // @description try to take over the world! // @author You // @match https://fund.eastmoney.com/* // @run-at document-start // ...
  • TA的每日心情
    擦汗
    2024-7-16 09:20
  • 签到天数: 192 天

    [LV.7]常住居民III

    706

    主题

    5814

    回帖

    6652

    积分

    管理员

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

    积分
    6652

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

    发表于 昨天 21:28 | 显示全部楼层

    gues1688 发表于 2024-10-17 22:05

    感谢大佬回复,对劫持还没怎么入门,我学习一下相关知识,如有不懂再来请教! ...

    查询https://developer.mozilla.org/zh-CN/docs/Web/API/Node
    可以得出原型链在Node.prototype.insertBefore
    可以得出劫持代码

    // ==UserScript==
    // @name         New Userscript
    // @namespace    https://bbs.tampermonkey.net.cn/
    // @version      0.1.0
    // @description  try to take over the world!
    // @author       You
    // @match        https://fund.eastmoney.com/*
    // @run-at       document-start
    // ==/UserScript==
    const origin=Node.prototype.insertBefore
    Node.prototype.insertBefore=function(...args){
        debugger;
        console.log(args[0].src)
        return origin.call(this,...args)
    }

    最核心的替代部分我没写
    就留给哥哥当课后作业了

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

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

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-7-16 09:20
  • 签到天数: 192 天

    [LV.7]常住居民III

    706

    主题

    5814

    回帖

    6652

    积分

    管理员

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

    积分
    6652

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

    发表于 昨天 21:53 | 显示全部楼层

    他这个没有使用XHR通信
    send的源码是

                    send: function(s, o) {
                        n = i.createElement("script"),
                        n.async = "async",
                        e.scriptCharset && (n.charset = e.scriptCharset),
                        n.src = e.url,
                        n.onload = n.onreadystatechange = function(e, i) {
                            if (i || !n.readyState || /loaded|complete/.test(n.readyState)) {
                                n.onload = n.onreadystatechange = null,
                                r && n.parentNode && r.removeChild(n),
                                n = t,
                                i || o(200, "success")
                            }
                        }
                        ,
                        r.insertBefore(n, r.firstChild)
    

    可以看出是通过createElement创建标签然后通过insertBefore插入
    我们可以得出针对DOM的insertBefore函数进行劫持可以修改设置的src参数

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

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

    使用道具 举报

    该用户从未签到

    2

    主题

    7

    回帖

    14

    积分

    助理工程师

    积分
    14
    发表于 昨天 22:05 | 显示全部楼层
    李恒道 发表于 2024-10-17 21:53
    [md]他这个没有使用XHR通信
    send的源码是
    ```js

    感谢大佬回复,对劫持还没怎么入门,我学习一下相关知识,如有不懂再来请教!
    回复

    使用道具 举报

    该用户从未签到

    2

    主题

    7

    回帖

    14

    积分

    助理工程师

    积分
    14
    发表于 昨天 22:43 | 显示全部楼层

    李恒道 发表于 2024-10-17 22:20

    [md]查询https://developer.mozilla.org/zh-CN/docs/Web/API/Node
    可以得出原型链在Node.prototype.inser ...

    太感谢大佬了!正不知所措。。。看到大佬的再次回复,看到了一丝曙光
    我学习一下,看看能否入门!
    再次感谢!

    回复

    使用道具 举报

    该用户从未签到

    2

    主题

    7

    回帖

    14

    积分

    助理工程师

    积分
    14
    发表于 昨天 23:17 | 显示全部楼层

    李恒道 发表于 2024-10-17 22:20

    [md]查询https://developer.mozilla.org/zh-CN/docs/Web/API/Node
    可以得出原型链在Node.prototype.inser ...

    解决了!感谢大佬!
    最终代码如下,js入门不久,不太会写,很菜:

            const origin=Node.prototype.insertBefore
            Node.prototype.insertBefore=function(...args){
                // debugger;
                if (args[0].src !== undefined){
                    if (args[0].src.includes('GetBKRelTopicFundNew')){
                        args[0].src = args[0].src.replace(/pagesize=10/,'pagesize=300')
                    }
                }
                // console.log(args[0].src)
                return origin.call(this,...args)
            }
    

    顺便问一下,问题解决了,要怎么结束悬赏,没看懂

    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-7-16 09:20
  • 签到天数: 192 天

    [LV.7]常住居民III

    706

    主题

    5814

    回帖

    6652

    积分

    管理员

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

    积分
    6652

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

    发表于 昨天 23:41 | 显示全部楼层
    gues1688 发表于 2024-10-17 23:17
    [md]解决了!感谢大佬!
    最终代码如下,js入门不久,不太会写,很菜:
    ```

    棒棒
    油猴可以多查看https://learn.scriptcat.org/来学习技巧和开发方法

    希望哥哥没事多来论坛玩哦
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

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

    使用道具 举报

    发表回复

    本版积分规则

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