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。

截图展示

gallery

detail

terminal

许可证

gowitness采用GNU General Public v3许可证授权。超出此许可证范围的权限可通过联系SensePost获取。


更多关于golang命令行网页截图工具插件gowitness的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于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

注意事项

  1. gowitness需要Chrome或Chromium浏览器来执行截图
  2. 对于大型网站列表,可能需要调整超时时间
  3. 某些网站可能有反爬虫机制,使用代理可能有助于绕过

gowitness是一个功能强大且灵活的工具,特别适合安全研究人员、开发人员和QA工程师用于网页可视化监控和记录。

回到顶部