Updated Jul 15, 2026

Discovery

Package live-host screenshots into one zip archive

Capture web host screenshots with httpx and export them as a zip.

Agent

overview

What httpx-screenshot-zip does

httpx-screenshot-zip runs httpx with headless capture enabled, then packs every screenshot into one zip. Instead of a folder of loose images, you get a single artifact to download or attach to a report, while probe context such as status and title can still accompany the run.

Read hosts from -list or -target. Control idle time with -screenshot-idle, cap slow pages with -screenshot-timeout, choose viewport-only via -no-screenshot-full-page, and pass extra Chrome options with -headless-options. Matchers still limit which responses get archived.

Trickest runs it as a managed Discovery node that writes a file and a folder with the screenshots packaged as a zip. Place it after a live-host probe when the deliverable is a portable gallery rather than loose files.

source github.com/projectdiscovery/httpx

use cases

Where httpx-screenshot-zip fits

Produce a portable screenshot gallery

Capture every live host and export the images as one zip so the result is a single artifact to download or attach to a report.

Hand off recon visuals

Bundle screenshots into an archive a teammate or client can open without navigating a folder tree of loose files.

Triage at scale, then package

Screenshot hundreds of live hosts for visual triage and ship the whole set as a compressed deliverable.

Tune capture for accurate shots

Set the idle time and screenshot timeout so dynamic and slow pages render fully before being zipped.

reference

httpx-screenshot-zip inputs and flags

123 inputs
NameTypeFlagDescription
listFILE-listInput file containing the list of hosts to process.
targetSTRING-targetInput target host(s) to probe.
screenshot-idleSTRING-screenshot-idleIdle time before taking the screenshot, in seconds (default 1s).
screenshot-timeoutSTRING-screenshot-timeoutTimeout for the screenshot in seconds (default 10).
no-screenshot-full-pageBOOLEAN-no-screenshot-full-pageDisable saving the full-page screenshot; capture the viewport only.
headless-optionsSTRING-headless-optionsStart headless Chrome with additional options.
threadsSTRING-threadsNumber of threads to use (default 50).
titleBOOLEAN-titleDisplay page title alongside probe results.

Showing key inputs. httpx-screenshot-zip exposes 123 inputs in total.

