ccloli / E-Hentai-Downloader

Download E-Hentai archive as zip file
GNU General Public License v3.0
1.82k stars 137 forks source link

在剩余点数充足时遇到多个下载错误 (包括 Wrong MIME 和 Network Error) #280

Open ZFirozen opened 4 months ago

ZFirozen commented 4 months ago

错误界面如下: image 发生的条件:正在下载一个有一百余张图的图库,开始下载前,预估的点数消耗不会超过限制。除了以上这几个下载错误,还有另外个别图片也发生过错误,但在我调整同时下载数量为1以后,重新尝试了几次后成功了,其他图片均已成功下载。 通过打开调试器检查访问的URL,在这几张图片中,有两张的URL可以通过浏览器打开,另外两张分别遇到 Invalid request 和意外中止连接错误。 日志显示的详细信息是

[EHD] #62: Wrong Content-Type
[EHD] #63: Wrong Content-Type
[EHD] #64: Wrong Content-Type
[EHD] #75: Network Error

其他补充:

除了这些未知问题导致的下载错误,一个可能的已知问题是:在下载过大的图片时,如果并发数过多可能导致这些图片全部下载失败;这种情况难以预测,可能只能在尝试更低的并发数时才能确认。

ZFirozen commented 4 months ago

怀疑一个可能的原因是:实际上点数已经耗尽,但是刷新主页获得的点数信息并不准确,因为我尝试在网页中阅览这几张图片(通过画廊打开,而非调试器日志中给出的链接)时会遇到“达到临时限制 (You have temporarily reached the limit for how many images you can browse)”的提示。

ccloli commented 4 months ago

尝试下载过一张 10MB 以上大小的图片,没有复现该问题

上述问题有可能是服务器不稳定,在前几个月的某次更新后,原始图片现在也会通过 H@H 分发,所以这可能是服务器下发的图片地址对应的 H@H 节点访问不稳定或服务器不可用(例如缓存被删除)等情况。一般在尝试下载多次失败重试时,脚本会尝试重新获取图片地址,此时 EH 有可能会返回其他服务器的地址。

此外如果使用了代理服务器,那么也有可能是代理服务器不稳定。

实际上点数已经耗尽,但是刷新主页获得的点数信息并不准确,因为我尝试在网页中阅览这几张图片(通过画廊打开,而非调试器日志中给出的链接)时会遇到“达到临时限制 (You have temporarily reached the limit for how many images you can browse)”的提示。

如果你使用了多个代理服务器,而使用代理服务器时使用了类似负载均衡之类的技术,那么有可能是某个服务器已经达到了额度,出现了该问题。EH 给出的额度信息理论上是准确的,但这个额度一般是和 IP 绑定的,所以在多 IP + 与他人共用的情况下,可能会出现某个 IP 超出了配额。

另外,下载比较老的图片时,EH 可能会消耗 GP 或 credit,如果没有足够的 GP 或 credit 也可能会提示上述错误信息。

ZFirozen commented 4 months ago

刚刚从搜索列表里选择了一个较新的作品:https://e-hentai.org/g/2832818/f89848f6a9/ 在下载时全部遇到了网络错误 (Network Error) image 但直接点击日志中给出的最终地址,浏览器却可以正常访问和下载图片(我随机测试了几个)

[EHD] #6: RealIndex > 6  | ReadyState > 4  | Status > 0  | StatusText > 
Request URL > https://e-hentai.org/fullimg/2832818/6/5ahog49a64y/_6.jpg?nl=27778-474514 
Final URL > https://e-hentai.org/fullimg/2832818/6/5ahog49a64y/_6.jpg?nl=27778-474514 
ResposeHeaders >
[EHD] #8: RealIndex > 8  | ReadyState > 4  | Status > 0  | StatusText > 
Request URL > https://e-hentai.org/fullimg/2832818/8/hbhdd0pa64y/_8.jpg?nl=46064-474514 
Final URL > https://e-hentai.org/fullimg/2832818/8/hbhdd0pa64y/_8.jpg?nl=46064-474514 
ResposeHeaders >
[EHD] #9: RealIndex > 9  | ReadyState > 4  | Status > 0  | StatusText > 
Request URL > https://e-hentai.org/fullimg/2832818/9/go79qa1a64y/_9.jpg?nl=20694-474514 
Final URL > https://e-hentai.org/fullimg/2832818/9/go79qa1a64y/_9.jpg?nl=20694-474514 
ResposeHeaders >

并且多次刷新都可以访问,只是速度相对较慢(大约100~300KB/s,我没有修改过EHD的低下载速度相关设置)。

ccloli commented 4 months ago

Network Error 多半是网络不稳定,比如网络连接中断之类的。由于该错误是浏览器(或用户脚本扩展程序)直接抛出的,脚本无法解决此问题。且由于用户脚本的 API 限制,目前无法实现类似断点续传之类的功能,此时只能重新下载。

ZFirozen commented 4 months ago

了解了,谢谢。再稍微对这种情况提一点改进建议,在下载失败的情况下能否将失败项的URL直接显示在页面上,用户通过在浏览器内访问链接来手动尝试下载这些图片(如果链接能够被打开)。

ccloli commented 4 months ago

在下载失败的情况下能否将失败项的URL直接显示在页面上,用户通过在浏览器内访问链接来手动尝试下载这些图片

可以考虑加个例如按住 Ctrl 键后,点击文件名跳转的功能