You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过JavaScript获取网页归档重写后的URL问题求助

问题原因

Wayback Machine(网页归档)的链接重写机制是通过客户端注入的脚本实现的:它会拦截链接的点击事件,自动跳转到带归档前缀的URL,但并不会真正修改DOM元素的href属性原始值。

你在浏览器元素检查器中看到的带web.archive.org的URL,是浏览器根据Wayback的跳转逻辑展示的“实际跳转目标”,而非DOM属性中存储的原始值,所以直接通过element.href或element.getAttribute('href')获取到的是页面归档时的原始链接。

解决方法

方法1:利用Wayback全局变量拼接(最可靠)

Wayback会在归档页面中注入全局变量_wb_js_base,它的值就是当前页面的归档前缀(比如示例中的https://web.archive.org/web/20090101161506/)。直接用这个变量拼接原始链接即可得到完整归档URL:

// 定位到目标链接
const mailLink = document.querySelector('a[href="http://mail.sapo.pt/"]');
// 拼接完整归档URL
const fullArchiveUrl = _wb_js_base + mailLink.getAttribute('href');
console.log(fullArchiveUrl);
// 输出:https://web.archive.org/web/20090101161506/http://mail.sapo.pt/

方法2:手动提取归档前缀拼接

如果全局变量不可用,可以从当前页面的URL中提取归档前缀:

// 提取当前页面的归档前缀(截取到时间戳后的斜杠位置)
const archivePrefix = window.location.href.split('/').slice(0, 5).join('/') + '/';
// 定位目标链接
const mailLink = document.querySelector('a[href="http://mail.sapo.pt/"]');
// 拼接完整URL
const fullArchiveUrl = archivePrefix + mailLink.getAttribute('href');

注意事项

  • 如果原始链接是相对路径(比如/mail),需要先拼接原始站点的根URL(示例中是http://www.sapo.pt/),再拼归档前缀;
  • 避免直接使用element.href,因为它会被浏览器解析为当前页面的绝对路径(但不是归档路径),要用element.getAttribute('href')获取原始属性值。

内容的提问来源于stack exchange,提问作者3snoW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 00:56:11