SYMBOL INDEX (610 symbols across 112 files) FILE: cmd/functional-test/main.go function main (line 23) | func main() { function runFunctionalTests (line 33) | func runFunctionalTests() error { function runIndividualTestCase (line 45) | func runIndividualTestCase(testcase testutils.TestCase) error { FILE: cmd/integration-test/filters.go type matchConditionIntegrationTest (line 23) | type matchConditionIntegrationTest struct method Execute (line 27) | func (h *matchConditionIntegrationTest) Execute() error { type filterConditionIntegrationTest (line 39) | type filterConditionIntegrationTest struct method Execute (line 42) | func (h *filterConditionIntegrationTest) Execute() error { type uniqueFilterIntegrationTest (line 54) | type uniqueFilterIntegrationTest struct method Execute (line 56) | func (h *uniqueFilterIntegrationTest) Execute() error { function RunKatanaAndGetResults (line 110) | func RunKatanaAndGetResults(debug bool, extra ...string) ([]string, erro... FILE: cmd/integration-test/integration-test.go type TestCase (line 11) | type TestCase interface function main (line 30) | func main() { FILE: cmd/integration-test/library.go type goIntegrationTest (line 17) | type goIntegrationTest struct method Execute (line 21) | func (h *goIntegrationTest) Execute() error { FILE: cmd/tools/crawl-maze-score/main.go function main (line 113) | func main() { function process (line 121) | func process() error { function colorizeText (line 167) | func colorizeText(text string, value bool) string { function strippedLink (line 174) | func strippedLink(link string) string { function readFoundLinks (line 182) | func readFoundLinks(input string) ([]string, error) { FILE: internal/runner/banner.go function showBanner (line 18) | func showBanner() { function GetUpdateCallback (line 24) | func GetUpdateCallback() func() { FILE: internal/runner/executer.go method ExecuteCrawling (line 13) | func (r *Runner) ExecuteCrawling() error { function addSchemeIfNotExists (line 55) | func addSchemeIfNotExists(inputURL string) string { FILE: internal/runner/healthcheck.go function DoHealthCheck (line 16) | func DoHealthCheck(options *types.Options, flagSet *goflags.FlagSet) str... FILE: internal/runner/options.go function validateOptions (line 20) | func validateOptions(options *types.Options) error { function readCustomFormConfig (line 79) | func readCustomFormConfig(formConfig string) error { method parseInputs (line 99) | func (r *Runner) parseInputs() []string { function normalizeInput (line 126) | func normalizeInput(value string) string { function initExampleFormFillConfig (line 130) | func initExampleFormFillConfig() error { FILE: internal/runner/runner.go type Runner (line 27) | type Runner struct method Close (line 152) | func (r *Runner) Close() error { method SaveState (line 159) | func (r *Runner) SaveState(resumeFilename string) error { type RunnerState (line 36) | type RunnerState struct function New (line 41) | func New(options *types.Options) (*Runner, error) { function expandCIDRInputValue (line 165) | func expandCIDRInputValue(value string) []string { function expandASNInputValue (line 174) | func expandASNInputValue(value string) []string { FILE: internal/testutils/helper.go function CompareOutput (line 3) | func CompareOutput(input, expected []string) bool { FILE: internal/testutils/integration.go function RunKatanaBinaryAndGetResults (line 9) | func RunKatanaBinaryAndGetResults(target string, katanaBinary string, de... FILE: internal/testutils/testutils.go type TestCase (line 9) | type TestCase struct FILE: pkg/engine/common/base.go type Shared (line 31) | type Shared struct method Enqueue (line 83) | func (s *Shared) Enqueue(queue *queue.Queue, navigationRequests ...*na... method ValidateScope (line 169) | func (s *Shared) ValidateScope(URL string, root string) bool { method Output (line 183) | func (s *Shared) Output(navigationRequest *navigation.Request, navigat... method NewCrawlSessionWithURL (line 225) | func (s *Shared) NewCrawlSessionWithURL(URL string) (*CrawlSession, er... method Do (line 304) | func (s *Shared) Do(crawlSession *CrawlSession, doRequest DoRequestFun... function NewShared (line 42) | func NewShared(options *types.CrawlerOptions) (*Shared, error) { type CrawlSession (line 206) | type CrawlSession struct type DoRequestFunc (line 294) | type DoRequestFunc FILE: pkg/engine/common/http.go type RedirectCallback (line 20) | type RedirectCallback function BuildHttpClient (line 23) | func BuildHttpClient(dialer *fastdialer.Dialer, options *types.Options, ... FILE: pkg/engine/engine.go type Engine (line 3) | type Engine interface FILE: pkg/engine/headless/browser/browser.go type Launcher (line 37) | type Launcher struct method ScopeValidator (line 72) | func (l *Launcher) ScopeValidator() ScopeValidator { method launchBrowserWithDataDir (line 76) | func (l *Launcher) launchBrowserWithDataDir(userDataDir string) (*rod.... method Close (line 143) | func (l *Launcher) Close() { method createBrowserPageFunc (line 270) | func (l *Launcher) createBrowserPageFunc() (*BrowserPage, error) { method GetPageFromPool (line 363) | func (l *Launcher) GetPageFromPool() (*BrowserPage, error) { method PutBrowserToPool (line 541) | func (l *Launcher) PutBrowserToPool(browser *BrowserPage) { type LauncherOptions (line 44) | type LauncherOptions struct type ScopeValidator (line 60) | type ScopeValidator function NewLauncher (line 63) | func NewLauncher(opts LauncherOptions) (*Launcher, error) { type BrowserPage (line 152) | type BrowserPage struct method WaitPageLoadHeurisitics (line 191) | func (b *BrowserPage) WaitPageLoadHeurisitics() error { method WaitPageLoadHeuristicsFallback (line 234) | func (b *BrowserPage) WaitPageLoadHeuristicsFallback() error { method WaitNewStable (line 245) | func (p *BrowserPage) WaitNewStable(d time.Duration) error { method handlePageDialogBoxes (line 382) | func (b *BrowserPage) handlePageDialogBoxes() error { method CloseBrowserPage (line 583) | func (b *BrowserPage) CloseBrowserPage() { type WaitOptions (line 164) | type WaitOptions struct function backoffCountSleeper (line 375) | func backoffCountSleeper(initInterval, maxInterval time.Duration, maxAtt... function fetchContinueRequest (line 482) | func fetchContinueRequest(page *rod.Page, e *proto.FetchRequestPaused) e... function fetchGetResponseBody (line 489) | func fetchGetResponseBody(page *rod.Page, e *proto.FetchRequestPaused) (... function netHTTPRequestFromProto (line 509) | func netHTTPRequestFromProto(e *proto.NetworkRequest) (*http.Request, er... function netHTTPResponseFromProto (line 524) | func netHTTPResponseFromProto(e *proto.FetchRequestPaused, body []byte) ... function isBrowserConnected (line 572) | func isBrowserConnected(browser *rod.Browser) bool { FILE: pkg/engine/headless/browser/cookie/cookie.go type CookieConsentBlockRequest (line 14) | type CookieConsentBlockRequest struct type Action (line 20) | type Action struct type Condition (line 24) | type Condition struct function init (line 36) | func init() { function ShouldBlockRequest (line 48) | func ShouldBlockRequest(url string, resourceType proto.NetworkResourceTy... function matchesRule (line 59) | func matchesRule(rule CookieConsentBlockRequest, url string, resourceTyp... function getResourceType (line 101) | func getResourceType(resourceType proto.NetworkResourceType) string { FILE: pkg/engine/headless/browser/cookie/cookie_test.go function TestShouldBlockRequest (line 9) | func TestShouldBlockRequest(t *testing.T) { FILE: pkg/engine/headless/browser/element.go constant buttonsCSSSelector (line 14) | buttonsCSSSelector = "button, input[type='button'], input[type='submit']" constant linksCSSSelector (line 16) | linksCSSSelector = "a" function isElementDisabled (line 20) | func isElementDisabled(element *types.HTMLElement) bool { method FindNavigations (line 59) | func (b *BrowserPage) FindNavigations() ([]*types.Action, error) { method GetAllElements (line 178) | func (b *BrowserPage) GetAllElements(selector string) ([]*types.HTMLElem... method GetElementFromXpath (line 191) | func (b *BrowserPage) GetElementFromXpath(xpath string) (*types.HTMLElem... method GetAllForms (line 204) | func (b *BrowserPage) GetAllForms() ([]*types.HTMLForm, error) { method GetEventListeners (line 218) | func (b *BrowserPage) GetEventListeners() ([]*types.EventListener, error) { type NavigatedLink (line 257) | type NavigatedLink struct method GetNavigatedLinks (line 263) | func (b *BrowserPage) GetNavigatedLinks() ([]*NavigatedLink, error) { function resolveURL (line 309) | func resolveURL(baseURLStr, href string) (string, error) { FILE: pkg/engine/headless/browser/stealth/assets.go constant JS (line 5) | JS = `;(() => { FILE: pkg/engine/headless/captcha/capsolver/capsolver.go constant defaultPollInterval (line 16) | defaultPollInterval = 3 * time.Second constant defaultTimeout (line 17) | defaultTimeout = 120 * time.Second function SetBaseURL (line 22) | func SetBaseURL(url string) { type Solver (line 35) | type Solver struct method Solve (line 53) | func (s *Solver) Solve(ctx context.Context, info *captcha.Info) (*capt... method createTask (line 101) | func (s *Solver) createTask(ctx context.Context, task map[string]any) ... method pollResult (line 137) | func (s *Solver) pollResult(ctx context.Context, taskID string, provid... method getTaskResult (line 164) | func (s *Solver) getTaskResult(ctx context.Context, taskID string) (*g... function init (line 40) | func init() { function New (line 46) | func New(apiKey string) *Solver { type createTaskRequest (line 76) | type createTaskRequest struct type createTaskResponse (line 81) | type createTaskResponse struct type getTaskResultRequest (line 88) | type getTaskResultRequest struct type getTaskResultResponse (line 93) | type getTaskResultResponse struct function extractToken (line 197) | func extractToken(solution map[string]any, provider captcha.Provider) (*... FILE: pkg/engine/headless/captcha/capsolver/capsolver_test.go function TestSolve (line 16) | func TestSolve(t *testing.T) { function TestCreateTaskError (line 76) | func TestCreateTaskError(t *testing.T) { function TestTurnstileToken (line 100) | func TestTurnstileToken(t *testing.T) { function TestExtractToken (line 135) | func TestExtractToken(t *testing.T) { function TestUnsupportedProvider (line 182) | func TestUnsupportedProvider(t *testing.T) { FILE: pkg/engine/headless/captcha/captcha.go type Handler (line 14) | type Handler struct method HandleIfCaptcha (line 29) | func (h *Handler) HandleIfCaptcha(ctx context.Context, page *rod.Page,... method solveCaptcha (line 46) | func (h *Handler) solveCaptcha(ctx context.Context, page *rod.Page, in... function NewHandler (line 18) | func NewHandler(solverProvider, apiKey string) (*Handler, error) { function injectToken (line 63) | func injectToken(page *rod.Page, solution *Solution) error { function injectionScript (line 72) | func injectionScript(provider Provider) (string, error) { FILE: pkg/engine/headless/captcha/helpers_test.go function setupBrowser (line 13) | func setupBrowser(t *testing.T) *rod.Browser { function servePage (line 25) | func servePage(t *testing.T, html string) string { FILE: pkg/engine/headless/captcha/identify.go type Provider (line 8) | type Provider constant ProviderRecaptchaV2 (line 11) | ProviderRecaptchaV2 Provider = "recaptchav2" constant ProviderRecaptchaV3 (line 12) | ProviderRecaptchaV3 Provider = "recaptchav3" constant ProviderRecaptchaV2Enterprise (line 13) | ProviderRecaptchaV2Enterprise Provider = "recaptchav2enterprise" constant ProviderRecaptchaV3Enterprise (line 14) | ProviderRecaptchaV3Enterprise Provider = "recaptchav3enterprise" constant ProviderTurnstile (line 15) | ProviderTurnstile Provider = "turnstile" constant ProviderHCaptcha (line 16) | ProviderHCaptcha Provider = "hcaptcha" type Info (line 19) | type Info struct function Identify (line 26) | func Identify(page *rod.Page) (*Info, error) { FILE: pkg/engine/headless/captcha/identify_test.go function TestDetectCaptchaWithDit (line 11) | func TestDetectCaptchaWithDit(t *testing.T) { function TestIdentify (line 50) | func TestIdentify(t *testing.T) { FILE: pkg/engine/headless/captcha/inject_test.go function TestInjectionScript (line 10) | func TestInjectionScript(t *testing.T) { FILE: pkg/engine/headless/captcha/injection_test.go function TestE2E_RecaptchaV2_Injection (line 12) | func TestE2E_RecaptchaV2_Injection(t *testing.T) { function TestE2E_Turnstile_Injection (line 54) | func TestE2E_Turnstile_Injection(t *testing.T) { function TestE2E_HCaptcha_Injection (line 96) | func TestE2E_HCaptcha_Injection(t *testing.T) { function TestE2E_RecaptchaV2_FormSubmitFallback (line 143) | func TestE2E_RecaptchaV2_FormSubmitFallback(t *testing.T) { FILE: pkg/engine/headless/captcha/integration_test.go function TestIntegration_DetectRealCaptchaPages (line 10) | func TestIntegration_DetectRealCaptchaPages(t *testing.T) { FILE: pkg/engine/headless/captcha/solver.go type Solution (line 8) | type Solution struct type Solver (line 13) | type Solver interface function NewSolver (line 17) | func NewSolver(provider, apiKey string) (Solver, error) { type SolverConstructor (line 25) | type SolverConstructor function RegisterSolver (line 29) | func RegisterSolver(name string, constructor SolverConstructor) { FILE: pkg/engine/headless/captcha/solver_test.go function TestNewSolver_UnsupportedProvider (line 10) | func TestNewSolver_UnsupportedProvider(t *testing.T) { function TestRegisterSolver (line 16) | func TestRegisterSolver(t *testing.T) { FILE: pkg/engine/headless/crawler/crawler.go type Crawler (line 30) | type Crawler struct method Close (line 138) | func (c *Crawler) Close() { method GetCrawlGraph (line 147) | func (c *Crawler) GetCrawlGraph() *graph.CrawlGraph { method Crawl (line 151) | func (c *Crawler) Crawl(URL string) error { method crawlFn (line 301) | func (c *Crawler) crawlFn(ctx context.Context, action *types.Action, p... method executeCrawlStateAction (line 448) | func (c *Crawler) executeCrawlStateAction(action *types.Action, page *... type Options (line 41) | type Options struct function init (line 73) | func init() { function New (line 83) | func New(opts Options) (*Crawler, error) { function isLogoutPage (line 511) | func isLogoutPage(element *types.HTMLElement) bool { FILE: pkg/engine/headless/crawler/diagnostics/diagnostics.go type Writer (line 16) | type Writer interface type PageStateType (line 24) | type PageStateType type diskWriter (line 31) | type diskWriter struct method Close (line 68) | func (w *diskWriter) Close() error { method LogAction (line 95) | func (w *diskWriter) LogAction(action *types.Action) error { method LogPageState (line 103) | func (w *diskWriter) LogPageState(state *types.PageState, stateType Pa... method LogNavigations (line 140) | func (w *diskWriter) LogNavigations(pageStateID string, navigations []... method LogPageStateScreenshot (line 184) | func (w *diskWriter) LogPageStateScreenshot(pageStateID string, screen... type stateMetadata (line 38) | type stateMetadata struct type navigationEntry (line 46) | type navigationEntry struct function NewWriter (line 55) | func NewWriter(directory string) (Writer, error) { FILE: pkg/engine/headless/crawler/formfill.go function deriveName (line 15) | func deriveName(e *types.HTMLElement) string { function copyAttrs (line 22) | func copyAttrs(src map[string]string, skipKeys ...string) mapsutil.Order... function convertHTMLElementToFormInput (line 36) | func convertHTMLElementToFormInput(element *types.HTMLElement) utilsform... function convertHTMLElementToFormTextArea (line 45) | func convertHTMLElementToFormTextArea(element *types.HTMLElement) utilsf... function convertHTMLElementToFormSelect (line 52) | func convertHTMLElementToFormSelect(element *types.HTMLElement) utilsfor... method processForm (line 60) | func (c *Crawler) processForm(page *browser.BrowserPage, form *types.HTM... method getFieldName (line 136) | func (c *Crawler) getFieldName(field *types.HTMLElement) string { method buildFormSelectWithOptions (line 140) | func (c *Crawler) buildFormSelectWithOptions(page *browser.BrowserPage, ... method applyFormSuggestions (line 172) | func (c *Crawler) applyFormSuggestions(suggestions mapsutil.OrderedMap[s... FILE: pkg/engine/headless/crawler/normalizer/dom_utils.go type DOMNormalizer (line 31) | type DOMNormalizer struct method Apply (line 66) | func (d *DOMNormalizer) Apply(content string) (string, error) { function NewDOMNormalizer (line 38) | func NewDOMNormalizer() *DOMNormalizer { type domTransformationFunc (line 87) | type domTransformationFunc type selectionTransformationFunc (line 89) | type selectionTransformationFunc function removeComments (line 96) | func removeComments(n *html.Node) { function removeCommentsDomTransformationFunc (line 106) | func removeCommentsDomTransformationFunc(s *goquery.Selection) { function removeClassIDDataAttributesDomTransformationFunc (line 132) | func removeClassIDDataAttributesDomTransformationFunc(s *goquery.Selecti... function removeAttributes (line 140) | func removeAttributes(s *goquery.Selection) { FILE: pkg/engine/headless/crawler/normalizer/dom_utils_test.go function TestDOMNormalizer_Apply (line 7) | func TestDOMNormalizer_Apply(t *testing.T) { FILE: pkg/engine/headless/crawler/normalizer/normalizer.go type Normalizer (line 18) | type Normalizer struct method Apply (line 42) | func (n *Normalizer) Apply(text string) (string, error) { function New (line 24) | func New() (*Normalizer, error) { function normalizeDocument (line 67) | func normalizeDocument(text string) string { function replaceHexEscapeSequence (line 88) | func replaceHexEscapeSequence(match string) string { function convertHexEscapeSequencesToEntities (line 104) | func convertHexEscapeSequencesToEntities(input string) string { function stripTextContent (line 110) | func stripTextContent(content string) (string, error) { function removeTextNodesFromSelection (line 127) | func removeTextNodesFromSelection(s *goquery.Selection) { FILE: pkg/engine/headless/crawler/normalizer/simhash/simhash.go constant maxTokens (line 23) | maxTokens = 5000 constant featuresBufSize (line 24) | featuresBufSize = 1000 function fingerprintOptimized (line 34) | func fingerprintOptimized(r io.Reader, shingle int) uint64 { function extractFeatures (line 92) | func extractFeatures(t *html.Token, features *[]string) { function Fingerprint (line 130) | func Fingerprint(r io.Reader, shingle int) uint64 { type Oracle (line 134) | type Oracle struct method See (line 154) | func (n *Oracle) See(f uint64) *Oracle { method Seen (line 172) | func (n *Oracle) Seen(f uint64, r uint8) bool { function NewOracle (line 140) | func NewOracle() *Oracle { function newNode (line 144) | func newNode(f uint64) *Oracle { function Distance (line 149) | func Distance(a, b uint64) uint8 { FILE: pkg/engine/headless/crawler/normalizer/simhash/simhash_test.go function TestFingerprintDeterministic (line 17) | func TestFingerprintDeterministic(t *testing.T) { function TestFingerprintSimilarity (line 31) | func TestFingerprintSimilarity(t *testing.T) { function TestOracle (line 47) | func TestOracle(t *testing.T) { FILE: pkg/engine/headless/crawler/normalizer/text_utils.go type TextNormalizer (line 30) | type TextNormalizer struct method Apply (line 56) | func (n *TextNormalizer) Apply(text string) string { function NewTextNormalizer (line 39) | func NewTextNormalizer() (*TextNormalizer, error) { FILE: pkg/engine/headless/crawler/normalizer/text_utils_test.go function TestTextNormalizer_AllPatterns (line 8) | func TestTextNormalizer_AllPatterns(t *testing.T) { FILE: pkg/engine/headless/crawler/state.go constant simhashThreshold (line 20) | simhashThreshold = 2 method isCorrectNavigation (line 22) | func (c *Crawler) isCorrectNavigation(page *browser.BrowserPage, action ... function getPageHash (line 54) | func getPageHash(page *browser.BrowserPage) (string, *types.PageState, e... function newPageState (line 67) | func newPageState(page *browser.BrowserPage, action *types.Action) (*typ... function sha256Hash (line 103) | func sha256Hash(item string) string { function getStrippedDOM (line 110) | func getStrippedDOM(contents string) (string, error) { method navigateBackToStateOrigin (line 132) | func (c *Crawler) navigateBackToStateOrigin(action *types.Action, page *... method tryElementNavigation (line 176) | func (c *Crawler) tryElementNavigation(page *browser.BrowserPage, action... function isElementMatch (line 213) | func isElementMatch(current, target *types.HTMLElement) bool { method tryBrowserHistoryNavigation (line 237) | func (c *Crawler) tryBrowserHistoryNavigation(page *browser.BrowserPage,... method isBackNavigationPossible (line 275) | func (c *Crawler) isBackNavigationPossible(page *browser.BrowserPage, or... method tryShortestPathNavigation (line 294) | func (c *Crawler) tryShortestPathNavigation(action *types.Action, page *... FILE: pkg/engine/headless/crawler/state_test.go function TestPageFingerprint_Stability (line 12) | func TestPageFingerprint_Stability(t *testing.T) { function TestPageFingerprint (line 16) | func TestPageFingerprint(t *testing.T) { function TestSimHashSimilarity (line 107) | func TestSimHashSimilarity(t *testing.T) { FILE: pkg/engine/headless/debugger.go type ActiveURL (line 12) | type ActiveURL struct type CrawlDebugger (line 20) | type CrawlDebugger struct method StartURL (line 55) | func (cd *CrawlDebugger) StartURL(url string, depth int) { method EndURL (line 70) | func (cd *CrawlDebugger) EndURL(url string) { method GetActiveURLs (line 81) | func (cd *CrawlDebugger) GetActiveURLs() []ActiveURL { method handleActiveURLs (line 100) | func (cd *CrawlDebugger) handleActiveURLs(w http.ResponseWriter, r *ht... method handleHealth (line 112) | func (cd *CrawlDebugger) handleHealth(w http.ResponseWriter, r *http.R... method Close (line 122) | func (cd *CrawlDebugger) Close() { function NewCrawlDebugger (line 27) | func NewCrawlDebugger(httpPort int) *CrawlDebugger { FILE: pkg/engine/headless/graph/graph.go type CrawlGraph (line 15) | type CrawlGraph struct method GetVertices (line 34) | func (g *CrawlGraph) GetVertices() []string { method AddPageState (line 47) | func (g *CrawlGraph) AddPageState(n types.PageState) error { method AddEdge (line 85) | func (g *CrawlGraph) AddEdge(sourceState, targetState string, action *... method GetPageState (line 105) | func (g *CrawlGraph) GetPageState(id string) (*types.PageState, error) { method ShortestPath (line 113) | func (g *CrawlGraph) ShortestPath(sourceState, targetState string) ([]... method DrawGraph (line 133) | func (g *CrawlGraph) DrawGraph(file string) error { function navigationHasherFunc (line 19) | func navigationHasherFunc(n types.PageState) string { function NewCrawlGraph (line 24) | func NewCrawlGraph() *CrawlGraph { FILE: pkg/engine/headless/headless.go type Headless (line 22) | type Headless struct method Crawl (line 99) | func (h *Headless) Crawl(URL string) error { method Close (line 187) | func (h *Headless) Close() error { method performAdditionalAnalysis (line 194) | func (h *Headless) performAdditionalAnalysis(rr *output.Result) []*out... function New (line 33) | func New(options *types.CrawlerOptions) (*Headless, error) { function newLogger (line 54) | func newLogger(options *types.CrawlerOptions) *slog.Logger { function validateScopeFunc (line 75) | func validateScopeFunc(h *Headless, URL string) browser.ScopeValidator { FILE: pkg/engine/headless/js/js.go function InitJavascriptEnv (line 19) | func InitJavascriptEnv(page *rod.Page) error { FILE: pkg/engine/headless/js/page-init.js function hookNavigatedLinkSinks (line 24) | function hookNavigatedLinkSinks() { function hookMiscellaneousUtilities (line 86) | function hookMiscellaneousUtilities() { function hookAddEventListener (line 128) | function hookAddEventListener() { FILE: pkg/engine/headless/js/utils.js function getEventListeners (line 73) | function getEventListeners(element) { function areNodesSimilar (line 322) | function areNodesSimilar(left, right) { FILE: pkg/engine/headless/types/types.go type PageState (line 19) | type PageState struct type Action (line 35) | type Action struct method Hash (line 45) | func (a *Action) Hash() string { method String (line 55) | func (a *Action) String() string { type ActionType (line 68) | type ActionType constant ActionTypeUnknown (line 71) | ActionTypeUnknown ActionType = "unknown" constant ActionTypeLoadURL (line 72) | ActionTypeLoadURL ActionType = "load_url" constant ActionTypeExecuteJS (line 73) | ActionTypeExecuteJS ActionType = "execute_js" constant ActionTypeLeftClick (line 74) | ActionTypeLeftClick ActionType = "left_click" constant ActionTypeLeftClickDown (line 75) | ActionTypeLeftClickDown ActionType = "left_click_down" constant ActionTypeLeftClickUp (line 76) | ActionTypeLeftClickUp ActionType = "left_click_up" constant ActionTypeRightClick (line 77) | ActionTypeRightClick ActionType = "right_click" constant ActionTypeDoubleClick (line 78) | ActionTypeDoubleClick ActionType = "double_click" constant ActionTypeScroll (line 79) | ActionTypeScroll ActionType = "scroll" constant ActionTypeSendKeys (line 80) | ActionTypeSendKeys ActionType = "send_keys" constant ActionTypeKeyUp (line 81) | ActionTypeKeyUp ActionType = "key_up" constant ActionTypeKeyDown (line 82) | ActionTypeKeyDown ActionType = "key_down" constant ActionTypeHover (line 83) | ActionTypeHover ActionType = "hover" constant ActionTypeFocus (line 84) | ActionTypeFocus ActionType = "focus" constant ActionTypeBlur (line 85) | ActionTypeBlur ActionType = "blur" constant ActionTypeMouseOverAndOut (line 86) | ActionTypeMouseOverAndOut ActionType = "mouse_over_and_out" constant ActionTypeMouseWheel (line 87) | ActionTypeMouseWheel ActionType = "mouse_wheel" constant ActionTypeFillForm (line 88) | ActionTypeFillForm ActionType = "fill_form" constant ActionTypeWait (line 89) | ActionTypeWait ActionType = "wait" constant ActionTypeRedirect (line 90) | ActionTypeRedirect ActionType = "redirect" constant ActionTypeSubRequest (line 91) | ActionTypeSubRequest ActionType = "sub_request" function ActionFromEventListener (line 94) | func ActionFromEventListener(listener *EventListener) *Action { type HTMLElement (line 133) | type HTMLElement struct method String (line 148) | func (e *HTMLElement) String() string { method Hash (line 165) | func (e *HTMLElement) Hash() string { type HTMLForm (line 194) | type HTMLForm struct method Hash (line 208) | func (f *HTMLForm) Hash() string { function getStableAttributes (line 242) | func getStableAttributes(attrs map[string]string) []string { type EventListener (line 267) | type EventListener struct type NavigationType (line 274) | type NavigationType constant NavigationTypeForm (line 278) | NavigationTypeForm NavigationType = "form" constant NavigationTypeButton (line 280) | NavigationTypeButton NavigationType = "button" constant NavigationTypeLink (line 282) | NavigationTypeLink NavigationType = "link" constant NavigationTypeEventListener (line 284) | NavigationTypeEventListener NavigationType = "eventlistener" FILE: pkg/engine/hybrid/crawl.go method navigateRequest (line 29) | func (c *Crawler) navigateRequest(s *common.CrawlSession, request *navig... method addHeadersToPage (line 356) | func (c *Crawler) addHeadersToPage(page *rod.Page) { function traverseDOMNode (line 391) | func traverseDOMNode(node *proto.DOMNode, builder *strings.Builder) { constant elementNode (line 411) | elementNode = 1 function buildDOMFromNode (line 418) | func buildDOMFromNode(node *proto.DOMNode, builder *strings.Builder) { FILE: pkg/engine/hybrid/hijack.go function NewHijack (line 11) | func NewHijack(page *rod.Page) *Hijack { type Hijack (line 22) | type Hijack struct method SetPattern (line 30) | func (h *Hijack) SetPattern(pattern *proto.FetchRequestPattern) { method Start (line 37) | func (h *Hijack) Start(handler HijackHandler) func() error { method Stop (line 63) | func (h *Hijack) Stop() error { function FetchGetResponseBody (line 71) | func FetchGetResponseBody(page *rod.Page, e *proto.FetchRequestPaused) (... function FetchContinueRequest (line 92) | func FetchContinueRequest(page *rod.Page, e *proto.FetchRequestPaused) e... FILE: pkg/engine/hybrid/hybrid.go type Crawler (line 22) | type Crawler struct method Close (line 102) | func (c *Crawler) Close() error { method Crawl (line 113) | func (c *Crawler) Crawl(rootURL string) error { method Do (line 134) | func (c *Crawler) Do(crawlSession *common.CrawlSession, doRequest comm... function New (line 36) | func New(options *types.CrawlerOptions) (*Crawler, error) { function buildChromeLauncher (line 205) | func buildChromeLauncher(options *types.CrawlerOptions, dataStore string... FILE: pkg/engine/parser/files/request.go type visitFunc (line 8) | type visitFunc type KnownFiles (line 10) | type KnownFiles struct method Request (line 37) | func (k *KnownFiles) Request(URL string) (navigationRequests []*naviga... function New (line 16) | func New(httpclient *retryablehttp.Client, files string) *KnownFiles { FILE: pkg/engine/parser/files/robotstxt.go type robotsTxtCrawler (line 17) | type robotsTxtCrawler struct method Visit (line 22) | func (r *robotsTxtCrawler) Visit(URL string) ([]*navigation.Request, e... method parseReader (line 44) | func (r *robotsTxtCrawler) parseReader(reader io.Reader, resp *http.Re... FILE: pkg/engine/parser/files/robotstxt_test.go function TestRobotsTxtParseReader (line 13) | func TestRobotsTxtParseReader(t *testing.T) { FILE: pkg/engine/parser/files/sitemapxml.go type sitemapXmlCrawler (line 17) | type sitemapXmlCrawler struct method Visit (line 22) | func (r *sitemapXmlCrawler) Visit(URL string) (navigationRequests []*n... method parseReader (line 57) | func (r *sitemapXmlCrawler) parseReader(reader io.Reader, resp *http.R... type sitemapStruct (line 48) | type sitemapStruct struct type parsedURL (line 53) | type parsedURL struct FILE: pkg/engine/parser/files/sitemapxml_test.go function TestSitemapXmlParseReader (line 12) | func TestSitemapXmlParseReader(t *testing.T) { FILE: pkg/engine/parser/parser.go type ResponseParserFunc (line 20) | type ResponseParserFunc type Parser (line 22) | type Parser method ParseResponse (line 78) | func (p *Parser) ParseResponse(resp *navigation.Response) (navigationR... type responseParserType (line 24) | type responseParserType constant headerParser (line 27) | headerParser responseParserType = iota + 1 constant bodyParser (line 28) | bodyParser constant contentParser (line 29) | contentParser type responseParser (line 32) | type responseParser struct function NewResponseParser (line 37) | func NewResponseParser() *Parser { function appendFiltered (line 93) | func appendFiltered(existing []*navigation.Request, new []*navigation.Re... function isValidNavigationRequest (line 102) | func isValidNavigationRequest(req *navigation.Request) bool { function headerContentLocationParser (line 122) | func headerContentLocationParser(resp *navigation.Response) (navigationR... function headerLinkParser (line 132) | func headerLinkParser(resp *navigation.Response) (navigationRequests []*... function headerLocationParser (line 145) | func headerLocationParser(resp *navigation.Response) (navigationRequests... function headerRefreshParser (line 155) | func headerRefreshParser(resp *navigation.Response) (navigationRequests ... function bodyATagParser (line 173) | func bodyATagParser(resp *navigation.Response) (navigationRequests []*na... function bodyLinkHrefTagParser (line 188) | func bodyLinkHrefTagParser(resp *navigation.Response) (navigationRequest... function bodyEmbedTagParser (line 199) | func bodyEmbedTagParser(resp *navigation.Response) (navigationRequests [... function bodyFrameTagParser (line 210) | func bodyFrameTagParser(resp *navigation.Response) (navigationRequests [... function bodyIframeTagParser (line 221) | func bodyIframeTagParser(resp *navigation.Response) (navigationRequests ... function bodyInputSrcTagParser (line 239) | func bodyInputSrcTagParser(resp *navigation.Response) (navigationRequest... function bodyIsindexActionTagParser (line 250) | func bodyIsindexActionTagParser(resp *navigation.Response) (navigationRe... function bodyScriptSrcTagParser (line 261) | func bodyScriptSrcTagParser(resp *navigation.Response) (navigationReques... function bodyBackgroundTagParser (line 272) | func bodyBackgroundTagParser(resp *navigation.Response) (navigationReque... function bodyAudioTagParser (line 283) | func bodyAudioTagParser(resp *navigation.Response) (navigationRequests [... function bodyAppletTagParser (line 306) | func bodyAppletTagParser(resp *navigation.Response) (navigationRequests ... function bodyImgTagParser (line 321) | func bodyImgTagParser(resp *navigation.Response) (navigationRequests []*... function bodyObjectTagParser (line 354) | func bodyObjectTagParser(resp *navigation.Response) (navigationRequests ... function bodySvgTagParser (line 375) | func bodySvgTagParser(resp *navigation.Response) (navigationRequests []*... function bodyTableTagParser (line 394) | func bodyTableTagParser(resp *navigation.Response) (navigationRequests [... function bodyVideoTagParser (line 411) | func bodyVideoTagParser(resp *navigation.Response) (navigationRequests [... function bodyBlockquoteCiteTagParser (line 432) | func bodyBlockquoteCiteTagParser(resp *navigation.Response) (navigationR... function bodyFrameSrcTagParser (line 443) | func bodyFrameSrcTagParser(resp *navigation.Response) (navigationRequest... function bodyMapAreaPingTagParser (line 454) | func bodyMapAreaPingTagParser(resp *navigation.Response) (navigationRequ... function bodyBaseHrefTagParser (line 465) | func bodyBaseHrefTagParser(resp *navigation.Response) (navigationRequest... function bodyImportImplementationTagParser (line 476) | func bodyImportImplementationTagParser(resp *navigation.Response) (navig... function bodyButtonFormactionTagParser (line 487) | func bodyButtonFormactionTagParser(resp *navigation.Response) (navigatio... function bodyHtmlManifestTagParser (line 498) | func bodyHtmlManifestTagParser(resp *navigation.Response) (navigationReq... function bodyHtmlDoctypeTagParser (line 509) | func bodyHtmlDoctypeTagParser(resp *navigation.Response) (navigationRequ... function bodyFormTagParser (line 525) | func bodyFormTagParser(resp *navigation.Response) (navigationRequests []... function bodyMetaContentTagParser (line 620) | func bodyMetaContentTagParser(resp *navigation.Response) (navigationRequ... function bodyHtmxAttrParser (line 634) | func bodyHtmxAttrParser(resp *navigation.Response) (navigationRequests [... function scriptContentRegexParser (line 677) | func scriptContentRegexParser(resp *navigation.Response) (navigationRequ... function scriptJSFileRegexParser (line 693) | func scriptJSFileRegexParser(resp *navigation.Response) (navigationReque... function bodyScrapeEndpointsParser (line 709) | func bodyScrapeEndpointsParser(resp *navigation.Response) (navigationReq... function customFieldRegexParser (line 718) | func customFieldRegexParser(resp *navigation.Response) (navigationReques... FILE: pkg/engine/parser/parser_generic.go type Options (line 15) | type Options struct method InitWithOptions (line 22) | func (p *Parser) InitWithOptions(options *Options) { function scriptContentJsluiceParser (line 41) | func scriptContentJsluiceParser(resp *navigation.Response) (navigationRe... function scriptJSFileJsluiceParser (line 57) | func scriptJSFileJsluiceParser(resp *navigation.Response) (navigationReq... FILE: pkg/engine/parser/parser_nojs.go type Options (line 5) | type Options struct method InitWithOptions (line 12) | func (p *Parser) InitWithOptions(options *Options) { FILE: pkg/engine/parser/parser_test.go function TestHeaderParsers (line 16) | func TestHeaderParsers(t *testing.T) { function TestBodyParsers (line 41) | func TestBodyParsers(t *testing.T) { function TestScriptParsers (line 393) | func TestScriptParsers(t *testing.T) { function TestRegexBodyParsers (line 417) | func TestRegexBodyParsers(t *testing.T) { function TestHtmxBodyParser (line 493) | func TestHtmxBodyParser(t *testing.T) { function TestDataURIFiltering (line 527) | func TestDataURIFiltering(t *testing.T) { FILE: pkg/engine/standard/crawl.go method makeRequest (line 22) | func (c *Crawler) makeRequest(s *common.CrawlSession, request *navigatio... FILE: pkg/engine/standard/standard.go type Crawler (line 11) | type Crawler struct method Close (line 25) | func (c *Crawler) Close() error { method Crawl (line 30) | func (c *Crawler) Crawl(rootURL string) error { function New (line 16) | func New(options *types.CrawlerOptions) (*Crawler, error) { FILE: pkg/navigation/request.go type Depth (line 9) | type Depth struct type Request (line 12) | type Request struct method RequestURL (line 28) | func (n *Request) RequestURL() string { function NewNavigationRequestURLFromResponse (line 44) | func NewNavigationRequestURLFromResponse(path, source, tag, attribute st... FILE: pkg/navigation/response.go type Headers (line 11) | type Headers method MarshalJSON (line 20) | func (h *Headers) MarshalJSON() ([]byte, error) { type Form (line 13) | type Form struct type Response (line 30) | type Response struct method AbsoluteURL (line 47) | func (n Response) AbsoluteURL(path string) string { method IsRedirect (line 64) | func (n Response) IsRedirect() bool { FILE: pkg/output/custom_field.go type Part (line 19) | type Part method ToString (line 152) | func (p Part) ToString() string { constant Header (line 23) | Header Part = "header" constant Body (line 24) | Body Part = "body" constant Response (line 25) | Response Part = "response" type CustomFieldConfig (line 29) | type CustomFieldConfig struct method SetCompiledRegexp (line 47) | func (c *CustomFieldConfig) SetCompiledRegexp(r *regexp.Regexp) { method GetName (line 51) | func (c *CustomFieldConfig) GetName() string { function parseCustomFieldName (line 55) | func parseCustomFieldName(filePath string) error { function loadCustomFields (line 88) | func loadCustomFields(filePath string, fields string) error { function initCustomFieldConfigFile (line 122) | func initCustomFieldConfigFile() (string, error) { FILE: pkg/output/error.go type Error (line 5) | type Error struct FILE: pkg/output/fields.go type fieldOutput (line 35) | type fieldOutput struct function validateFieldNames (line 41) | func validateFieldNames(names string) error { function storeFields (line 63) | func storeFields(output *Result, storeFields []string) { function appendToFileField (line 86) | func appendToFileField(parsed *url.URL, field, data string) { function formatField (line 102) | func formatField(output *Result, fields string) []fieldOutput { function getValueForField (line 203) | func getValueForField(output *Result, parsed *url.URL, hostname, rdn, ru... function getValueForCustomField (line 265) | func getValueForCustomField(output *Result) []fieldOutput { FILE: pkg/output/fields_test.go function TestValidateFieldNames (line 10) | func TestValidateFieldNames(t *testing.T) { function TestFormatField (line 21) | func TestFormatField(t *testing.T) { FILE: pkg/output/file_writer.go type fileWriter (line 9) | type fileWriter struct method Write (line 24) | func (w *fileWriter) Write(data []byte) error { method Close (line 34) | func (w *fileWriter) Close() error { function newFileOutputWriter (line 15) | func newFileOutputWriter(file string) (*fileWriter, error) { FILE: pkg/output/format_json.go method formatJSON (line 9) | func (w *StandardWriter) formatJSON(output *Result) ([]byte, error) { FILE: pkg/output/format_screen.go method formatScreen (line 10) | func (w *StandardWriter) formatScreen(output *Result) ([]byte, error) { FILE: pkg/output/format_template.go method formatTemplate (line 12) | func (w *StandardWriter) formatTemplate(output *Result) ([]byte, error) { FILE: pkg/output/options.go type Options (line 10) | type Options struct FILE: pkg/output/output.go constant indexFile (line 27) | indexFile = "index.txt" constant DefaultResponseDir (line 28) | DefaultResponseDir = "katana_response" type Writer (line 37) | type Writer interface type StandardWriter (line 46) | type StandardWriter struct method Write (line 167) | func (w *StandardWriter) Write(result *Result) error { method WriteErr (line 265) | func (w *StandardWriter) WriteErr(errMessage *Error) error { method Close (line 285) | func (w *StandardWriter) Close() error { method matchOutput (line 349) | func (w *StandardWriter) matchOutput(event *Result) bool { method filterOutput (line 368) | func (w *StandardWriter) filterOutput(event *Result) bool { function New (line 71) | func New(options Options) (Writer, error) { function createDirNameNoClobber (line 301) | func createDirNameNoClobber(dir string) string { function removeDirsWithSuffix (line 331) | func removeDirsWithSuffix(dir string) { function evalDslExpr (line 386) | func evalDslExpr(result *Result, dslExpr string) bool { function resultToMap (line 401) | func resultToMap(result Result) (map[string]interface{}, error) { function flatten (line 442) | func flatten(m map[string]any) map[string]any { function ignoreErr (line 465) | func ignoreErr(err error) bool { FILE: pkg/output/responses.go function getResponseHash (line 16) | func getResponseHash(URL string) string { method formatResult (line 21) | func (w *StandardWriter) formatResult(result *Result) ([]byte, error) { function getResponseHost (line 36) | func getResponseHost(URL string) (string, error) { function createHostDir (line 44) | func createHostDir(storeResponseFolder, domain string) string { function getResponseFile (line 49) | func getResponseFile(storeResponseFolder, URL string) (string, *fileWrit... function getResponseFileName (line 63) | func getResponseFileName(storeResponseFolder, domain, URL string) string { function updateIndex (line 69) | func updateIndex(storeResponseFolder string, result *Result) error { FILE: pkg/output/result.go type Result (line 10) | type Result struct method HasResponse (line 18) | func (r *Result) HasResponse() bool { FILE: pkg/types/crawler_options.go type CrawlerOptions (line 24) | type CrawlerOptions struct method Close (line 174) | func (c *CrawlerOptions) Close() error { method ValidatePath (line 179) | func (c *CrawlerOptions) ValidatePath(path string) bool { method ClassifyPage (line 187) | func (c *CrawlerOptions) ClassifyPage(body string) map[string]any { method ValidateScope (line 205) | func (c *CrawlerOptions) ValidateScope(absURL, rootHostname string) (b... function NewCrawlerOptions (line 54) | func NewCrawlerOptions(options *Options) (*CrawlerOptions, error) { FILE: pkg/types/default.go function init (line 7) | func init() { FILE: pkg/types/options.go type OnResultCallback (line 17) | type OnResultCallback type OnSkipURLCallback (line 20) | type OnSkipURLCallback type Options (line 22) | type Options struct method ParseCustomHeaders (line 203) | func (options *Options) ParseCustomHeaders() map[string]string { method ParseHeadlessOptionalArguments (line 213) | func (options *Options) ParseHeadlessOptionalArguments() map[string]st... method ShouldResume (line 238) | func (options *Options) ShouldResume() bool { method ConfigureOutput (line 243) | func (options *Options) ConfigureOutput() { FILE: pkg/types/options_test.go function TestParseCustomHeaders (line 11) | func TestParseCustomHeaders(t *testing.T) { function TestParseHeadlessOptionalArguments (line 52) | func TestParseHeadlessOptionalArguments(t *testing.T) { FILE: pkg/utils/extensions/extensions.go type Validator (line 15) | type Validator struct method ValidatePath (line 42) | func (e *Validator) ValidatePath(item string) bool { function NewValidator (line 21) | func NewValidator(extensionsMatch, extensionsFilter []string, noDefaultE... function normalizeExtension (line 70) | func normalizeExtension(extension string) string { FILE: pkg/utils/extensions/extensions_test.go function TestValidatorValidate (line 9) | func TestValidatorValidate(t *testing.T) { FILE: pkg/utils/filters/filters.go type Filter (line 4) | type Filter interface FILE: pkg/utils/filters/filters_test.go function TestSimpleFilter (line 9) | func TestSimpleFilter(t *testing.T) { FILE: pkg/utils/filters/simple.go constant MaxChromeURLLength (line 13) | MaxChromeURLLength = 2097152 constant MinSequenceLength (line 15) | MinSequenceLength = 10 constant MaxSequenceCount (line 16) | MaxSequenceCount = 10 type Simple (line 23) | type Simple struct method UniqueURL (line 37) | func (s *Simple) UniqueURL(url string) bool { method UniqueContent (line 47) | func (s *Simple) UniqueContent(data []byte) bool { method Close (line 60) | func (s *Simple) Close() { method IsCycle (line 65) | func (s *Simple) IsCycle(url string) bool { function NewSimple (line 28) | func NewSimple() (*Simple, error) { FILE: pkg/utils/formfields.go function ParseFormFields (line 14) | func ParseFormFields(document *goquery.Document) []navigation.Form { FILE: pkg/utils/formfields_test.go function TestParseFormFields (line 32) | func TestParseFormFields(t *testing.T) { FILE: pkg/utils/formfill.go function init (line 15) | func init() { type FormFillData (line 20) | type FormFillData struct type FormInput (line 37) | type FormInput struct type SelectOption (line 45) | type SelectOption struct type FormSelect (line 52) | type FormSelect struct type FormTextArea (line 58) | type FormTextArea struct function FormInputFillSuggestions (line 65) | func FormInputFillSuggestions(inputs []FormInput) mapsutil.OrderedMap[st... function FormSelectFill (line 136) | func FormSelectFill(inputs []FormSelect) mapsutil.OrderedMap[string, str... function FormTextAreaFill (line 157) | func FormTextAreaFill(inputs []FormTextArea) mapsutil.OrderedMap[string,... function FormFillSuggestions (line 176) | func FormFillSuggestions(formFields []interface{}) mapsutil.OrderedMap[s... function ConvertGoquerySelectionToFormInput (line 196) | func ConvertGoquerySelectionToFormInput(item *goquery.Selection) FormInp... function ConvertGoquerySelectionToSelectOption (line 217) | func ConvertGoquerySelectionToSelectOption(item *goquery.Selection) Sele... function ConvertGoquerySelectionToFormSelect (line 237) | func ConvertGoquerySelectionToFormSelect(item *goquery.Selection) FormSe... function ConvertGoquerySelectionToFormTextArea (line 259) | func ConvertGoquerySelectionToFormTextArea(item *goquery.Selection) Form... function ConvertGoquerySelectionToFormField (line 279) | func ConvertGoquerySelectionToFormField(item *goquery.Selection) interfa... FILE: pkg/utils/formfill_test.go function TestFormInputFillSuggestions (line 61) | func TestFormInputFillSuggestions(t *testing.T) { FILE: pkg/utils/jsluice.go function IsPathCommonJSLibraryFile (line 18) | func IsPathCommonJSLibraryFile(path string) bool { type JSLuiceEndpoint (line 22) | type JSLuiceEndpoint struct function ExtractJsluiceEndpoints (line 35) | func ExtractJsluiceEndpoints(data string) []JSLuiceEndpoint { FILE: pkg/utils/jsluice_test.go function TestIsPathCommonJSLibraryFile (line 7) | func TestIsPathCommonJSLibraryFile(t *testing.T) { FILE: pkg/utils/maps.go function MergeDataMaps (line 5) | func MergeDataMaps(dataMap1 *mapsutil.OrderedMap[string, string], dataMa... FILE: pkg/utils/maps_test.go function TestMergeDataMap (line 10) | func TestMergeDataMap(t *testing.T) { FILE: pkg/utils/pathtrie.go constant DefaultPromotionThreshold (line 11) | DefaultPromotionThreshold = 10 constant DefaultMaxHosts (line 15) | DefaultMaxHosts = 10000 type PathTrie (line 24) | type PathTrie struct method Fingerprint (line 52) | func (t *PathTrie) Fingerprint(host string, segments []string) []string { type trieNode (line 30) | type trieNode struct function NewPathTrie (line 38) | func NewPathTrie(threshold int) *PathTrie { FILE: pkg/utils/pathtrie_test.go function TestPathTrie_BasicInsertion (line 8) | func TestPathTrie_BasicInsertion(t *testing.T) { function TestPathTrie_RepeatedInsertionNoop (line 20) | func TestPathTrie_RepeatedInsertionNoop(t *testing.T) { function TestPathTrie_PromotionExactThreshold (line 36) | func TestPathTrie_PromotionExactThreshold(t *testing.T) { function TestPathTrie_Promotion (line 56) | func TestPathTrie_Promotion(t *testing.T) { function TestPathTrie_PromotionDoesNotAffectOtherHosts (line 73) | func TestPathTrie_PromotionDoesNotAffectOtherHosts(t *testing.T) { function TestPathTrie_DeepPath (line 86) | func TestPathTrie_DeepPath(t *testing.T) { function TestPathTrie_EmptySegments (line 103) | func TestPathTrie_EmptySegments(t *testing.T) { function TestPathTrie_SingleSegment (line 111) | func TestPathTrie_SingleSegment(t *testing.T) { function TestPathTrie_PromotedNodeChildrenNil (line 124) | func TestPathTrie_PromotedNodeChildrenNil(t *testing.T) { function TestPathTrie_PreviousValueCollapseAfterPromotion (line 144) | func TestPathTrie_PreviousValueCollapseAfterPromotion(t *testing.T) { function TestPathTrie_SegmentsAfterPromotedNodeTrackedIndependently (line 164) | func TestPathTrie_SegmentsAfterPromotedNodeTrackedIndependently(t *testi... function TestPathTrie_MultipleBranchesIndependent (line 187) | func TestPathTrie_MultipleBranchesIndependent(t *testing.T) { function TestPathTrie_MultiplePromotionsAtDifferentDepths (line 212) | func TestPathTrie_MultiplePromotionsAtDifferentDepths(t *testing.T) { function TestPathTrie_NewHostLazyInit (line 233) | func TestPathTrie_NewHostLazyInit(t *testing.T) { function TestPathTrie_CustomThreshold (line 248) | func TestPathTrie_CustomThreshold(t *testing.T) { function TestPathTrie_LRUEviction (line 270) | func TestPathTrie_LRUEviction(t *testing.T) { FILE: pkg/utils/queue/priority_queue.go type priorityQueue (line 7) | type priorityQueue struct method Len (line 16) | func (p *priorityQueue) Len() int { method Push (line 20) | func (p *priorityQueue) Push(v interface{}, priority int) { method Pop (line 28) | func (p *priorityQueue) Pop() interface{} { function newPriorityQueue (line 11) | func newPriorityQueue() *priorityQueue { type itemHeap (line 36) | type itemHeap method Len (line 44) | func (ih *itemHeap) Len() int { method Less (line 48) | func (ih *itemHeap) Less(i, j int) bool { method Swap (line 54) | func (ih *itemHeap) Swap(i, j int) { method Push (line 60) | func (ih *itemHeap) Push(x interface{}) { method Pop (line 66) | func (ih *itemHeap) Pop() interface{} { type item (line 38) | type item struct FILE: pkg/utils/queue/priority_queue_test.go function TestPriorityQueue (line 9) | func TestPriorityQueue(t *testing.T) { FILE: pkg/utils/queue/queue.go type Queue (line 19) | type Queue struct method Len (line 45) | func (q *Queue) Len() int { method Push (line 60) | func (q *Queue) Push(x interface{}, priority int) { method Pop (line 74) | func (q *Queue) Pop() chan interface{} { function New (line 28) | func New(strategyName string, timeout int) (*Queue, error) { FILE: pkg/utils/queue/stack.go type stack (line 8) | type stack struct method Push (line 16) | func (s *stack) Push(x interface{}) { method Len (line 20) | func (s *stack) Len() int { method Pop (line 24) | func (s *stack) Pop() interface{} { function newStack (line 12) | func newStack() *stack { FILE: pkg/utils/queue/stack_test.go function TestStack (line 9) | func TestStack(t *testing.T) { FILE: pkg/utils/queue/strategy.go type Strategy (line 4) | type Strategy method String (line 12) | func (s Strategy) String() string { constant BreadthFirst (line 8) | BreadthFirst Strategy = iota constant DepthFirst (line 9) | DepthFirst FILE: pkg/utils/regex.go function ExtractBodyEndpoints (line 32) | func ExtractBodyEndpoints(data string) []string { function ExtractRelativeEndpoints (line 51) | func ExtractRelativeEndpoints(data string) []string { FILE: pkg/utils/regex_test.go function TestPageBodyRegex (line 9) | func TestPageBodyRegex(t *testing.T) { function TestRelativeEndpointsRegex (line 68) | func TestRelativeEndpointsRegex(t *testing.T) { FILE: pkg/utils/scope/scope.go type Manager (line 14) | type Manager struct method Validate (line 72) | func (m *Manager) Validate(URL *url.URL, rootHostname string) (bool, e... method validateURL (line 96) | func (m *Manager) validateURL(URL string) (bool, error) { method validateDNS (line 120) | func (m *Manager) validateDNS(hostname, rootHostname string) (bool, er... type dnsScopeField (line 22) | type dnsScopeField constant dnDnsScopeField (line 25) | dnDnsScopeField dnsScopeField = iota + 1 constant rdnDnsScopeField (line 26) | rdnDnsScopeField constant fqdnDNSScopeField (line 27) | fqdnDNSScopeField constant customDNSScopeField (line 28) | customDNSScopeField function NewManager (line 38) | func NewManager(inScope, outOfScope []string, fieldScope string, noScope... function getDomainRDNandRDN (line 149) | func getDomainRDNandRDN(domain string) (string, string, error) { FILE: pkg/utils/scope/scope_test.go function TestManagerValidate (line 12) | func TestManagerValidate(t *testing.T) { function TestGetDomainRDNandDN (line 79) | func TestGetDomainRDNandDN(t *testing.T) { function TestNoScopeWithOutOfScope (line 90) | func TestNoScopeWithOutOfScope(t *testing.T) { FILE: pkg/utils/urlfingerprint.go type segmentPattern (line 12) | type segmentPattern struct function containsHexLetter (line 23) | func containsHexLetter(s string) bool { function normalizeSegment (line 48) | func normalizeSegment(segment string) (string, bool) { function FingerprintURL (line 66) | func FingerprintURL(rawURL string, trie *PathTrie) string { function buildFingerprint (line 106) | func buildFingerprint(u *url.URL, path string) string { function sortedQueryKeys (line 127) | func sortedQueryKeys(params url.Values) []string { FILE: pkg/utils/urlfingerprint_test.go function TestContainsHexLetter (line 9) | func TestContainsHexLetter(t *testing.T) { function TestNormalizeSegment (line 32) | func TestNormalizeSegment(t *testing.T) { function TestFingerprintURL_RegexOnly (line 121) | func TestFingerprintURL_RegexOnly(t *testing.T) { function TestFingerprintURL_Idempotency (line 269) | func TestFingerprintURL_Idempotency(t *testing.T) { function TestFingerprintURL_SimilarURLsCollapse (line 285) | func TestFingerprintURL_SimilarURLsCollapse(t *testing.T) { function TestFingerprintURL_DifferentURLsStayDistinct (line 314) | func TestFingerprintURL_DifferentURLsStayDistinct(t *testing.T) { function TestFingerprintURL_WithTrie_PromotionLifecycle (line 339) | func TestFingerprintURL_WithTrie_PromotionLifecycle(t *testing.T) { function TestFingerprintURL_WithTrie_RegexSegmentsDontInflateTrie (line 369) | func TestFingerprintURL_WithTrie_RegexSegmentsDontInflateTrie(t *testing... function TestFingerprintURL_WithTrie_MultipleHosts (line 385) | func TestFingerprintURL_WithTrie_MultipleHosts(t *testing.T) { function TestFingerprintURL_WithTrie_DeepPromotion (line 408) | func TestFingerprintURL_WithTrie_DeepPromotion(t *testing.T) { function TestFingerprintURL_WithTrie_CombinedRegexAndTrie (line 429) | func TestFingerprintURL_WithTrie_CombinedRegexAndTrie(t *testing.T) { function TestFingerprintURL_InvalidURL (line 452) | func TestFingerprintURL_InvalidURL(t *testing.T) { function TestFingerprintURL_NilTrieSameAsRegexOnly (line 470) | func TestFingerprintURL_NilTrieSameAsRegexOnly(t *testing.T) { FILE: pkg/utils/utils.go function IsURL (line 13) | func IsURL(url string) bool { function ParseSRCSetTag (line 23) | func ParseSRCSetTag(value string) []string { function ParseLinkTag (line 35) | func ParseLinkTag(value string) []string { function ParseRefreshTag (line 54) | func ParseRefreshTag(value string) string { function WebUserAgent (line 68) | func WebUserAgent() string { function FlattenHeaders (line 72) | func FlattenHeaders(headers map[string][]string) map[string]string { function ReplaceAllQueryParam (line 81) | func ReplaceAllQueryParam(reqUrl, val string) string { function ExtractParentPaths (line 96) | func ExtractParentPaths(rawurl string) []string { FILE: pkg/utils/utils_test.go function TestParseLinkTag (line 9) | func TestParseLinkTag(t *testing.T) { function TestParseRefreshTag (line 17) | func TestParseRefreshTag(t *testing.T) { function TestExtractParentPaths (line 24) | func TestExtractParentPaths(t *testing.T) {