使用wget或httrack下载网站报301 Moved Permanently错误如何解决
问题根源
301报错和本地链接失效由三个明确原因导致,和你使用的Kubuntu系统无关:
- 域名跳转规则未适配:
untools.co裸域会强制301永久跳转到www.untools.co,你之前执行的命令没有同时把两个域名加入爬取允许列表,也没有开启强制跟随重定向的参数,爬取过程中遇到跳转就直接中断,仅能拿到首页内容。 - 链接转换参数缺失:所用命令没有配置爬取完成后自动转换内链为本地相对路径、自动补全静态文件后缀的规则,本地打开首页点击链接时,路径匹配不到本地文件,自然会访问失败。
- 资源爬取范围不全:部分命令没有配置拉取页面所有依赖资源的参数,就算爬下来页面也会出现样式、交互失效的问题。
你之前执行的三条命令具体问题:
- 第一条wget:未指定www域名、未开启重定向跟随,遇到301直接终止爬取
- 第二条wget:未将裸域加入允许列表,缺少静态文件后缀补全、全资源拉取参数,链接转换不完整
- 第三条httrack:未开启重定向跟随、未配置强制转换本地链接参数,内链仍保留线上地址,点击后无法匹配本地文件
可用解决方案
wget 一键镜像命令
直接在终端执行以下命令即可完整镜像站点,爬取完成后本地可正常点击所有内链访问:
wget --mirror \ --recursive \ --page-requisites \ --convert-links \ --adjust-extension \ --no-parent \ --follow-redirects \ --domains=untools.co,www.untools.co \ https://untools.co/
核心参数作用(爬取其他静态站也可复用这套参数):
--follow-redirects:自动跟随301/302跳转,不会遇到重定向就报错中断--domains:同时将裸域、www子域加入爬取白名单,不会因跨域判定停止爬取--page-requisites:自动拉取页面依赖的图片、CSS、JS等所有资源,避免页面样式错乱、功能失效--adjust-extension:给无后缀的静态页面自动补全.html后缀,匹配本地文件访问规则--convert-links:爬取完成后自动将所有站内链接转换为本地相对路径,点击不会跳转至线上或不存在的路径
HTTrack 镜像命令
如果偏好使用HTTrack,执行以下命令即可:
httrack "https://untools.co/" \ -O "./untools" \ --mirror \ -F "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36" \ "+*://untools.co/*" "+*://www.untools.co/*" \ --ext-depth=2 \ --follow-redirection \ --keep-links=0
核心注意点:
- 必须同时将裸域、www子域加入爬取规则白名单,避免跳转后被判定为外部地址跳过
--keep-links=0参数会强制将所有可访问内链转换为本地路径,不会保留线上跳转地址- 携带常规浏览器UA可避免个别静态资源被默认拦截,提升爬取成功率
爬取后注意事项
等工具完全执行结束、终端输出爬取完成/链接转换完成的日志后,再打开本地根目录的index.html访问。不要在工具还在爬取、转换链接的过程中打开本地文件,否则会出现部分链接未转换完成、路径不存在的问题。
内容的提问来源于stack exchange,提问作者Make42
相关产品推荐
相关产品推荐

