Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ HEADLESS:
-ho, -headless-options string[] start headless chrome with additional options
-esb, -exclude-screenshot-bytes enable excluding screenshot bytes from json output
-ehb, -exclude-headless-body enable excluding headless header from json output
-st, -screenshot-timeout int set timeout for screenshot in seconds (default 10)

MATCHERS:
-mc, -match-code string match response with specified status code (-mc 200,302)
Expand All @@ -138,7 +139,7 @@ MATCHERS:

EXTRACTOR:
-er, -extract-regex string[] display response content with matched regex
-ep, -extract-preset string[] display response content matched by a pre-defined regex (ipv4,mail,url)
-ep, -extract-preset string[] display response content matched by a pre-defined regex (url,ipv4,mail)

FILTERS:
-fc, -filter-code string filter response with specified status code (-fc 403,401)
Expand Down
8 changes: 6 additions & 2 deletions runner/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ type ScanOptions struct {
DisableStdin bool
NoScreenshotBytes bool
NoHeadlessBody bool
ScreenshotTimeout int
}

func (s *ScanOptions) Clone() *ScanOptions {
Expand Down Expand Up @@ -141,6 +142,7 @@ func (s *ScanOptions) Clone() *ScanOptions {
UseInstalledChrome: s.UseInstalledChrome,
NoScreenshotBytes: s.NoScreenshotBytes,
NoHeadlessBody: s.NoHeadlessBody,
ScreenshotTimeout: s.ScreenshotTimeout,
}
}

Expand Down Expand Up @@ -285,10 +287,11 @@ type Options struct {
UseInstalledChrome bool
TlsImpersonate bool
DisableStdin bool
NoScreenshotBytes bool
NoHeadlessBody bool
ScreenshotTimeout int
// HeadlessOptionalArguments specifies optional arguments to pass to Chrome
HeadlessOptionalArguments goflags.StringSlice
NoScreenshotBytes bool
NoHeadlessBody bool
}

// ParseOptions parses the command line options for application
Expand Down Expand Up @@ -335,6 +338,7 @@ func ParseOptions() *Options {
flagSet.StringSliceVarP(&options.HeadlessOptionalArguments, "headless-options", "ho", nil, "start headless chrome with additional options", goflags.FileCommaSeparatedStringSliceOptions),
flagSet.BoolVarP(&options.NoScreenshotBytes, "exclude-screenshot-bytes", "esb", false, "enable excluding screenshot bytes from json output"),
flagSet.BoolVarP(&options.NoHeadlessBody, "exclude-headless-body", "ehb", false, "enable excluding headless header from json output"),
flagSet.IntVarP(&options.ScreenshotTimeout, "screenshot-timeout", "st", 10, "set timeout for screenshot in seconds"),
)

flagSet.CreateGroup("matchers", "Matchers",
Expand Down
3 changes: 2 additions & 1 deletion runner/runner.go
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,7 @@ func New(options *Options) (*Runner, error) {
scanopts.NoScreenshotBytes = options.NoScreenshotBytes
scanopts.NoHeadlessBody = options.NoHeadlessBody
scanopts.UseInstalledChrome = options.UseInstalledChrome
scanopts.ScreenshotTimeout = options.ScreenshotTimeout

if options.OutputExtractRegexs != nil {
for _, regex := range options.OutputExtractRegexs {
Expand Down Expand Up @@ -1982,7 +1983,7 @@ retry:
var pHash uint64
if scanopts.Screenshot {
var err error
screenshotBytes, headlessBody, err = r.browser.ScreenshotWithBody(fullURL, r.hp.Options.Timeout)
screenshotBytes, headlessBody, err = r.browser.ScreenshotWithBody(fullURL, time.Duration(scanopts.ScreenshotTimeout)*time.Second)
if err != nil {
gologger.Warning().Msgf("Could not take screenshot '%s': %s", fullURL, err)
} else {
Expand Down