为什么有些图片下载失败
简短回答
下载失败几乎总是站点在拒绝这个请求,而不是你的机器出了问题。四个常见原因是:防盗链,它会拒绝那些不是从站点自己页面发出的请求;机器人防护,它会用一张人机挑战页而不是图片来回应密集请求;图片已经从服务器上删掉了;以及 Chrome 自己的保存提示,它会把一次批量下载变成几百个对话框。第一种靠重试解决,第二种靠加大间隔解决。
手动怎么做
把图片在新标签页里打开再保存,这样发出的请求符合站点的预期,对大多数单个文件都管用。
连这招都失败时,就只剩截图了——那是一份按屏幕分辨率重新编码的副本,不是原文件。
手动做法在哪失效
- 在真正试之前,页面上没有任何办法看出哪些图会被拒。
- 一个标签页一个标签页地重试,等于把批量下载的意义抵消掉了。
- 回挑战页的站点返回的是 HTTP 200,所以粗糙的下载会往磁盘上写一个顶着图片扩展名的 HTML 文件,失败还悄无声息。
- 截图会丢掉原始分辨率、原始压缩以及所有透明通道。
用 ImgDown 怎么做
第 1 步
先点重试
失败的图会标红,同时出现「重试」按钮。重试会换一种方式去取——不带来源信息,这足以绕过常见的防盗链。大部分失败在这一步就清掉了。
第 2 步
加大下载间隔
在设置里把间隔调到 800ms 或 1500ms,再跑一遍。机器人防护针对的是密集请求,把队列放慢往往就是拿到挑战页还是拿到图片的分界线。
第 3 步
关掉 Chrome 的逐个保存提示
在 Chrome 的「设置 → 下载内容」里关掉「下载前询问每个文件的保存位置」。开着它的话,一百张图就是一百个对话框,误关一个就等于取消一次下载。
第 4 步
剩下几张手动存
做完上面几步还标红的,就是站点在刻意拒绝。把这几张在新标签页里打开单独保存——通常只是零星几张,而不是一整批。
相关问题
就在你现在打开的页面上试试
免费、不用账号,你打开的下一个图廊就能用上。