golang快速网站链接检查工具插件muffet的使用
Golang快速网站链接检查工具插件Muffet的使用
Muffet简介
Muffet是一个网站链接检查工具,可以递归地爬取和检查网站中所有页面的链接。
主要特点:
- 速度极快
- 与Web浏览器高度兼容
- 支持多种HTML标签(
a
、img
、link
、script
等) - 支持多种输出格式(文本、JSON和JUnit XML)
安装Muffet
go install github.com/raviqqe/muffet/v2@latest
基本使用示例
muffet https://example.com
完整示例
简单检查网站链接
# 检查example.com网站的所有链接
muffet https://example.com
输出JSON格式
# 以JSON格式输出检查结果
muffet -format json https://example.com
限制并发请求数
# 限制并发请求数为10
muffet -c 10 https://example.com
排除特定URL模式
# 排除包含"admin"路径的URL
muffet -x "admin" https://example.com
设置超时时间
# 设置请求超时为10秒
muffet -timeout 10 https://example.com
高级用法
使用Docker运行
docker run -it --rm raviqqe/muffet https://example.com
在GitHub Actions中使用
name: Check Links
on: push
jobs:
check-links:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run Muffet
uses: raviqqe/muffet-action@v1
with:
url: https://example.com
许可证
Muffet使用MIT许可证。
更多关于golang快速网站链接检查工具插件muffet的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于golang快速网站链接检查工具插件muffet的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
使用muffet进行Golang网站链接检查
muffet是一个用Go编写的快速网站链接检查工具,它可以递归地检查网站中的所有链接,并报告断开的链接。以下是关于如何使用muffet的详细介绍。
安装muffet
首先,你需要安装muffet工具:
# 使用go安装
go install github.com/raviqqe/muffet@latest
# 或者直接下载预编译二进制文件
# 从GitHub发布页面下载适合你系统的版本
基本使用
最简单的使用方式是直接运行muffet并指定要检查的URL:
muffet https://example.com
这将递归检查example.com网站上的所有链接。
常用选项
muffet提供了多个有用的选项:
# 限制并发请求数(默认256)
muffet -c 32 https://example.com
# 设置超时时间(秒,默认10)
muffet -t 30 https://example.com
# 限制最大链接数(默认10000)
muffet -m 5000 https://example.com
# 排除某些URL模式
muffet -e ".*\.jpg" -e ".*\.png" https://example.com
# 跟随robots.txt规则
muffet -f https://example.com
# 显示进度条
muffet -p https://example.com
# 输出JSON格式结果
muffet -j https://example.com > results.json
在Go代码中使用muffet
虽然muffet主要是作为命令行工具使用,但你也可以在Go程序中调用它。以下是示例代码:
package main
import (
"context"
"fmt"
"log"
"os"
"time"
"github.com/raviqqe/muffet"
)
func main() {
// 创建muffet检查器
c, err := muffet.New(
muffet.WithConcurrency(32), // 并发数
muffet.WithTimeout(30*time.Second), // 超时时间
muffet.WithMaxLinks(10000), // 最大链接数
muffet.WithExcludedPatterns([]string{".*\\.jpg", ".*\\.png"}), // 排除模式
muffet.WithFollowRobotsTxt(true), // 遵循robots.txt
muffet.WithProgressBar(os.Stderr), // 显示进度条
)
if err != nil {
log.Fatal(err)
}
// 运行链接检查
ctx := context.Background()
brokenLinks, err := c.Check(ctx, "https://example.com")
if err != nil {
log.Fatal(err)
}
// 处理结果
for _, bl := range brokenLinks {
fmt.Printf("Broken link found: %s\n", bl.URL)
fmt.Printf(" Referenced from: %s\n", bl.Referer)
fmt.Printf(" Status: %d %s\n", bl.StatusCode, bl.Status)
fmt.Printf(" Error: %v\n", bl.Error)
fmt.Println("---")
}
}
高级用法
自定义HTTP客户端
你可以自定义HTTP客户端以满足特定需求:
c, err := muffet.New(
muffet.WithHTTPClient(&http.Client{
Transport: &http.Transport{
MaxIdleConns: 100,
IdleConnTimeout: 30 * time.Second,
DisableCompression: true,
},
Timeout: 30 * time.Second,
}),
)
处理特定错误
brokenLinks, err := c.Check(ctx, "https://example.com")
if err != nil {
var maxLinksErr *muffet.MaxLinksError
if errors.As(err, &maxLinksErr) {
log.Printf("Warning: reached maximum links limit (%d)", maxLinksErr.Limit)
} else {
log.Fatal(err)
}
}
集成到CI/CD流程
你可以将muffet集成到CI/CD流程中,例如在GitHub Actions中:
name: Check Links
on: [push, pull_request]
jobs:
link-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install muffet
run: go install github.com/raviqqe/muffet@latest
- name: Run link checker
run: muffet -c 32 -t 30 https://yourwebsite.com
性能优化建议
- 对于大型网站,适当调整并发数(-c)以避免服务器过载
- 使用-e选项排除静态资源(如图片、CSS、JS文件)以加快检查速度
- 对于经常检查的网站,考虑缓存结果以提高后续检查速度
muffet是一个强大且高效的链接检查工具,特别适合大型网站的全面链接验证。通过合理配置选项,你可以在保证检查质量的同时优化检查速度。