Documentation
¶
Index ¶
- Variables
- func AppendWithEnv(env []string, key, value string) []string
- func BuildPostFormHTML(targetURL, postData string) string
- func ChromeArgValue(raw, name string) string
- func CreateTransientDir(prefix string) (string, error)
- func FirstCookiePath(path string) string
- func IsChallengeIframeTarget(target ClickTarget) bool
- func IsVerifyButtonTarget(target ClickTarget) bool
- func NormalizeBlockedPattern(pattern string) string
- func NormalizeResponseHeaders(headers map[string]any) map[string]string
- func ScrubUserAgent(value string) string
- func SleepContext(ctx context.Context, d time.Duration) error
- func StartXvfb(xvfbPath string) (*exec.Cmd, string, error)
- func SummarizeCandidateTargets(targets []ClickTarget) []string
- func SummarizeClickTarget(target ClickTarget) string
- func URLsEquivalent(lhs, rhs string) bool
- type ChallengeResolutionResult
- type ClickTarget
- type Client
- type Config
- type Cookie
- type DocumentResponse
- type Logger
- type Point
- type Proxy
- type Request
- type Result
Constants ¶
This section is empty.
Variables ¶
View Source
var AccessDeniedSelectors = []string{
"div.cf-error-title span.cf-code-label span",
"#cf-error-details div.cf-error-overview h1",
}
View Source
var AccessDeniedTitles = []string{
"Access denied",
"Attention Required! | Cloudflare",
}
View Source
var BlockedURLs = []string{
"*.png", "*.jpg", "*.jpeg", "*.gif", "*.webp", "*.bmp", "*.svg", "*.ico",
"*.PNG", "*.JPG", "*.JPEG", "*.GIF", "*.WEBP", "*.BMP", "*.SVG", "*.ICO",
"*.tiff", "*.tif", "*.jpe", "*.apng", "*.avif", "*.heic", "*.heif",
"*.TIFF", "*.TIF", "*.JPE", "*.APNG", "*.AVIF", "*.HEIC", "*.HEIF",
"*.css", "*.CSS",
"*.woff", "*.woff2", "*.ttf", "*.otf", "*.eot",
"*.WOFF", "*.WOFF2", "*.TTF", "*.OTF", "*.EOT",
}
View Source
var ChallengeSelectors = []string{
"#cf-challenge-running",
".ray_id",
".attack-box",
"#cf-please-wait",
"#challenge-spinner",
"#trk_jschal_js",
"#turnstile-wrapper",
".lds-ring",
"td.info #js_info",
"div.vc div.text-box h2",
}
View Source
var ChallengeTitles = []string{
"Just a moment...",
"DDoS-Guard",
}
View Source
var TurnstileSelectors = []string{
"input[name='cf-turnstile-response']",
}
Functions ¶
func AppendWithEnv ¶
func BuildPostFormHTML ¶
func ChromeArgValue ¶
func CreateTransientDir ¶
func FirstCookiePath ¶
func IsChallengeIframeTarget ¶
func IsChallengeIframeTarget(target ClickTarget) bool
func IsVerifyButtonTarget ¶
func IsVerifyButtonTarget(target ClickTarget) bool
func NormalizeBlockedPattern ¶
func ScrubUserAgent ¶
func SummarizeCandidateTargets ¶
func SummarizeCandidateTargets(targets []ClickTarget) []string
func SummarizeClickTarget ¶
func SummarizeClickTarget(target ClickTarget) string
func URLsEquivalent ¶
Types ¶
type ChallengeResolutionResult ¶
type ChallengeResolutionResult struct {
URL string `json:"url,omitempty"`
Status int `json:"status,omitempty"`
Headers map[string]string `json:"headers,omitempty"`
Response string `json:"response,omitempty"`
Cookies []Cookie `json:"cookies,omitempty"`
UserAgent string `json:"userAgent,omitempty"`
Screenshot string `json:"screenshot,omitempty"`
TurnstileToken string `json:"turnstile_token,omitempty"`
}
type ClickTarget ¶
type ClickTarget struct {
Kind string `json:"kind"`
Tag string `json:"tag"`
Type string `json:"type"`
Text string `json:"text"`
ID string `json:"id"`
Name string `json:"name"`
Title string `json:"title"`
AriaLabel string `json:"ariaLabel"`
Role string `json:"role"`
ClassName string `json:"className"`
TabIndex int64 `json:"tabIndex"`
Disabled bool `json:"disabled"`
Src string `json:"src"`
Left float64 `json:"left"`
Top float64 `json:"top"`
Width float64 `json:"width"`
Height float64 `json:"height"`
Visible bool `json:"visible"`
}
func FallbackChallengeTargets ¶
func FallbackChallengeTargets(targets []ClickTarget) []ClickTarget
func RelevantChallengeTargets ¶
func RelevantChallengeTargets(targets []ClickTarget) []ClickTarget
func TabbableTargets ¶
func TabbableTargets(targets []ClickTarget) []ClickTarget
type Cookie ¶
type Cookie struct {
Name string `json:"name"`
Value string `json:"value"`
Domain string `json:"domain,omitempty"`
Path string `json:"path,omitempty"`
Expires float64 `json:"expires,omitempty"`
Size int64 `json:"size,omitempty"`
HTTPOnly bool `json:"httpOnly,omitempty"`
Secure bool `json:"secure,omitempty"`
Session bool `json:"session,omitempty"`
SameSite string `json:"sameSite,omitempty"`
}
type DocumentResponse ¶
type Point ¶
func ClickPointsForTarget ¶
func ClickPointsForTarget(target ClickTarget) []Point
type Request ¶
type Request struct {
URL string `json:"url,omitempty"`
Method string `json:"method,omitempty"`
PostData string `json:"postData,omitempty"`
Cookies []Cookie `json:"cookies,omitempty"`
MaxTimeoutMS int `json:"maxTimeoutMs,omitempty"`
ReturnOnlyCookies bool `json:"returnOnlyCookies,omitempty"`
ReturnScreenshot bool `json:"returnScreenshot,omitempty"`
WaitInSeconds int `json:"waitInSeconds,omitempty"`
DisableMedia bool `json:"disableMedia,omitempty"`
TabsTillVerify *int `json:"tabsTillVerify,omitempty"`
LogHTML bool `json:"logHtml,omitempty"`
}
type Result ¶
type Result struct {
Result *ChallengeResolutionResult
Message string
}
Directories
¶
| Path | Synopsis |
|---|---|
|
Package geckodriverbackend implements the browser.Client interface on top of geckodriver + Firefox (typically daijro/camoufox).
|
Package geckodriverbackend implements the browser.Client interface on top of geckodriver + Firefox (typically daijro/camoufox). |
Click to show internal directories.
Click to hide internal directories.