怎么劫持网站请求数据的参数?
本帖最后由 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 继续运行,完成任务
请教大佬,应该如何劫持,实现上述目标,谢谢大佬! gues1688 发表于 2024-10-17 22:05
感谢大佬回复,对劫持还没怎么入门,我学习一下相关知识,如有不懂再来请教! ...
查询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
// @descriptiontry 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.src)
return origin.call(this,...args)
}
```
最核心的替代部分我没写
就留给哥哥当课后作业了 他这个没有使用XHR通信
send的源码是
```js
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参数 李恒道 发表于 2024-10-17 21:53
他这个没有使用XHR通信
send的源码是
```js
感谢大佬回复,对劫持还没怎么入门,我学习一下相关知识,如有不懂再来请教! 李恒道 发表于 2024-10-17 22:20
查询https://developer.mozilla.org/zh-CN/docs/Web/API/Node
可以得出原型链在Node.prototype.inser ...
太感谢大佬了!正不知所措。。。看到大佬的再次回复,看到了一丝曙光
我学习一下,看看能否入门!
再次感谢! 李恒道 发表于 2024-10-17 22:20
查询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.src !== undefined){
if (args.src.includes('GetBKRelTopicFundNew')){
args.src = args.src.replace(/pagesize=10/,'pagesize=300')
}
}
// console.log(args.src)
return origin.call(this,...args)
}
```
顺便问一下,问题解决了,要怎么结束悬赏,没看懂 gues1688 发表于 2024-10-17 23:17
解决了!感谢大佬!
最终代码如下,js入门不久,不太会写,很菜:
```
棒棒
油猴可以多查看https://learn.scriptcat.org/来学习技巧和开发方法
希望哥哥没事多来论坛玩哦 李恒道 发表于 2024-10-17 23:41
棒棒
油猴可以多查看https://learn.scriptcat.org/来学习技巧和开发方法
谢谢大佬!
我会常来学习和请教的!
页:
[1]