如何让WinHTTrack保留镜像网站的原始文件类型(如.mmlv)
问题
尝试用WinHTTrack镜像https://megamaker.webmeka.io/的关卡内容,已设置仅保留索引页、关卡页和.mmlv格式关卡文件。目前索引页命名为indexxxxx.html(可接受),但.mmlv文件被下载为level-dataxxxx.php格式(如level-data00e7.php),重命名后也无法在Mega Man Maker中正常使用。
当前WinHTTrack配置详情:
- 目标网址:
https://megamaker.webmeka.io/ - 扫描规则:
+*.css +*.js -ad.doubleclick.net/* -mime:application/foobar +*.gif +*.jpg +*.jpeg +*.png +*.tif +*.bmp +*.zip +*.tar +*.tgz +*.gz +*.rar +*.z +*.exe +*.mov +*.mpg +*.mpeg +*.avi +*.asf +*.mp3 +*.mp2 +*.rm +*.wav +*.vob +*.qt +*.vid +*.ac3 +*.wma +*.wmv -https://megamaker.webmeka.io/* +https://megamaker.webmeka.io/?page=* +https://megamaker.webmeka.io/level-data.php?* +https://megamaker.webmeka.io/level-download.php?* +*.mmlv
已尝试勾选Spider部分所有设置,将「检查文档类型」设为「从不」,但无效果。想确认:
- 能否通过WinHTTrack实现
.mmlv文件原格式下载?甚至可以放弃网页只获取.mmlv文件。 - 是不是因为
level-download.php?*这类PHP页面镜像时无法保留原文件名,才导致这个问题?
回答
问题根源
核心问题就是PHP下载页的动态文件名逻辑:level-download.php是动态生成响应的页面,它通过HTTP响应头返回.mmlv文件内容,而非直接提供静态.mmlv文件的URL。WinHTTrack默认只会按请求的PHP文件名(加后缀)保存,不会解析响应头里的Content-Disposition字段提取真实文件名。
另外,重命名后无法使用的原因是:下载的level-dataxxxx.php可能混杂了PHP页面的响应头、额外HTML代码,或者WinHTTrack对二进制内容做了转码,破坏了.mmlv的原始结构。
可行解决方案
1. 调整WinHTTrack配置实现需求
- 打开WinHTTrack「设置」→「高级选项」→「文件处理」
- 勾选**「从Content-Disposition头获取文件名」**(这是关键选项,默认未开启)
- 将「文件类型处理」中的「二进制文件」设置为**「不修改,原样保存」**,避免转码破坏
.mmlv的二进制结构 - 简化扫描规则,去掉无关的媒体、压缩文件规则,只保留必要项:
(注:-https://megamaker.webmeka.io/* +https://megamaker.webmeka.io/?page=* +https://megamaker.webmeka.io/level-download.php?*.mmlv内容通过level-download.php返回,无需单独添加+*.mmlv规则)
2. 改用命令行工具批量下载(更可靠)
如果WinHTTrack仍无法解决,用curl或wget这类工具更直接,它们能自动解析响应头保存正确文件名:
- 先从索引页提取所有
level-download.php?xxx的链接,保存到links.txt文件 - 用
wget批量下载:wget --content-disposition -i links.txt - 或用
curl:
(while read url; do curl -OJ "$url"; done < links.txt-OJ参数会自动根据响应头中的文件名保存文件)
结论
WinHTTrack可以实现需求,但必须开启「从Content-Disposition头获取文件名」选项,并确保二进制文件不被修改。如果配置后仍有问题,命令行工具是更稳妥的选择。
内容的提问来源于stack exchange,提问作者Neil McLean
相关产品推荐
相关产品推荐

