jc3213 / download_with_aria2

The browser extenson for aria2 download utility via JSON-RPC
GNU Lesser General Public License v2.1
65 stars 9 forks source link

Firefox 使用 webRequest API 抓取下载时,文件名出错 #12

Closed ivysrono closed 2 years ago

ivysrono commented 2 years ago

amo上已经退回3.7.7 比方说release里: 3.7.7下载:download_with_aria2-3.8.1 3.8.x和3.9.x下载结果:attachment; filename=download_with_aria2-3.8.1 当然还有些需要登录的网站直接就变成不能下载了。 还有才发现3.9.2会把amo的安装劫持成下载: https://addons.mozilla.org/firefox/addon/download-with-aria2/ 点击添加到firefox,不是安装,直接Aria2开始下载了。

ivysrono commented 2 years ago

691直接不接管了……

话说我之前评论里提到过的隔壁修复方案你要不要参考下:https://github.com/jingyu9575/multithreaded-download-manager/issues/97

jc3213 commented 2 years ago

哦,看了下他 https://github.com/jingyu9575/multithreaded-download-manager/commit/0cf349fd2e74199ebf1ff752d4c35dc175bfd141 我才发现我忘了,还有TextEncoder跟TextDecoder这两个API,瞬间就觉得自己脑子不太好使了……

jc3213 commented 2 years ago

我直接Copy了他的 background/content-disposition.js 测试下来 https://github.com/jc3213/download_with_aria2/issues/12#issuecomment-1025316734 倒是正常了。

网易附件

jc3213 commented 2 years ago

@jingyu9575 我用了你的文件,用于修复乱码,希望不要介意……

就这么推送吧,我先保证功能,再说其他的。等哪天有时间了再仔细研究TextDecoder这段。

jc3213 commented 2 years ago

@ivysrono 试试693吧,如果没问题我就发布release了。

jc3213 commented 2 years ago

我测试了下北大法宝,还是乱码,无法处理,应该是没做windows-1252编码的适配…… 我看他这里还能精简不少东西,我再稍微处理下……

jc3213 commented 2 years ago

最新版出了百大法宝好像没啥大问题了……

ivysrono commented 2 years ago

694: 保持忽略域名undefined就不接管,把忽略域名undefined删除了就报错:

Uncaught (in promise) TypeError: aria2Store.proxy_include is undefined
    startDownload moz-extension://2a0b4c50-4868-4fd5-8dd3-bca339b0a499/background.js:68
    async* moz-extension://2a0b4c50-4868-4fd5-8dd3-bca339b0a499/background.js:51
background.js:68:5
ivysrono commented 2 years ago

695大幅改进,基本都好了,但有点小问题,稍等。

jc3213 commented 2 years ago

这里是之前的补丁导致的一个恶行BUG,我也不知道为什么明明条件是previousVersino < '3.9.5'但还是执行了。这里必须是是array,我尝试在background里面修正一下。

另外感觉还是有点问题……乱码部分我还是保持吧。回头研究修复方案。

ivysrono commented 2 years ago

main695 网易邮箱附件名特别长后只截取一部分 比方说下面这个真实名是网易邮箱新建“文本”文档的文件名特别长可能会只截取其中一部分.txt,下载下来获取到的是别长可能会只截取其中一部分.txt

--------------------------
https://mail.126.com/js6/read/readdata.jsp?sid=qAQBZlyFrxPkL…UP7EwABsh&part=3&mode=download&l=read&action=download_attach
https://mail.126.com/js6/main.jsp?sid=qAQBZlyFrxPkLHPdmaFFyAyVKnfJNooC&df=mail163_letter
background.js:46:9
attachment; filename="=?UTF8?B?572R5piT6YKu566x5paw5bu64oCc5paH?= =?UTF8?B?5pys4oCd5paH5qGj55qE5paH5Lu25ZCN54m5?= =?UTF8?B?5Yir6ZW/5Y+v6IO95Lya5Y+q5oiq5Y+W5YW25Lit5LiA6YOo5YiGLnR4dA==?="
5Yir6ZW/5Y+v6IO95Lya5Y+q5oiq5Y+W5YW25Lit5LiA6YOo5YiGLnR4dA== background.js:101:9
别长可能会只截取其中一部分.txt background.js:104:9
Download start! a933a673a74eb724 6 aria2.js:44:13
Download complete! a933a673a74eb724 6 aria2.js:48:13
jc3213 commented 2 years ago

这里后面再修复吧。最近几天状态不太好,等我找机会研究下TextDecoder再说优化逻辑吧。

ivysrono commented 2 years ago

嗯,过年躺平好好休息吧。

ivysrono commented 2 years ago

3.10.3已经推送amo,年前搞定很圆满。

jc3213 commented 2 years ago

发现还有点问题,我慢慢研究下,最近睡眠超级爆炸,事情太多,哎。

ivysrono commented 2 years ago

别的都是假的,身体是自己的,好好休息。

jc3213 commented 2 years ago

试试看最新?理论上应该没太多大问题了。

ivysrono commented 2 years ago

main706网易邮箱是正常了,但北大法宝似乎不接管了

jc3213 commented 2 years ago

main706网易邮箱是正常了,但北大法宝似乎不接管了

发下logo

ivysrono commented 2 years ago

https://v6downloadservice.pkulaw.com/full/downloadfile?key=V…ullParam_1643637925_b933015c-74eb-ea11-b390-00155d3c0709_chl https://www.pkulaw.com/chl/039ccfd9a6eb5dc4bdfb.html background.js:53:9

jc3213 commented 2 years ago

706bug了,709倒是除去了bug但是解码炸了。这里我再看看

jc3213 commented 2 years ago

哦,原来是我某个修改用了复制粘贴,输入的变量是text但是我操作的是body然后就出错了。迷了。昨天没休息好还是影响大了。 711应该是好了 https://github.com/jc3213/download_with_aria2/blob/c952c2257a98e0c784b1e81e34e72fd54dee53b0/Firefox/decoder.js#L61 奇怪

ivysrono commented 2 years ago

还是有点小问题 https://github.com/the1812/Bilibili-Evolved 用这个下载b站不接管了 3.7.7肯定接管的

jc3213 commented 2 years ago

你发下log,我看看啥问题。是否又是有BUG了

ivysrono commented 2 years ago

毫无log

jc3213 commented 2 years ago

连开始确认的log也没么?比如url, referer那条?那可能是不符合匹配条件?

最初的log是判断MIME-Type是application/****或者存在content-dispositioncontent-disposition为attachment就会触发。3.7.7搞不好是仅存在content-disposition就触发了……具体我看看3.7.7源码

jc3213 commented 2 years ago

我看了下是完全的downloads API,方法不一样结果肯定不同。麻烦在这下面的52行添加个log,我看看原因 https://github.com/jc3213/download_with_aria2/blob/513d37b8bc45af54f3698c877826eb2af4c933e8/Firefox/background.js#L51

console.log(disposition, type, length)

PS:如果很长,麻烦保存成txt上传

jc3213 commented 2 years ago

另外如果文件名没有更多的问题,这个Issue就关掉了。你现在反馈的哔哩哔哩这个是抓取判断相关的问题。

ivysrono commented 2 years ago

main714确实没发现更多文件名的问题。 抓取的问题另外说吧。

ivysrono commented 2 years ago

3.10.4已经推送amo