为什么我imgur的图片加载不出来?

简单来说就是黑IP了,因为imgur在大陆是无法访问的,我们需要使用科学的方法来访问,这时候你节点的IP可能就在imgur的黑名单里面,导致没办法加载,具体表现为访问i.imgur.com(图片直链)返回429,访问imgur.com会返回

{
    "data": {
        "error": "Imgur is temporarily over capacity. Please try again later."
    },
    "success": false,
    "status": 403
}

那怎么办呢?

其实最简单的方法就是换一个节点

但是,我发现,换了一圈我现有的(包括self-hosted)都不能正常访问!!!

有网友说,很多数据中心的IP进了imgur的黑名单了,恰巧这时我也不想再找了,于是就想着自己折腾折腾,想一个方法。

灵感 1

很多网站在大陆访问比较慢,或者是被屏蔽了,这时候有一些人会做一些公益的镜像站,比如Hugging Face的镜像站HF-Mirror

于是我就想,有没有一个imgur的镜像站呢?

答:没找到。

但是,有一些提供图片镜像缓存服务的网站,他们能够缓存图床的直链,并转发给用户。具体的可以参考这篇

这里以https://img.noobzone.ru/getimg.php?url=为例,把要访问的imgur图片链接直接加在网址后面(作为参数传入)即可访问,且不需要科学的方法。

例如:https://img.noobzone.ru/getimg.php?url=https://i.imgur.com/TbWS0cZ.png

灵感 2

本来想写个油猴脚本来实现的,但是感觉大材小用了,切比较麻烦,不够通用(其实是懒得写了)。

我想到了Header Editor (google.com),这个浏览器插件可以重定向所有满足某种条件的请求。

于是写一个正则匹配i.imgur.com为域名的URL,重定向至https://img.noobzone.ru/getimg.php?url=即可。

安装插件后,选择导入,这里可以参考我写的,从

https://gist.github.com/shiquda/e5af95cb0476d72e6287b45ec591c42c/raw/d45f5713b044d857e5a3d316248ffa8238142b90/gistfile1.txt

导入。

或者直接复制这里的文本为配置文件:

{
	"request": [
		{
			"enable": true,
			"name": "imgur",
			"ruleType": "redirect",
			"matchType": "regexp",
			"pattern": "^(http(s)?://i.imgur.com/)",
			"exclude": "",
			"group": "imgur",
			"isFunction": false,
			"action": "redirect",
			"to": "https://img.noobzone.ru/getimg.php?url=$1"
		}
	],
	"sendHeader": [],
	"receiveHeader": [],
	"receiveBody": []
}

导入后开启规则应该就能生效了。

局限

这里只支持在浏览器中访问,如果需要在其他软件中访问,可能需要一些其他分流软件,这里不再探讨。感兴趣的读者可以自行探索实现。

参考

  1. 图片防盗链最终解决方案,超级简单实用的方法 | 爱淘数字资源馆 (1itao.com)
  2. imgur办掉了所有的乌龟壳ip访问图片-美国VPS综合讨论-全球主机交流论坛 - Powered by Discuz! (hostloc.com)

标题:解决imgur图片无法加载的问题
作者:shiquda
地址:https://shiquda.link/load-imgur-images
除非特别说明,本博客上的所有内容均在CC BY-SA 4.0许可下提供。 如需转载请注明作者与来源,谢谢!