Getting Started
Last updated
From
go get to a first Markdown result: prerequisites, install, one Fetch call, and shutting browsers down.Prerequisites
| Item | Requirement | Why |
|---|---|---|
| Go | 1.25.0 or newer | The version declared in go.mod |
| OS | macOS or Linux | Chrome path lookup and cookie decryption are implemented for these two platforms; elsewhere Fetch still runs headless with go-rod's own browser lookup, without SameSession or headed retry |
| Chrome / Chromium | Installed | macOS looks for /Applications/Google Chrome.app or Chromium.app; Linux tries google-chrome, google-chrome-stable, chromium, chromium-browser in order |
sqlite3 | Only for SameSession | Reads the Chrome cookie database |
security (macOS) | Built in | Retrieves the Chrome Safe Storage password, only for SameSession |
secret-tool (Linux) | libsecret-tools | Same purpose, only for SameSession |
When no Chrome binary is found, go-rod falls back to a browser it downloads itself.
SameSession still needs a local Chrome profile, because that is where the cookies come from.Install
- go get github.com/pardnchiu/go-browser/core
The package lives in the
core subdirectory and its package name is browser:- import browser "github.com/pardnchiu/go-browser/core"
First call
- package main
- import (
- "context"
- "fmt"
- "time"
- browser "github.com/pardnchiu/go-browser/core"
- )
- func main() {
- defer browser.Close()
- result, err := browser.Fetch(context.Background(), "https://example.com", 30*time.Second, nil)
- if err != nil {
- panic(err)
- }
- fmt.Println(result.Title)
- fmt.Println(result.Content)
- }
Passing
nil for opt takes every default: headless first, up to three scroll passes, Markdown output, a two second idle wait. The URL needs a scheme and a dotted hostname, so http://localhost:8080 is rejected with invalid url.Call Close before exit
Browser instances are cached and reused, and a background evictor reclaims them after five idle minutes. Calling
browser.Close() before exit shuts all cached instances down immediately; skipping it leaves Chrome processes running until the evictor or the process exit cleans them up.Next
- Troubleshooting: what each error means
- Output Formats: Markdown, HTML or a JSON tree
- Cookie Sessions: reading pages behind a login
- Option Fields: every
Optionfield and its default