一个包含数千个 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 多个图标下载到本地。
重获新生:一个现代化的图标档案馆
所有图标被成功保存后,它们被迁移到了一个全新的静态网站上。这个新网站解决了旧网站的所有可用性问题,使其能够被永久保存和访问。
新网站的改进包括:
- 现代技术: 彻底摒弃了服务器端图像地图,所有内容都通过标准链接访问。
- 功能改进: 增加了客户端搜索功能,让用户可以快速找到想要的图标。
- 开放获取: 整个图标库可以被轻松浏览、下载,甚至可以完整克隆整个代码仓库。
虽然新网站的外观依然保留了那个时代的风格,但至少它现在对全世界开放,并且能够为后人所存档。
这个项目不仅拯救了一批珍贵的数字文化遗产,也展示了如何利用简单的技术手段来克服过时的网络障碍。