Documentation
¶
Index ¶
- Constants
- Variables
- func AccountFingerprint(options Options) (map[string]any, error)
- func FindExecutable(ctx context.Context, proxy string) (string, error)
- func GeneratePrompt(body []byte) (string, bool)
- func HasDisplay() bool
- func Installed() bool
- func PersistAccountFingerprint(sourceDirectory string, targetDirectory string) error
- func RemoveStaleProfiles() (int, error)
- type Download
- type GenerateTurn
- type LiveView
- type LoginOptions
- type LoginResult
- type Options
- type PageCatalog
- type ProtectedResponse
- type StartupStage
- type State
- type Worker
- func (worker *Worker) Close() error
- func (worker *Worker) Generate(ctx context.Context, turn GenerateTurn) (*ProtectedResponse, error)
- func (worker *Worker) PageCatalog() PageCatalog
- func (worker *Worker) Proof(ctx context.Context, digest string, prompt string) (string, error)
- func (worker *Worker) ProtocolHeaders(ctx context.Context) (http.Header, error)
- func (worker *Worker) Reload(ctx context.Context) error
- func (worker *Worker) SendProtected(ctx context.Context, rawURL string, headers http.Header, body []byte) (*ProtectedResponse, error)
- func (worker *Worker) State() State
- func (worker *Worker) StorageCookies(ctx context.Context) ([]byte, error)
Constants ¶
const AvailableRegionsURL = "https://aistudio.google.com/docs/available-regions"
AvailableRegionsURL 是官网在地区或账户不受支持时跳转的页面
Variables ¶
var ErrAuthenticationRequired = errors.New("隔离登录态失效")
ErrAuthenticationRequired 表示隔离账户需要恢复登录
var ErrNoDisplay = errors.New("当前环境没有图形界面,无法打开 Camoufox 登录窗口:启动服务后在管理页面“添加账户”中选择“浏览器登录”,登录窗口显示在管理页面中")
ErrNoDisplay 表示本机没有图形界面,无法打开可见的登录窗口
var ErrProxyUnreachable = errors.New("代理不可达")
ErrProxyUnreachable 表示 Worker 载入 AI Studio 期间无法连接代理
var ErrRegionNotSupported = errors.New("AI Studio 不支持当前出口地区或账户,为该账户或全局代理换用支持地区的出口")
ErrRegionNotSupported 表示 AI Studio 不支持当前出口地区或账户
Functions ¶
func AccountFingerprint ¶ added in v0.2.0
AccountFingerprint 返回账户固定 Camoufox 指纹配置,不存在时按当前版本生成并保存
func FindExecutable ¶
FindExecutable 定位与 camoufoxRelease 同版本的 Camoufox,都没有时经 proxy 下载,proxy 为空时直连
func GeneratePrompt ¶ added in v0.3.0
GeneratePrompt 返回 GenerateContent 正文最后一个轮次的文本,即官网用户在输入框中输入的提示词;最后一个轮次不是带文本的 user 轮次时返回 false
func HasDisplay ¶ added in v0.2.14
func HasDisplay() bool
HasDisplay 判断本机能否显示可见的浏览器窗口,Linux 上需要 DISPLAY 或 WAYLAND_DISPLAY
func Installed ¶ added in v0.2.17
func Installed() bool
Installed 表示本机已有与 camoufoxRelease 同版本的 Camoufox,不触发下载
func PersistAccountFingerprint ¶
PersistAccountFingerprint 将隔离登录指纹保存到账户目录
func RemoveStaleProfiles ¶ added in v0.1.7
RemoveStaleProfiles 结束仍在使用创建进程已退出的临时 profile 的进程树,再删除这些 profile 并返回删除数量
Types ¶
type Download ¶ added in v0.2.17
Download 是正在进行的 Camoufox 下载的已收与总字节,总字节未知时为 0
func DownloadProgress ¶ added in v0.2.17
DownloadProgress 返回正在进行的 Camoufox 下载,没有下载时 ok 为 false
type GenerateTurn ¶ added in v0.3.0
GenerateTurn 是在页面界面运行的一轮 GenerateContent:Body 第 ProofStart 到 ProofEnd 字节是 proof 字段,发送时换成页面应用为 Digest 取得的 proof;Digest 为 binding 的 SHA-256 十六进制
type LiveView ¶ added in v0.2.14
type LiveView struct {
// contains filtered or unexported fields
}
LiveView 把无头隔离登录浏览器的画面推给管理页登录窗口,并把窗口中的输入转发给浏览器
func NewLiveView ¶ added in v0.2.14
func NewLiveView() *LiveView
NewLiveView 创建尚未连接登录浏览器与登录窗口的 LiveView
type LoginOptions ¶
type LoginOptions struct {
ExecutablePath string
Directory string
Locale string
Timezone string
Proxy string
ProxyBypass string
Timeout time.Duration
Log io.Writer
View *LiveView
}
LoginOptions 定义纯 Go 隔离登录环境,View 不为空时浏览器以无头方式运行,画面与输入经管理页登录窗口传递
type LoginResult ¶
type LoginResult struct {
StorageStateJSON []byte
Email string
PageURL string
VerifiedAt time.Time
DriveError string
CloseError string
}
LoginResult 返回隔离浏览器导出的 Playwright storage state
func Login ¶
func Login(ctx context.Context, options LoginOptions) (result LoginResult, err error)
Login 启动隔离 Camoufox 供用户登录 Google,并在 AI Studio 可用后导出认证状态
type Options ¶
type Options struct {
ExecutablePath string
StorageStatePath string
Model string
Locale string
Timezone string
Proxy string
ProxyBypass string
Headless bool
AuthUser int
CacheDirectory string
ReadyTimeout time.Duration
Log io.Writer
StartupProgress func(StartupStage)
// contains filtered or unexported fields
}
Options 定义单个 AI Studio 账户的原生 Camoufox runtime
type PageCatalog ¶ added in v0.3.0
PageCatalog 是会话页面载入时 GetLoggingContext、GetAiStudioBenefitTier 与 ListModels 的响应正文
type ProtectedResponse ¶
type ProtectedResponse struct {
StatusCode int
Header http.Header
Body io.ReadCloser
}
ProtectedResponse 表示由固定指纹浏览器流式返回的 MakerSuite 响应
type StartupStage ¶
type StartupStage string
StartupStage 表示 Camoufox runtime 的启动阶段
const ( // StartupPreparingBrowser 表示正在准备浏览器配置 StartupPreparingBrowser StartupStage = "preparing_browser" // StartupLaunchingBrowser 表示正在启动浏览器进程 StartupLaunchingBrowser StartupStage = "launching_browser" // StartupConnectingBiDi 表示正在连接 WebDriver BiDi StartupConnectingBiDi StartupStage = "connecting_bidi" // StartupLoadingAIStudio 表示正在载入 AI Studio 页面 StartupLoadingAIStudio StartupStage = "loading_ai_studio" // StartupLocatingWAA 表示正在定位 WAA 服务 StartupLocatingWAA StartupStage = "locating_waa" // StartupBootstrappingWAA 表示正在执行 WAA Bootstrap StartupBootstrappingWAA StartupStage = "bootstrapping_waa" )
type State ¶
type State struct {
PID int
PageURL string
UserAgent string
SnapshotKey string
Headers http.Header
}
State 返回原生 runtime 的当前页面与 bootstrap 结果
type Worker ¶
type Worker struct {
// contains filtered or unexported fields
}
Worker 保存单个账户的长驻 Camoufox 与 WAA service
func (*Worker) Generate ¶ added in v0.3.0
func (worker *Worker) Generate(ctx context.Context, turn GenerateTurn) (*ProtectedResponse, error)
Generate 像官网用户一样在标签页界面运行一轮 GenerateContent:按标签页上一轮的对话决定继续、Rerun 或先开新对话,输入框没有焦点时以可信指针点击输入框,写入最后一个 user 轮次的文本后点击 Run,页面应用自己取 proof、构造请求头并发出请求,发送时正文换成 turn 的正文;一轮成功完成后在后台新开对话;全部标签页都在运行对话时在新标签页中载入官网页面
func (*Worker) PageCatalog ¶ added in v0.3.0
func (worker *Worker) PageCatalog() PageCatalog
PageCatalog 返回当前页面载入时 GetLoggingContext、GetAiStudioBenefitTier 与 ListModels 的响应正文
func (*Worker) Proof ¶
Proof 在一次页面调用中写入官网 prompt 并为 SHA-256 digest 生成 fresh WAA proof,页面值未同步时最多重试 5 秒
func (*Worker) ProtocolHeaders ¶
ProtocolHeaders 返回官网为 GenerateContent 构造的六个公共头
func (*Worker) Reload ¶ added in v0.3.0
Reload 像官网用户一样在当前标签页中按官网冷启动重新载入页面;当前标签页有进行中的请求时改在新标签页中载入并切换过去,原标签页在其中的请求结束后关闭