ccloli / E-Hentai-Downloader

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

在 Edge 的 InPrivate 模式下,所有图片都报Failed! (Network Error),无法下载 #185

Closed Jaassa closed 3 years ago

Jaassa commented 3 years ago

从可能半个月或者更长时间之前开始,下载时所有图片全部报Failed! (Network Error) image

尝试更换不同账号,ip,浏览器都没有解决,并且不论下载原图或者是resize的图都不行 控制台输出大概是这种:

[EHD] #51: Network Error
​ [EHD] #51: RealIndex > 51  | ReadyState > 4  | Status > 0  | StatusText > 
Request URL > https://exhentai.org/fullimg.php?gid=1869642&page=51&key=vg00w669mf7 
Final URL > https://exhentai.org/fullimg.php?gid=1869642&page=51&key=vg00w669mf7 
ResposeHeaders >
​ [EHD] Index > 51  | RealIndex > 51  | Name > zeroGravitasMonster_hunter_032.jpg  | RetryCount > 1  | DownloadedCount > 0  | FetchCount > 5  | FailedCount > 48
failedFetching @ userscript.html?name…-114979997343:12807
onerror @ userscript.html?name…-114979997343:13447
(匿名) @ unknown
eval @ unknown

经测试Request URL和Final URL指向的图片在浏览器中都可以正常访问,但是使用脚本下载会报错

ccloli commented 3 years ago

尝试了一下,没有复现。从日志上看其实请求可能并没有发出,因为 Response Header 是空的,如果直接访问没问题,且使用的是 Tampermonkey,猜测是 @connect 规则没有生效,请尝试把脚本卸载后重装,看看问题是否解决。 另请提供下使用的浏览器,用户脚本扩展程序及版本,以及脚本的版本号。

Jaassa commented 3 years ago

卸载重装脚本未解决,不过我刚才测试发现,只有在浏览器InPrivate模式下才会全部下载失败,正常模式下可以正常使用。 浏览器Edge Dev 91.0.825.0 扩展程序Tampermonkey 4.11 脚本版本 1.33.1

ccloli commented 3 years ago

一般不建议脚本在浏览器的隐身模式下运行,因为会存在很多问题,比如发起请求时的 Cookie 可能和当前的 Cookie 不一致,无法拉取一些数据等问题。这些主要是受用户脚本扩展程序以及相关扩展 API 的限制,脚本应该做不了什么。最好还是在非隐身模式下使用。

另外可以尝试下在设置里开启主动传递 Cookie,位于 Settings -> Advanced -> Pass cookies manually when downloading images。目前猜测也有可能是 Cookie 传递有问题,因为试着写了一个测试脚本,在 Edge 的 InPrivate 模式下也能正常请求。

Jaassa commented 3 years ago

inprivate主要是我有时候在两个账号之间切换,用inpivate+熊猫书签就比较方便。 测试开启手动传递cookie和强制登录模式都没有效果。

又测试了一下,移除所有其他插件和脚本,使用89.0.774.57版本的 Edge 和89.0.4389.90版本的 Chrome 确实不会出现问题 但是 91.0.825.0版本的 Edge dev 就不行 又测试了91.0.4437.0版本的 chromium 也全部下载失败 看起来是91版本的 chromium 改动导致的问题。 翻了下更新日志,chromium m91 版本好像在 cross-origin isolation 方面做了很多改动,可能是受这个影响?或者是最近 chromium 对第三方 cookie 的改动导致的? 不过不管是什么改动,只在inprivate模式生效也是挺奇怪的。。。

ccloli commented 3 years ago

虽然不是很清楚为什么要切两个号,不过其实隐身模式不靠谱,因为有可能在下载时用的是非隐身模式下的 cookie。

这可能要归咎于浏览器的某些策略或者扩展无法判断或者处理隐身模式的某些情况,至少有一次我尝试在隐身模式下用了一个公共的 cookie 做测试,结果有些请求拿到的数据是错的,好像是没登陆还是拿的是非隐身模式的 cookie,总之拿到的数据和实际数据不符。

总之还是尽可能不要在隐身模式下使用该脚本,尽可能在浏览器的默认环境下使用。虽然脚本的逻辑可能没什么问题,但是扩展和浏览器之间的处理可能会有问题,这点我可能没法保证。比如之前还有个 issue 提到了使用 Firefox 的多账号容器扩展,刚刚翻了下 Tampermonkey 也有人提到了使用这个扩展时请求有问题。

Jaassa commented 3 years ago

了解了,感谢您的耐心回复

yingziwu commented 3 years ago

@Jaassa

inprivate主要是我有时候在两个账号之间切换,用inpivate+熊猫书签就比较方便。

多财号切换试一试Firefox,Firefox的容器功能,对于多帐户使用者真的很方便。

Jaassa commented 3 years ago

inprivate主要是我有时候在两个账号之间切换,用inpivate+熊猫书签就比较方便。

多财号切换试一试Firefox,Firefox的容器功能,对于多帐户使用者真的很方便。

我看前面作者的答复说用 Firefox 的多账号容器扩展 好像也会导致问题

比如之前还有个 issue 提到了使用 Firefox 的多账号容器扩展,刚刚翻了下 Tampermonkey 也有人提到了使用这个扩展时请求有问题。

ccloli commented 3 years ago

我看前面作者的答复说用 Firefox 的多账号容器扩展 好像也会导致问题

看起来前两天已经修复了,可以试试看

Jaassa commented 3 years ago

我看前面作者的答复说用 Firefox 的多账号容器扩展 好像也会导致问题

看起来前两天已经修复了,可以试试看

好的,我试试看,谢谢