鱼C论坛

 找回密码
 立即注册
查看: 3239|回复: 40

[已解决]tampermonkey js问题

[复制链接]
发表于 2023-7-31 16:37:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题,我在操作百度时发现连接不是真实地址,如

  1. view-source:https://www.baidu.com/link?url=vsdsl04PUGwYT-udMGNDBSgQ4D62grmcfm8fM4LVjYLVVMoaXT6EoDxqw0FKxHcy&wd=&eqid=979239ad000511ed0000000463453c3e
复制代码


源代码有这个

Snipaste_2023-07-31_16-36-15.png

然后我 request = require("request")

??

Snipaste_2023-07-31_16-37-15.png
最佳答案
2023-7-31 16:52:18

这个错误表明GM_xmlhttpRequest未定义,这可能是因为你没有正确引入Tampermonkey的API。请确保以下几点:

1. 你已经安装了Tampermonkey插件,并且在浏览器中启用了它。

2. 在脚本的元数据块(以// ==UserScript==开始的部分)中,添加了@grant GM_xmlhttpRequest

3. 确保你将脚本保存为.user.js文件,并通过Tampermonkey加载脚本。不要直接在HTML页面中引入脚本。

请检查这些方面是否正确,如果问题仍然存在,请尝试重新安装或更新Tampermonkey插件。另外,如果你使用的是其他用户脚本管理器,比如Greasemonkey,那么可能需要使用不同的API来发送XMLHttpRequest请求。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-7-31 16:37:52 | 显示全部楼层
在Tampermonkey脚本中,你需要使用GM_xmlhttpRequest而不是require("request")来发送HTTP请求。GM_xmlhttpRequest是Tampermonkey提供的一个函数,用于在用户脚本中发送跨域HTTP请求。

以下是一个示例代码,演示如何使用GM_xmlhttpRequest发送一个GET请求:

  1. // ==UserScript==
  2. // @name         Tampermonkey Request Example
  3. // @namespace    http://tampermonkey.net/
  4. // @version      1.0
  5. // @description  Example of sending a GET request using Tampermonkey and GM_xmlhttpRequest
  6. // @author       Your Name
  7. // @match        https://www.baidu.com/*
  8. // @grant        GM_xmlhttpRequest
  9. // ==/UserScript==

  10. (function() {
  11.     'use strict';

  12.     GM_xmlhttpRequest({
  13.         method: "GET",
  14.         url: "https://www.baidu.com/link?url=vsdsl04PUGwYT-udMGNDBSgQ4D62grmcfm8fM4LVjYLVVMoaXT6EoDxqw0FKxHcy&wd=&eqid=979239ad000511ed0000000463453c3e",
  15.         onload: function(response) {
  16.             console.log(response.responseText);
  17.         }
  18.     });
  19. })();
复制代码


这个示例代码将在百度页面上执行,发送一个GET请求到指定的URL,并打印响应内容到控制台(开发者工具的Console)。注意,在Tampermonkey脚本中,你无法直接访问源代码,因此view-source:前缀在请求URL中没有实际作用。

希望这个示例对你有帮助!如果你有更多问题,请随时提问。
如果问题已经解决,请设置最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-31 16:38:09 | 显示全部楼层
本帖最后由 Mike_python小 于 2023-7-31 13:42 编辑

关于 Tampermonkey JavaScript 问题和 Web 开发:

在你提供的代码中,view-source:https://www.baidu.com/link?url=v ... 1ed0000000463453c3e 是一个 view-source URL,它显示了指定 URL 页面的源代码。不过,你可能无法直接在脚本中使用这个 view-source URL 进行请求。

如果你想获取真实 URL 地址,并发送 HTTP 请求来检查它,可以考虑使用 XMLHttpRequest 对象来执行异步请求。以下是一个示例代码:


  1. // 创建 XMLHttpRequest 对象
  2. var xhr = new XMLHttpRequest();

  3. // 指定请求方法和 URL
  4. xhr.open('GET', 'https://www.baidu.com/link?url=vsdsl04PUGwYT-udMGNDBSgQ4D62grmcfm8fM4LVjYLVVMoaXT6EoDxqw0FKxHcy&wd=&eqid=979239ad000511ed0000000463453c3e', true);

  5. // 监听请求状态改变事件
  6. xhr.onreadystatechange = function() {
  7.   if (xhr.readyState === 4 && xhr.status === 200) {
  8.     // 请求成功,获取真实 URL 地址
  9.     var realURL = xhr.responseURL;
  10.    
  11.     // 在控制台打印真实 URL 地址
  12.     console.log('Real URL:', realURL);
  13.   }
  14. };

  15. // 发送请求
  16. xhr.send();
复制代码


请注意,在浏览器环境中,使用 XMLHttpRequest 对象时通常会遇到 CORS(跨源资源共享)限制。这意味着你可能无法从一个域名(例如 www.baidu.com)发送请求到另一个域名并获取响应。你可以在服务器端执行这样的请求,或者使用符合 CORS 要求的可用 API 或代理。

希望这些说明对你有所帮助!如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-31 16:40:28 | 显示全部楼层
Mike_python小 发表于 2023-7-31 16:38
关于 Tampermonkey JavaScript 问题和 Web 开发:

在你提供的代码中,view-source:https://www.baidu.com/ ...

我想搞到它的网页源代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-31 16:41:24 | 显示全部楼层
Threebody1 发表于 2023-7-31 13:40
我想搞到它的网页源代码

为什么用小号发?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-31 16:41:56 | 显示全部楼层

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-31 16:42:12 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-31 16:42:32 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-31 16:43:12 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-31 16:43:44 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-31 16:44:27 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-31 16:45:30 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-31 16:46:23 | 显示全部楼层

当然,请告诉我你有什么问题,我会尽力回答。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-31 16:47:14 | 显示全部楼层
Mike_python小 发表于 2023-7-31 16:46
当然,请告诉我你有什么问题,我会尽力回答。


我想搞到它的网页源代码而不是url
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-31 16:48:09 | 显示全部楼层
Threebody1 发表于 2023-7-31 16:47
我想搞到它的网页源代码而不是url

你爬取呗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-31 16:48:36 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-31 16:49:05 | 显示全部楼层
Threebody1 发表于 2023-7-31 13:47
我想搞到它的网页源代码而不是url
  1. // ==UserScript==
  2. // @name         Get Page Source Code
  3. // @namespace    http://your-namespace.com
  4. // @version      1.0
  5. // @description  Get the page source code using Tampermonkey
  6. // @match        https://www.baidu.com/*
  7. // @grant        GM_xmlhttpRequest
  8. // ==/UserScript==

  9. (function() {
  10.     'use strict';

  11.     // 在适当的时机触发获取网页源代码的函数
  12.     function getPageSourceCode() {
  13.         var url = "https://www.baidu.com/link?url=vsdsl04PUGwYT-udMGNDBSgQ4D62grmcfm8fM4LVjYLVVMoaXT6EoDxqw0FKxHcy&wd=&eqid=979239ad000511ed0000000463453c3e";

  14.         GM_xmlhttpRequest({
  15.             method: "GET",
  16.             url: url,
  17.             onload: function(response) {
  18.                 console.log(response.responseText);  // 打印网页源代码
  19.             }
  20.         });
  21.     }

  22.     getPageSourceCode();  // 调用函数以获取网页源代码
  23. })();
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-31 16:50:39 | 显示全部楼层
  1. Uncaught (in promise) ReferenceError: GM_xmlhttpRequest is not defined
  2.     at getPageSourceCode (userscript.html?name=Search-Cleaner.user.js&id=8065cae8-85e2-4373-970c-7eee03440a35:57:9)
  3.     at userscript.html?name=Search-Cleaner.user.js&id=8065cae8-85e2-4373-970c-7eee03440a35:66:5
  4.     at Object.<anonymous> (userscript.html?name=Search-Cleaner.user.js&id=8065cae8-85e2-4373-970c-7eee03440a35:67:3)
  5.     at St (<anonymous>:9:89)
  6.     at userscript.html?name=Search-Cleaner.user.js&id=8065cae8-85e2-4373-970c-7eee03440a35:1:90
  7.     at window.__f__lkqnmpzy.yvt (userscript.html?name=Search-Cleaner.user.js&id=8065cae8-85e2-4373-970c-7eee03440a35:1:318)
  8.     at St (<anonymous>:9:89)
  9.     at s (<anonymous>:72:214)
  10.     at <anonymous>:75:107
  11.     at g (<anonymous>:69:364)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-31 16:52:18 | 显示全部楼层    本楼为最佳答案   

这个错误表明GM_xmlhttpRequest未定义,这可能是因为你没有正确引入Tampermonkey的API。请确保以下几点:

1. 你已经安装了Tampermonkey插件,并且在浏览器中启用了它。

2. 在脚本的元数据块(以// ==UserScript==开始的部分)中,添加了@grant GM_xmlhttpRequest

3. 确保你将脚本保存为.user.js文件,并通过Tampermonkey加载脚本。不要直接在HTML页面中引入脚本。

请检查这些方面是否正确,如果问题仍然存在,请尝试重新安装或更新Tampermonkey插件。另外,如果你使用的是其他用户脚本管理器,比如Greasemonkey,那么可能需要使用不同的API来发送XMLHttpRequest请求。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-31 16:54:34 | 显示全部楼层
Mike_python小 发表于 2023-7-31 16:52
这个错误表明GM_xmlhttpRequest未定义,这可能是因为你没有正确引入Tampermonkey的API。请确保以下几点: ...

谢谢,成功了,如何使用正则表达式替换?

评分

参与人数 1荣誉 -4 鱼币 -5 贡献 -3 收起 理由
歌者文明清理员 -4 -5 -3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-4 22:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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