Full flag reference (123 inputs)
NameTypeFlagDescription
xSTRING-xrequest methods to probe, use 'all' to probe all HTTP methods
ipBOOLEAN-ipdisplay host ip
asnBOOLEAN-asndisplay host asn information
cdnBOOLEAN-cdndisplay cdn in use
csvBOOLEAN-csvstore output in csv format
bodyFILE-bodypost body to include in http request
denySTRING-denydenied list of IP/CIDR's to process (comma separated)
hashSTRING-hashdisplay response body hash (supported: md5,mmh3,simhash,sha1,sha256,sha512)
jarmBOOLEAN-jarmdisplay jarm fingerprint hash
jsonBOOLEAN-jsonstore output in JSONL(ines) format
listFILE-listinput file containing list of hosts to process
pathSTRING-pathpath or list of paths to probe (comma-separated)
ztlsBOOLEAN-ztlsuse ztls library with autofallback to standard one for tls13
allowSTRING-allowallowed list of IP/CIDR's to process (comma separated)
cnameBOOLEAN-cnamedisplay host cname
debugBOOLEAN-debugdisplay request/response content in cli
delaySTRING-delayduration between each http request (eg: 200ms, 1s) (default -1ns)
http2BOOLEAN-http2probe and display server supporting HTTP2
portsSTRING-portsports to probe (nmap syntax: eg http:1,2-10,11,https:80)
probeBOOLEAN-probedisplay probe status
statsBOOLEAN-statsdisplay scan statistic
titleBOOLEAN-titledisplay page title
traceBOOLEAN-tracetrace
vhostBOOLEAN-vhostprobe and display server supporting VHOST
configFILE-configpath to the httpx configuration file
headerSTRING-headercustom http headers to send with request
methodBOOLEAN-methoddisplay http request method
silentBOOLEAN-silentsilent mode
targetSTRING-targetinput target host(s) to probe
unsafeBOOLEAN-unsafesend raw requests skipping golang normalization
excludeSTRING-excludeexclude host matching specified filter ('cdn', 'private-ips', cidr, ip, regex)
faviconBOOLEAN-favicondisplay mmh3 hash for '/favicon.ico' file
requestFILE-requestfile containing raw request
retriesSTRING-retriesnumber of retries
threadsSTRING-threadsnumber of threads to use (default 50)
timeoutSTRING-timeouttimeout in seconds (default 5)
verboseBOOLEAN-verboseverbose mode
locationBOOLEAN-locationdisplay response redirect location
pipelineBOOLEAN-pipelineprobe and display server supporting HTTP1.1 pipeline
protocolSTRING-protocolprotocol to use (unknown, http11)
sni-nameSTRING-sni-namecustom TLS SNI name
tls-grabBOOLEAN-tls-grabperform TLS(SSL) data grabbing
csp-probeBOOLEAN-csp-probesend http probes on the extracted CSP domains
debug-reqBOOLEAN-debug-reqdisplay request content in cli
deny-listFILE-denydenied list of IP/CIDR's to process
match-cdnSTRING-match-cdnmatch host with specified cdn provider (azure, cloudflare, cloudfront, fastly, incapsula, oracle, google, sucuri, leaseweb, akamai)
no-decodeBOOLEAN-no-decodeavoid decoding body
omit-bodyBOOLEAN-omit-bodyomit response body in output
path-listFILE-pathlist of paths to probe
resolversSTRING-resolverslist of custom resolvers (comma separated)
tls-probeBOOLEAN-tls-probesend http probes on the extracted TLS domains (dns_name)
websocketBOOLEAN-websocketdisplay server using websocket
allow-listFILE-allowallowed list of IP/CIDR's to process
debug-respBOOLEAN-debug-respdisplay response content in cli
filter-cdnSTRING-filter-cdnfilter host with specified cdn provider (azure, cloudflare, cloudfront, fastly, incapsula, oracle, google, sucuri, leaseweb, akamai)
http-proxySTRING-http-proxyhttp proxy to use (eg http://127.0.0.1:8080)
line-countBOOLEAN-line-countdisplay response body line count
match-codeSTRING-match-codematch response with specified status code (-mc 200,302)
rate-limitSTRING-rate-limitmaximum requests to send per second (default 150)
web-serverBOOLEAN-web-serverdisplay server name
word-countBOOLEAN-word-countdisplay response body word count
filter-codeSTRING-filter-codefilter response with specified status code (-fc 403,401)
header-fileFILE-header-filecustom http headers to send with request
match-regexSTRING-match-regexmatch response with specified regex (-mr admin)
no-fallbackBOOLEAN-no-fallbackdisplay both probed protocol (HTTPS and HTTP)
status-codeBOOLEAN-status-codedisplay response status-code
store-chainBOOLEAN-store-chaininclude http redirect chain in responses (-sr only)
tech-detectBOOLEAN-tech-detectdisplay technology in use based on wappalyzer dataset
vhost-inputBOOLEAN-vhost-inputget a list of vhosts as input
body-previewBOOLEAN-body-previewdisplay first N characters of response body (default 100)
content-typeBOOLEAN-content-typedisplay response content-type
extract-fqdnBOOLEAN-extract-fqdnget domain and subdomains from response body and header in jsonl/csv output
filter-regexSTRING-filter-regexfilter response with specified regex (-fe admin)
health-checkBOOLEAN-health-checkrun diagnostic check up
match-lengthSTRING-match-lengthmatch response with specified content length (-ml 100,102)
match-stringSTRING-match-stringmatch response with specified string (-ms admin)
random-agentBOOLEAN-random-agentenable Random User-Agent to use (default true)
respect-hstsBOOLEAN-respect-hstsrespect HSTS response headers for redirect requests
extract-regexSTRING-extract-regexdisplay response content with matched regex
filter-lengthSTRING-filter-lengthfilter response with specified content length (-fl 23,33)
filter-stringSTRING-filter-stringfilter response with specified string (-fs admin)
include-chainBOOLEAN-include-chaininclude redirect http chain in JSON output (-json only)
match-faviconSTRING-match-faviconmatch response with specified favicon hash (-mfc 1494302000)
max-redirectsSTRING-max-redirectsmax number of redirects to follow per host (default 10)
probe-all-ipsBOOLEAN-probe-all-ipsprobe all the ips associated with same host
response-timeBOOLEAN-response-timedisplay response time
content-lengthBOOLEAN-content-lengthdisplay response content-length
extract-presetSTRING-extract-presetdisplay response content matched by a pre-defined regex (url,ipv4,mail)
filter-faviconSTRING-filter-faviconfilter response with specified favicon hash (-mfc 1494302000)
max-host-errorSTRING-max-host-errormax error count per host before skipping remaining path/s (default 30)
resolvers-fileFILE-resolverslist of custom resolvers
stats-intervalSTRING-stats-intervalnumber of seconds to wait between showing a statistics update (default: 5)
store-responseBOOLEAN-store-responsestore http response to output directory
match-conditionSTRING-match-conditionmatch response with dsl expression condition
screenshot-idleSTRING-screenshot-idleset idle time before taking screenshot in seconds (default 1s)
tls-impersonateBOOLEAN-tls-impersonateenable random tls client (ja3) impersonation (experimental)
filter-conditionSTRING-filter-conditionfilter response with dsl expression condition
follow-redirectsBOOLEAN-follow-redirectsfollow http redirects
headless-optionsSTRING-headless-optionsstart headless chrome with additional options
include-responseBOOLEAN-include-responseinclude http request/response in JSON output (-json only)
match-line-countSTRING-match-line-countmatch response body with specified line count (-mlc 423,532)
match-word-countSTRING-match-word-countmatch response body with specified word count (-mwc 43,55)
filter-duplicatesBOOLEAN-filter-duplicatesfilter out near-duplicate responses (only first response is retained)
filter-error-pageBOOLEAN-filter-error-pagefilter response with ML based error page detection
filter-line-countSTRING-filter-line-countfilter response body with specified line count (-flc 423,532)
filter-word-countSTRING-filter-word-countfilter response body with specified word count (-fwc 423,532)
rate-limit-minuteSTRING-rate-limit-minutemaximum number of requests to send per minute
list-dsl-variablesBOOLEAN-list-dsl-variableslist json output field keys name that support dsl matcher/filter
no-fallback-schemeBOOLEAN-no-fallback-schemeprobe with protocol scheme specified in input
screenshot-timeoutSTRING-screenshot-timeoutset timeout for screenshot in seconds (default 10)
csv-output-encodingSTRING-csv-output-encodingdefine output encoding
leave-default-portsBOOLEAN-leave-default-portsleave default http/https ports in host header (eg. http://host:80 - https//host:443
match-response-timeSTRING-match-response-timematch response with specified response time in seconds (-mrt '< 1')
filter-response-timeSTRING-filter-response-timefilter response with specified response time in seconds (-frt '> 1')
exclude-headless-bodyBOOLEAN-exclude-headless-bodyenable excluding headless header from json output
follow-host-redirectsBOOLEAN-follow-host-redirectsfollow redirects on the same host
response-size-to-readSTRING-response-size-to-readmax response size to read in bytes (default 2147483647)
response-size-to-saveSTRING-response-size-to-savemax response size to save in bytes (default 2147483647)
include-response-base64BOOLEAN-include-response-base64include base64 encoded http request/response in JSON output (-json only)
include-response-headerBOOLEAN-include-response-headerinclude http response (headers) in JSON output (-json only)
no-screenshot-full-pageBOOLEAN-no-screenshot-full-pagedisable saving full page screenshot
exclude-screenshot-bytesBOOLEAN-exclude-screenshot-bytesenable excluding screenshot bytes from json output
store-vision-recon-clusterBOOLEAN-store-vision-recon-clusterinclude visual recon clusters (-ss and -sr only)

example

Run httpx-screenshot-zip

httpx-screenshot-zip · command
# probe hosts, capture screenshots, package for handoffhttpx -list hosts.txt -title -screenshot-idle 2 -screenshot-timeout 15 -threads 25 -no-screenshot-full-page
sample output
https://www.example.com [200] [Example Domain]https://app.example.com [200] [App Login]https://api.example.com [401] [Unauthorized]https://staging.example.com [200] [Staging]http://198.51.100.24 [302] []https://dev.example.com:8443 [200] [Dev Portal]screenshots written; archive ready as screenshots.zip6 hosts captured

guidance

Choosing httpx-screenshot-zip

Use httpx-screenshot-zip when the deliverable is a single packaged gallery. For browsing screenshots as loose files, httpx-screenshot is the same capture without the archive. For metadata-only probing, plain httpx is lighter.

httpx-screenshot

Same capture engine, screenshots left as loose files instead of a zip archive.

httpx

Probing without rendering. Prefer it when you only need status, title, and tech, not images.

aquatone

Classic screenshot-and-report tool. This node keeps probing, capture, and packaging in one step.

faq

httpx-screenshot-zip questions

It bundles every screenshot into one archive, so the output is a single portable artifact instead of a folder of loose image files.

Run httpx-screenshot-zip yourself

A hosts list is probed by httpx, then httpx-screenshot-zip captures each live host and writes the screenshots as a single zip archive output.

Facts on this page come from the live Trickest tool library.