实战百度自定义分享码求助
本帖最后由 梦泽宇 于 2023-9-24 17:43 编辑> 本帖最后由 梦泽宇 于 2023-9-24 17:42 编辑
> 本帖最后由 梦泽宇 于 2023-9-24 17:37 编辑
*原教程链接:https://bbs.tampermonkey.net.cn/thread-877-1-1.html*
练习代码:
```
// ==UserScript==
// @name EX——百度网盘
// @namespace http://tampermonkey.net/
// @version 0.1
// @descriptiontry to take over the world!
// @author You
// @match https://pan.baidu.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=baidu.com
// @grant none
// ==/UserScript==
// 1. 创建 XHR 对象
console.log("=============================")
// 2. 调用 open 函数,保存url——为了后续send修改时判断是否是需要的那个url
let hookOpen = XMLHttpRequest.prototype.open
XMLHttpRequest.prototype.open = (method, url, async, user, password) => {
this._url = url
console.log(this._url)
return hookOpen.call(this, method, url, async, user, password)
}
let hookSend = XMLHttpRequest.prototype.send
XMLHttpRequest.prototype.send = () => {
//找到需要的那个链接
if(this._url && this._url.indexOf && this._url.indexOf("share/set")){
//判断是否包含需要修改的数据
console.log("链接:", this._url)
console.log("参数:", arguments)
}
return hookSend()
}
```
问题:本人想在send函数里查看下筛选后的链接(this._url)和参数(arguments),但是运行了之后百度网盘官网出现如下错误,想请问这是啥问题?
!(data/attachment/forum/202309/24/173302yxwyefzdj99qxxx7.jpg)
1. 箭头函数的问题, 用箭头函数this都不知道指向哪里去了
2. 劫持的 `XMLHttpRequest.prototype.send` 返回的应该是一个函数, 而不是函数返回值
```js
// 1. 创建 XHR 对象
console.log("=============================")
// 2. 调用 open 函数,保存url——为了后续send修改时判断是否是需要的那个url
let hookOpen = XMLHttpRequest.prototype.open
/* 修改为普通匿名函数 */
XMLHttpRequest.prototype.open = function (method, url, async, user, password){
this._url = url
console.log(this._url)
return hookOpen.call(this, method, url, async, user, password)
}
let hookSend = XMLHttpRequest.prototype.send
/* 修改为普通匿名函数 */
XMLHttpRequest.prototype.send = function (){
//找到需要的那个链接
if (this._url && this._url.indexOf && this._url.indexOf("share/set")) {
//判断是否包含需要修改的数据
console.log("链接:", this._url)
console.log("参数:", arguments)
}
/* 返回函数 */
return hookSend.call(this)
}
``` Yiero 发表于 2023-9-24 19:52
1. 箭头函数的问题, 用箭头函数this都不知道指向哪里去了
2. 劫持的 `XMLHttpRequest.prototype.send`...
哇,是这样呀{:4_115:},箭头函数有大坑,谢谢{:4_101:} 还有一个send可能带参数,不要漏了,否则post请求会出问题:
return hookSend.apply(this, arguments) cxxjackie 发表于 2023-9-24 21:54
还有一个send可能带参数,不要漏了,否则post请求会出问题:
嗯嗯!够细的,谢谢C大{:4_106:}
页:
[1]