不确定是无心之过还是有心之举。
我有翻引用的小习惯。如果你在文章中添加了引用资料,或者哪怕单纯地加一个指向其他文章的超链接,如果我手头有时间,那么我会打开看一看——至少验证一下这篇文章确实是你所表述的那样。
有些时候,被引用的文章来自 Medium. 但这篇文章的主人因为这样那样的原因选择了删除这篇文章。这样一来,查证连就断掉了。但是好在有 Web Archive, 如果其他人有抓过这个页面的快照,那么还是能调取的。
但是 Medium 偏偏在它的一坨被混淆的 JS 代码里加入了这样一些东西:
/// https://web.archive.org/web/20240718000345js_/https://cdn-client.medium.com/lite/static/js/main.fbe03b98.js
/// <SNIP>
ue = function() {
var e = (0, se.R)().loading, t = (0,ce.z)({ name:"allow_iframe", placeholder:!0 });
return e || t ? null : l.createElement("div",
{dangerouslySetInnerHTML:
{__html:
'<script>if (window.self !== window.top) window.location = "about:blank"<\/script>'
}
}
)
}
/// <SNIP>
var r = n(80296), a = n(96540), o = function () {
var e = a.useState(!1), t = (0, r.A)(e, 2), n = t[0], o = t[1];
return a.useEffect(
function() {
"undefined" != typeof window && window.self !== window.top && o(!0)
},
[]);
}
/// <SNIP>
我不是 JavaScript 逆向领域专家,所以除了简单格式化一下代码也没法做太多工作。不过,你可能已经发现了 window.self !== window.top 这个关键内容。这个代码用于检查当前页面是否是在一个 <iframe> 里。
在 Web Archive 中,展示出来的效果就是这个页面会不停地刷新自己。
解决办法很简单,通过 NoScript 工具暂时禁用掉 JavaScript 就可以了。直觉上,Medium 本站肯定是通过 AJAX 动态加载内容进来的,不过存档工具走一遭之后,图文完成渲染即定型。所以即使不加载 JavaScript, 也不妨碍我能读完这篇内容。
这么做的原因之一大概是 Medium 的一些内容是付费的。而如果你可以通过存档工具绕过付费墙的话,这个东西就成了笑话了。不过,我目前真想不到如何通过 <iframe> 绕过付费墙。通过共享 Cookie 么?这个似乎在浏览器上完全不可行啊。
看来归档并不是一个简单的「存一下数据就完事」的工作,有些时候还得想方法对付这些难缠的站点。
正在加载评论……