17.1.1006.64版本 关于下载文件的两个BUG
1、在设置中开启静默下载无效,每次仍然会弹出询问保存位置的窗口。(16版本没试过)
2、下载扩展/网页生成的Blob URL 时存在超过5 秒的延迟。(之前16版没这个问题)
第二个问题比较复杂,为此我不得不让ai自制了一个下载脚本来复现问题,脚本使用方法:
把代码放在篡改猴插件中运行,脚本的作用在页面右侧生成一个红色按钮(如下图所示),下载当前360社区也就是bbs.360.cn这个域名的页面上的第一张宽度大于500的图片,可以用社区中任意带图片的页面来测试。点击按钮后,延迟5秒才触发下载。而在chrome上进行同样的操作是秒下载。
这是ai分析的bug原因,我也不知道对不对:
【浏览器的内置下载模块(独立进程/云安全检测)在拦截 <a href="blob:..."> 下载行为时,试图跨进程直接请求虚拟的 blob: 协议地址,导致网络连接失败或陷入等待超时(约5秒),超时后才回退到网页流处理。建议优化内置下载器对 blob: 协议的识别与直通处理机制。
以下是脚本的代码:
// ==UserScript==
// @name 【Bug复现】自制下载器拦截Blob URL延迟测试
// @namespace http://tampermonkey.net/
// @version 1.0
// @description复现第三方浏览器内置下载器接管 Blob URL 导致弹出窗口卡顿 5 秒的问题
// @match *://bbs.360.cn/*
// @grant GM_xmlhttpRequest
// @grant GM_addStyle
// @run-at document-idle
// ==/UserScript==
(function() {
'use strict';
// 1. 添加一个醒目的测试按钮
GM_addStyle(`
#bug-repro-btn {
position: fixed;
top: 120px;
right: 30px;
z-index: 999999;
padding: 10px 18px;
background-color: #e74c3c;
color: #ffffff;
border: none;
border-radius: 6px;
font-size: 14px;
font-weight: bold;
cursor: pointer;
box-shadow: 0 4px 12px rgba(0,0,0,0.3);
transition: all 0.2s;
}
#bug-repro-btn:hover {
background-color: #c0392b;
transform: scale(1.05);
}
#bug-repro-btn:disabled {
background-color: #95a5a6;
cursor: not-allowed;
}
`);
const btn = document.createElement('button');
btn.id = 'bug-repro-btn';
btn.textContent = '【测试】Blob 方式下载大图';
document.body.appendChild(btn);
btn.addEventListener('click', () => {
// 2. 查找页面上第一张宽度 > 500 的图片
const imgs = Array.from(document.querySelectorAll('img'));
const targetImg = imgs.find(img => (img.naturalWidth > 500 || img.width > 500) && img.src);
if (!targetImg) {
alert('当前页面未找到宽度大于 500px 的大图,请打开一个包含图片的帖子后再试。');
return;
}
btn.disabled = true;
btn.textContent = '请求图片中...';
// 3. 复现 Blob URL 下载逻辑
GM_xmlhttpRequest({
method: "GET",
url: targetImg.src,
responseType: 'blob',
onload: function(response) {
if (response.status === 200) {
btn.textContent = '已触发 a.click(),等待窗口弹出...';
const blob = response.response;
const blobUrl = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = blobUrl;
a.download = 'test_blob_image.jpg';
a.style.display = 'none';
document.body.appendChild(a);
// ★ 核心问题触发点:通过 <a> 标签点击触发下载器拦截
a.click();
document.body.removeChild(a);
// 短暂延时后释放 Blob 内存
setTimeout(() => {
URL.revokeObjectURL(blobUrl);
btn.disabled = false;
btn.textContent = '【测试】Blob 方式下载大图';
}, 100);
} else {
alert('获取图片失败,HTTP状态码:' + response.status);
btn.disabled = false;
btn.textContent = '【测试】Blob 方式下载大图';
}
},
onerror: function() {
alert('网络请求出错');
btn.disabled = false;
btn.textContent = '【测试】Blob 方式下载大图';
}
});
});
})();
确实这样,我也发现了,设置不管用 您好,您反馈 1静默下载功能不生效 2 扩展安装完成时间很长的问题转交给工作人员核实处理。麻烦您留个qq工作人员在需要时与您联系查看现场排查问题。
页:
[1]