# Technical Documentation: sensepost/gowitness > ℹ️ **Provenance:** Hybrid Fusion: `sensepost/gowitness` (README + 2 In-Tree Chapters) · [CodeWiki Reference](https://codewiki.google/github.com/sensepost/gowitness) · Recency: Active (< 180 days) ## 1. Project Overview & Quickstart (sensepost/gowitness)

gowitness

A golang, web screenshot utility using Chrome Headless.

## introduction `gowitness` is a website screenshot utility written in Golang, that uses Chrome Headless to generate screenshots of web interfaces using the command line, with a handy report viewer to process results. Both Linux and macOS is supported, with Windows support mostly working. ## features The main goal of `gowitness` is to take website screenshots (**and do that well!**), while optionally saving any information it gathered along the way. That said, a short list of features include: - Take website screenshots, obviously..., but fast and accurate! - Scan a list of URLs, CIDRs, Nmap Results, Nessus Results and more. - Ability to grab and save data (i.e., a request log, console logs, headers, cookies, etc.) - Write data to many formats (sqlite database, jsonlines, csv, etc.) - An epic web-based results viewer (if you saved data to SQLite) including a fully featured API! - And many, many more! ## quick start There are a few ways to get gowitness, the simplest (assuming your `$GOBIN` path is in your shell `$PATH`) will be to use `go install`: ```text go install github.com/sensepost/gowitness@latest ``` Otherwise, grab a platform specific release binary or compile from source. Then, scan your first target writing the results to a SQLite database and the screenshot to `./screenshots` with: ```text gowitness scan single --url "https://sensepost.com" --write-db ``` There are many, *many* flags and scan types in `gowitness`. Just add `-h` anywhere and read all about it! ## documentation For advanced installation information and other documentation, please refer to the wiki [here](https://github.com/sensepost/gowitness/wiki). ## screenshots ## credits `gowitness` would not have been possible without some of [these amazing projects](./go.mod): [chi](https://github.com/go-chi/chi), [chromedp](https://github.com/chromedp/chromedp), [go-rod](https://github.com/go-rod/rod), [cobra](https://github.com/spf13/cobra), [gorm](https://github.com/go-gorm/gorm), [glamour](https://github.com/charmbracelet/glamour), [go-nmap](https://github.com/lair-framework/go-nmap), [wappalyzergo](https://github.com/projectdiscovery/wappalyzergo), [goimagehash](https://github.com/corona10/goimagehash). ## license `gowitness` is licensed under a [GNU General Public v3 License](https://www.gnu.org/licenses/gpl-3.0.en.html). Permissions beyond the scope of this license may be available at . ## 2. In-Tree Documentation Chapters (sensepost/gowitness) ## File: README.md

gowitness

A golang, web screenshot utility using Chrome Headless.

## introduction `gowitness` is a website screenshot utility written in Golang, that uses Chrome Headless to generate screenshots of web interfaces using the command line, with a handy report viewer to process results. Both Linux and macOS is supported, with Windows support mostly working. ## features The main goal of `gowitness` is to take website screenshots (**and do that well!**), while optionally saving any information it gathered along the way. That said, a short list of features include: - Take website screenshots, obviously..., but fast and accurate! - Scan a list of URLs, CIDRs, Nmap Results, Nessus Results and more. - Ability to grab and save data (i.e., a request log, console logs, headers, cookies, etc.) - Write data to many formats (sqlite database, jsonlines, csv, etc.) - An epic web-based results viewer (if you saved data to SQLite) including a fully featured API! - And many, many more! ## quick start There are a few ways to get gowitness, the simplest (assuming your `$GOBIN` path is in your shell `$PATH`) will be to use `go install`: ```text go install github.com/sensepost/gowitness@latest ``` Otherwise, grab a platform specific release binary or compile from source. Then, scan your first target writing the results to a SQLite database and the screenshot to `./screenshots` with: ```text gowitness scan single --url "https://sensepost.com" --write-db ``` There are many, *many* flags and scan types in `gowitness`. Just add `-h` anywhere and read all about it! ## documentation For advanced installation information and other documentation, please refer to the wiki [here](https://github.com/sensepost/gowitness/wiki). ## screenshots ## credits `gowitness` would not have been possible without some of [these amazing projects](./go.mod): [chi](https://github.com/go-chi/chi), [chromedp](https://github.com/chromedp/chromedp), [go-rod](https://github.com/go-rod/rod), [cobra](https://github.com/spf13/cobra), [gorm](https://github.com/go-gorm/gorm), [glamour](https://github.com/charmbracelet/glamour), [go-nmap](https://github.com/lair-framework/go-nmap), [wappalyzergo](https://github.com/projectdiscovery/wappalyzergo), [goimagehash](https://github.com/corona10/goimagehash). ## license `gowitness` is licensed under a [GNU General Public v3 License](https://www.gnu.org/licenses/gpl-3.0.en.html). Permissions beyond the scope of this license may be available at . --- ## File: web/ui/README.md # ui This is the gowitness user interface source. ## development notes Typically, you'd have the API server running using `go run main.go report server`. That starts the API server on port 7171. `npm run dev` will start another web server on another port which means you will struggle to connect to the API. to help, I added an environment variable you can set. In the default case, it would look something like this: ```text VITE_GOWITNESS_API_BASE_URL=http://localhost:7171 npm run dev ``` --- METRICS --- - Files Extracted: 3 - Estimated Token Budget: ~1462 tokens - Recency Window: Active (< 180 days) - Canonical Reference: https://codewiki.google/github.com/sensepost/gowitness