# 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