您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Attempts to fix broken images by replacing them with working timestamps based on JSON results
当前为
// ==UserScript== // @name Wayback Machine Image Fixer // @namespace DoomTay // @description Attempts to fix broken images by replacing them with working timestamps based on JSON results // @include http://web.archive.org/web/* // @exclude http://web.archive.org/web/*.jpg // @exclude http://web.archive.org/web/*.jpeg // @exclude http://web.archive.org/web/*.png // @exclude http://web.archive.org/web/*.gif // @exclude http://web.archive.org/web/*.bmp // @version 1.1.0 // @grant GM_xmlhttpRequest // ==/UserScript== var pics = document.images; function replaceImage(target) { var originalURL = target.src.substring(target.src.lastIndexOf('http')); var newURL = GM_xmlhttpRequest({ url: "http://archive.org/wayback/available?url=" + originalURL, method: "GET", headers: {"Accept": "application/json"}, onload: function(response) { if(JSON.parse(response.responseText)["archived_snapshots"]["closest"] == undefined) { //Try and "expose" image links that are unclickable due to the image not loading if(target.alt == "" && target.width == 0 && target.parentNode.nodeName == "A") { //Changing the source is pretty hacky, but it's the only way I can think of to turn "invisible" image links into something clickable target.src = target.src.substring(target.src.lastIndexOf("http")); target.width = 25; target.height = 25; } return; } else target.src = JSON.parse(response.responseText)["archived_snapshots"]["closest"]["url"]; } }); } function evaluateImage(pic) { GM_xmlhttpRequest({ url: pic.src, method: "HEAD", onload: function(response) { //Going off of response code is unreliable. Sometimes an image will return a status code of 200 even though it would redirect to an error page should you view the image directly, so we're looking at content type instead if(response.responseHeaders.indexOf("Content-Type: text/html") > -1) { replaceImage(pic); } } }); } for(var i = 0; i < pics.length; i++) { //Skip over stuff related to the Wayback Machine toolbar if(isInToolbar(pics[i])) continue; evaluateImage(pics[i]); } function isInToolbar(node,parent) { var baseNode = node; var found = false; while(baseNode != document) { baseNode = baseNode.parentNode; if(baseNode == document.getElementById("wm-ipp")) { return true; } } return false; }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址