梦泽宇 发表于 2023-7-16 16:58:52

求助——实战 Fetch 劫持知乎返回内容

!(data/attachment/forum/202307/16/165700m2yaa2idsa223s4d.png)

请问下是怎么抓到这个链接的?😳

李恒道 发表于 2023-7-16 18:58:49

f12-> 网络
然后触发一下数据刷新
一个一个数据包看

梦泽宇 发表于 2023-7-16 20:41:44

李恒道 发表于 2023-7-16 18:58
f12-> 网络
然后触发一下数据刷新
一个一个数据包看

噢噢,谢谢道哥哥,我还以为道哥哥藏了一手,哈哈哈
我也找到了title了{:4_111:}

李恒道 发表于 2023-7-16 21:08:41

梦泽宇 发表于 2023-7-16 20:41
噢噢,谢谢道哥哥,我还以为道哥哥藏了一手,哈哈哈
我也找到了title了 ...

反正就是进去挨个点开看看,找到对应的xhr/fetch就可以抬手劫持了

梦泽宇 发表于 2023-7-16 21:18:50

李恒道 发表于 2023-7-16 21:08
反正就是进去挨个点开看看,找到对应的xhr/fetch就可以抬手劫持了

发现个问题道哥,挂了这个修改标题的脚本,知乎加载特别慢,一直都在加载,这有解决办法吗?

梦泽宇 发表于 2023-7-16 21:20:54

首次进去没什么问题,刷新一下之后就一直加载不出来

李恒道 发表于 2023-7-16 23:49:24

梦泽宇 发表于 2023-7-16 21:20
首次进去没什么问题,刷新一下之后就一直加载不出来

首次加载走的SSR合水
第二次刷新才是一直加载不出来
你自己写的劫持代码吗?
代码论坛丢一份看看

梦泽宇 发表于 2023-7-17 10:06:48

李恒道 发表于 2023-7-16 23:49
首次加载走的SSR合水
第二次刷新才是一直加载不出来
你自己写的劫持代码吗?


跟着哥哥的教程走的
// ==UserScript==
// @name         实战知乎劫持返回内容
// @namespace    https://bbs.tampermonkey.net.cn/
// @version      0.1.0
// @descriptiontry to take over the world!
// @author       You
// @match      https://www.zhihu.com/*
// @run-at       document-start
// @grant      none
// ==/UserScript==
let oldFetch = fetch;
function hookFetch(...args) {
return new Promise((resolve, reject) => {
    oldFetch.call(this, ...args).then((response) => {
      if (
      args.length !== 0 &&
      args.indexOf &&
      args.indexOf("/api/v3/feed/topstory/recommend") !== -1
      ) {
      const oldJson = response.json;
      response.json = function () {
          return new Promise((resolve, reject) => {
            oldJson.apply(this, arguments).then((result) => {
            //在这里对json函数返回的数据进行修改,然后再resolve出去
            result.data.forEach((articleItem) => {
                articleItem.target.question.title = "油猴脚本实战";
            });
            resolve(result);
            });
          });
      };
      }
      resolve(response);
    });
});
}
window.fetch = hookFetch;

李恒道 发表于 2023-7-17 14:48:46

梦泽宇 发表于 2023-7-17 10:06
跟着哥哥的教程走的

报错是实战知乎劫持返回内容.user.js:28 Uncaught (in promise) TypeError: Cannot set properties of undefined (setting 'title')
出错行是
articleItem.target.question.title = "油猴脚本实战";
说明兼容性不太好,有些没有标题
那就加个if判断
            result.data.forEach((articleItem) => {
                if(articleItem.target.question!==undefined){
                articleItem.target.question.title = "油猴脚本实战";
                }
            });

梦泽宇 发表于 2023-7-17 16:55:14

李恒道 发表于 2023-7-17 14:48
报错是实战知乎劫持返回内容.user.js:28 Uncaught (in promise) TypeError: Cannot set properties of un ...

噢噢,感谢道哥
页: [1]
查看完整版本: 求助——实战 Fetch 劫持知乎返回内容