golang命令行网页截图工具插件gowitness的使用
Golang命令行网页截图工具插件gowitness的使用
介绍
gowitness
是一个用Golang编写的网站截图工具,它使用Chrome Headless通过命令行生成网页界面的截图,并附带一个方便的报告查看器来处理结果。支持Linux和macOS系统,Windows系统基本可用。
功能特性
gowitness
的主要目标是获取网站截图(并且做得很好!),同时可选择保存收集到的信息。主要功能包括:
- 快速准确地获取网站截图
- 扫描URL列表、CIDR、Nmap结果、Nessus结果等
- 能够抓取和保存数据(如请求日志、控制台日志、headers、cookies等)
- 将数据写入多种格式(sqlite数据库、jsonlines、csv等)
- 基于web的结果查看器(如果将数据保存到SQLite)包括完整功能的API!
- 以及更多其他功能!
快速开始
安装
最简单的方式是使用go install
(假设你的$GOBIN
路径在shell的$PATH
中):
go install github.com/sensepost/gowitness@latest
或者,你也可以下载特定平台的二进制版本或从源代码编译。
基本使用
扫描第一个目标并将结果写入SQLite数据库,截图保存到./screenshots
:
gowitness scan single --url "https://sensepost.com" --write-db
gowitness
有许多标志和扫描类型。只需在任何地方添加-h
即可查看帮助信息。
示例代码
// 这是一个使用gowitness库进行网页截图的简单示例
package main
import (
"log"
"github.com/sensepost/gowitness/lib"
)
func main() {
// 创建新的gowitness实例
g, err := gowitness.New()
if err != nil {
log.Fatal(err)
}
// 设置截图选项
options := &gowitness.ScreenshotOptions{
URL: "https://example.com",
Path: "./screenshots",
Timeout: 30,
FullPage: false,
SaveAll: true,
}
// 执行截图
if err := g.Screenshot(options); err != nil {
log.Fatal(err)
}
log.Println("截图完成!")
}
文档
有关高级安装信息和其他文档,请参考官方wiki。
截图展示
许可证
gowitness
采用GNU General Public v3许可证授权。超出此许可证范围的权限可通过联系SensePost获取。
更多关于golang命令行网页截图工具插件gowitness的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于golang命令行网页截图工具插件gowitness的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
使用gowitness进行网页截图
gowitness是一个用Go编写的命令行网页截图工具,它可以快速捕获网页截图并生成报告。下面我将详细介绍如何使用gowitness以及提供一些示例代码。
安装gowitness
首先需要安装gowitness:
# 使用go安装
go install github.com/sensepost/gowitness@latest
# 或者下载预编译二进制
# 从 https://github.com/sensepost/gowitness/releases 下载适合你系统的版本
基本使用
单个URL截图
gowitness single https://example.com
这将在当前目录下创建一个screenshots
文件夹,并保存截图。
批量截图
# 从文件读取URL列表
gowitness file -f urls.txt
# 直接传递多个URL
gowitness single https://example.com https://google.com
使用代理
gowitness single --proxy http://127.0.0.1:8080 https://example.com
高级功能
生成报告
gowitness可以生成HTML报告:
gowitness report generate
这将在当前目录下生成一个report.html
文件。
数据库操作
gowitness使用SQLite数据库存储截图信息:
# 查看数据库内容
gowitness db ls
# 清除数据库
gowitness db clear
Golang集成示例
如果你想在自己的Go程序中使用gowitness的功能,可以参考以下示例:
package main
import (
"fmt"
"log"
"os/exec"
)
func main() {
// 基本截图命令
url := "https://example.com"
cmd := exec.Command("gowitness", "single", url)
output, err := cmd.CombinedOutput()
if err != nil {
log.Fatalf("截图失败: %v\n输出: %s", err, output)
}
fmt.Println("截图成功完成")
// 生成报告
reportCmd := exec.Command("gowitness", "report", "generate")
reportOutput, err := reportCmd.CombinedOutput()
if err != nil {
log.Fatalf("生成报告失败: %v\n输出: %s", err, reportOutput)
}
fmt.Println("报告生成成功")
}
自定义选项
gowitness提供了许多自定义选项:
# 设置截图超时时间
gowitness single --timeout 30 https://example.com
# 设置截图分辨率
gowitness single --width 1920 --height 1080 https://example.com
# 禁用JavaScript
gowitness single --disable-javascript https://example.com
# 设置用户代理
gowitness single --user-agent "My Custom User Agent" https://example.com
实际应用示例
假设你想监控一组网站的视觉变化:
# 创建URL列表文件
echo "https://example.com" >> urls.txt
echo "https://google.com" >> urls.txt
# 第一次截图
gowitness file -f urls.txt
# 一段时间后再次截图并比较
gowitness file -f urls.txt
gowitness report generate
注意事项
- gowitness需要Chrome或Chromium浏览器来执行截图
- 对于大型网站列表,可能需要调整超时时间
- 某些网站可能有反爬虫机制,使用代理可能有助于绕过
gowitness是一个功能强大且灵活的工具,特别适合安全研究人员、开发人员和QA工程师用于网页可视化监控和记录。