返回顶部
m

mirror-website镜像网站工作流

镜像网站到本地的完整工作流。当用户说镜像网站、下载网站、抓取网站、本地化网站,或者提供一个网址和保存路径时,必须使用此 skill。输入格式为:镜像网站 www.example.com 保存地址 /a/b/c。自动处理代理、递归下载、文件名清理等全流程。即使用户只是提到想把某个网站保存到本地、离线浏览、克隆站点,也应触发此 skill。

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
109
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

mirror-website

镜像网站 Skill

触发格式

用户输入类似:

镜像网站: www.example.com,保存地址: /a/b/c

如果用户未提供保存路径,默认使用 /home/claude/mirror/ 作为保存路径,并在最终输出时告知用户实际路径。

执行步骤

第一步:解析输入

从用户输入中提取:

  • - TARGETURL:目标网址(自动补全 https://)
  • SAVEPATH:保存路径(绝对路径)
  • DOMAIN:域名部分(用于 --domains 参数)

域名处理规则:

  1. 1. 先用 curl -sI 测试原始域名,观察是否有 301/302 跳转
  2. 如果 www.example.com 跳转到 example.com(或反之),使用跳转后的域名作为 DOMAIN 和 TARGET_URL
  3. 如果无跳转,保持用户输入的域名不变
  4. --domains 参数同时包含 www 和非 www 版本,确保不遗漏资源:--domains example.com,www.example.com

第二步:创建保存目录

bash
mkdir -p

第三步:检测网络连通性与代理

在执行 wget 前,先检测是否能直接连通目标站点:

bash

先尝试直连


curl -sI --connect-timeout 5 https:/// > /dev/null 2>&1
DIRECT=$?

如果直连失败,尝试常见代理

if [ $DIRECT -ne 0 ]; then curl -sI --connect-timeout 5 -x http://127.0.0.1:7890 https:/// > /dev/null 2>&1 if [ $? -eq 0 ]; then export https_proxy=http://127.0.0.1:7890 export http_proxy=http://127.0.0.1:7890 echo 使用代理: http://127.0.0.1:7890 else echo 警告: 直连和代理均无法访问目标站点,请检查网络 fi else echo 直连可用,无需代理 fi

如果均不可用,告知用户网络问题并终止。

第四步:执行 wget 镜像下载

bash
wget --recursive \
--level=5 \
--page-requisites \
--convert-links \
--domains ,www. \
--wait=2 \
--random-wait \
--no-check-certificate \
--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 \
--header=Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 \
--header=Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 \
-e robots=off \
-P \
https:///

参数说明:

参数说明
--level=5递归深度5层
--page-requisites
下载页面所需的CSS/JS/图片 |
| --convert-links | 转换链接为本地路径 |
| --domains | 同时包含 www 和非 www,避免遗漏 |
| --wait=2 --random-wait | 随机等待,避免被封 |
| --no-check-certificate | 跳过SSL证书验证 |
| -e robots=off | 忽略 robots.txt |

注意:不使用 --html-extension / --adjust-extension。 该参数会根据 Content-Type 自动追加扩展名,导致 fontawesome.min.css 被保存为 fontawesome.min.css.css。

第五步:补充下载带参数的资源(?v=xxx 类)

wget 的 --page-requisites 经常无法正确下载 URL 末尾带查询参数的资源(如 player.js?v=2、style.css?v=20251204)。
需要从已下载的 HTML 中提取这些资源链接,逐个单独下载到去除查询参数后的正确文件名

⚠️ 重要:此步骤必须使用文件写入工具创建脚本,然后执行,不要在终端逐条运行。

使用 createfile 在 PATH>/fetch-query-assets.sh 创建以下脚本:

bash
#!/bin/bash

补充下载带 ?query 参数的资源文件


用法:bash fetch-query-assets.sh <下载目录> <域名>

DIR=$1
DOMAIN=$2

if [ -z $DIR ] || [ -z $DOMAIN ]; then
echo 用法: bash fetch-query-assets.sh <下载目录> <域名>
exit 1
fi

cd $DIR || exit 1

echo === 扫描带查询参数的资源引用 ===

从 HTML 文件中提取所有带 ? 的 src/href 引用

{ grep -roh --include=.html -E (src|href)=[^]\?[^]* . grep -roh --include=.html -E (src|href)=[^]\?[^]* . } | sed -E s/^(src|href)=\[\]$/\2/ | sort -u | while IFS= read -r url; do

# 跳过完整 URL(外部资源)
echo $url | grep -qE ^(https?://|//) && continue

# 去掉查询参数得到本地文件路径
clean_path=$(echo $url | sed s/\?.*//)

# 构建完整下载 URL
if echo $url | grep -q ^/; then
full_url=https://${DOMAIN}${url}
localfile=${DIR}/${DOMAIN}${cleanpath}
else
full_url=https://${DOMAIN}/${url}
localfile=${DIR}/${DOMAIN}/${cleanpath}
fi

# 如果文件已存在则跳过
if [ -f $local_file ]; then
continue
fi

echo 下载: $fullurl → $localfile
mkdir -p $(dirname $local_file)
wget -q --no-check-certificate \
--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/122.0.0.0 \
-O $local_file \
$fullurl || echo 失败: $fullurl
done

echo === 补充下载完成 ===

写入后执行:
bash
bash PATH>/fetch-query-assets.sh PATH>

第六步:创建 fix-filenames.sh 修复脚本并执行

所有文件下载完成后,使用 createfile 工具在 PATH>/fix-filenames.sh 创建以下脚本,然后用 bash 执行。

⚠️ 重要:必须使用文件写入工具一次性写入完整脚本,不要用 echo 逐行拼接,也不要把清理命令零散地逐条运行在终端中。

以下是 fix-filenames.sh 的完整内容:

bash
#!/bin/bash

修复 wget 镜像下载后的文件名和引用路径问题


用法:bash fix-filenames.sh /path/to/download/dir

DIR=$1
if [ -z $DIR ]; then
echo 用法: bash fix-filenames.sh <下载目录路径>
exit 1
fi
if [ ! -d $DIR ]; then
echo 错误: 目录不存在: $DIR
exit 1
fi

cd $DIR || exit 1
echo === 开始修复: $(pwd) ===
echo 修复前文件总数: $(find . -type f | wc -l)

========================================

1. 去除文件名中查询参数

同时处理两种情况:

a) 文件名含真实 ?: DPlayer.min.js?v=5 → DPlayer.min.js

b) 文件名含编码 %3F:DPlayer.min.js%3Fv=5 → DPlayer.min.js

c) 参数后还带扩展名:mirages.min.css?v=20251215.css → mirages.min.css

========================================

echo echo --- 阶段1: 去除文件名中的查询参数 ---

renamequeryfile() {
local f=$1
local newname=$2
if [ $

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 mirror-website-1776120999 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 mirror-website-1776120999 技能

通过命令行安装

skillhub install mirror-website-1776120999

下载

⬇ 下载 mirror-website v1.0.0(免费)

文件大小: 7.61 KB | 发布时间: 2026-4-14 10:31

v1.0.0 最新 2026-4-14 10:31
Initial release - 镜像网站到本地的完整工作流,支持离线浏览

Archiver·手机版·闲社网·闲社论坛·智能体自动化市场· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2026 闲社网·AI智能体论坛·AI自动化解决方案·http://xianshe.com

p2p_official_large