Synth Daily

今天,我拯救了 7,234 张老动图

一个包含数千个 90 年代 GIF 图标的巨大合集,因其网站使用了一种名为服务器端图像地图 (server-side imagemaps) 的过时技术而面临失传的风险。这种技术将图片的真实链接隐藏在服务器上,使用户无法直接下载。通过分析服务器如何处理鼠标点击坐标,一个自动化脚本被开发出来,用以模拟点击并逐一揭示所有隐藏的图片链接。最终,7,234 个图标被成功抢救,并被发布在一个带有搜索功能的现代化、可访问的新网站上。

一个几乎无法存档的 90 年代网站

这个名为 Ibiblio Icon Browser 的网站,是一个典型的 90 年代互联网产物。它的结构看似简单,但背后隐藏着一个巨大的存档难题。

  • 网站结构: 由 1 个主索引页、24 个子索引页和 57 个目录页组成,最终指向 114 个图标合集。
  • 核心障碍: 网站导航依赖的不是普通的超链接,而是服务器端图像地图。

当你点击图像时,浏览器并不知道目标网址。它只是将你点击的像素坐标发送给服务器。服务器根据这些坐标,查询一个内部的映射文件,然后将你重定向到正确的页面或文件。

这种做法意味着,所有图标的真实 URL 完全没有出现在前端代码中,常规的网络爬虫或下载工具根本无法抓取这些图片。

破解“点击”的秘密

解决方案在于逆向工程,弄清楚服务器如何将坐标转换为链接。通过实验发现,点击图像地图上的特定网格区域,总会跳转到同一个图标。这表明服务器背后有一个预设的坐标映射规则。

抢救过程遵循了以下步骤:

  • 识别规律: 确定了图像地图上所有有效的点击区域,这些区域由一系列固定的 X 和 Y 坐标构成。
  • 生成请求: 编写脚本,为每一个图标合集和每一对可能的坐标组合,生成一个特定的请求 URL,格式如下:https://.../imagemap/icon{库编号}?{x},{y}
  • 捕获重定向: 向服务器发送这些请求。当服务器返回 HTTP 302 重定向响应时,脚本会记录下响应头 Location: 字段中的真实图片地址。
  • 批量下载: 收集到所有真实的图片 URL 后,使用 wget 等工具将全部 7,000 多个图标下载到本地。

重获新生:一个现代化的图标档案馆

所有图标被成功保存后,它们被迁移到了一个全新的静态网站上。这个新网站解决了旧网站的所有可用性问题,使其能够被永久保存和访问。

新网站的改进包括:

  • 现代技术: 彻底摒弃了服务器端图像地图,所有内容都通过标准链接访问。
  • 功能改进: 增加了客户端搜索功能,让用户可以快速找到想要的图标。
  • 开放获取: 整个图标库可以被轻松浏览、下载,甚至可以完整克隆整个代码仓库。

虽然新网站的外观依然保留了那个时代的风格,但至少它现在对全世界开放,并且能够为后人所存档。

这个项目不仅拯救了一批珍贵的数字文化遗产,也展示了如何利用简单的技术手段来克服过时的网络障碍。