http截图
通过 Docker 安装
docker pull jesseosiecki/httpscreenshot
docker run jesseosiecki/httpscreenshot
在 Ubuntu 上安装
通过脚本
以 root 身份运行install-dependencies.sh
脚本。
该脚本已在 Ubuntu 20.04 上以root (sudo)身份测试过。
手动
apt-get install swig swig2.0 libssl-dev python-dev python-pip
pip install -r requirements.txt
如果遇到:’module’ 对象没有属性 ‘PhantomJS’ 那么pip install selenium
(或pip install --upgrade selenium
)。
如果在 Kali Linux 上安装,PhantomJS 可能不在存储库中,您可以从https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.8-linux-x86_64.tar.bz2下载并进行符号链接,/usr/bin
如下所示:
sudo ln -s /path/to/phantomjs /usr/bin/phantomjs
自述文件和用例
HTTPScreenshot 是一款用于抓取大量网站截图和 HTML 的工具。其目标是既全面又快速,但有时两者可能会互相矛盾。
在进入文档之前 – 如果我想截取一堆网站的屏幕截图,我通常会使用以下选项:
./httpscreenshot.py -i \<gnmapFile\> -p -w 40 -a -vH
请注意,这里有大量的工作线程(40)。这可能会有问题,我通过第二次运行来弥补可能因线程过多而导致的失败:
./httpscreenshot.py -i \<gnmapFile\> -p -w 5 -a -vH
年龄变化率
选项如下:
-h, –help 显示此帮助消息并退出 -l LIST, –list LIST 输入 URL 列表 -i INPUT, –input INPUT nmap gnmap 输出文件 -p, –headless 以无头模式运行(使用 phantomjs) -w WORKERS, –workers WORKERS 线程数 -t TIMEOUT, –timeout TIMEOUT 在终止浏览器之前等待页面加载的时间 -v, –verbose 启用详细调试 -a, –autodetect 自动检测监听服务是否为 HTTP 或 HTTPS。忽略 NMAP 服务检测和 URL 方案。 -vH,–vhosts 尝试从 SSL 证书中抓取主机名并将其添加到 URL 队列 -dB DNS_BRUTE,–dns_brute DNS_BRUTE 指定用于对通配符 SSL 证书进行暴力破解的 DNS 子域名单词表 -r RETRIES,–retries RETRIES 如果 URL 失败或超时,则重试的次数 -tG,–trygui 当无头模式失败时尝试使用 FireFox 获取页面 -sF,–smartfetch 启用智能获取以减少网络流量,如果满足某些条件,还会提高速度。 -pX PROXY,–proxy PROXY SOCKS5 代理采用主机:端口格式
上述某些选项具有不明显的用例,因此下面提供了更多细节:
-l, –list -> 将一个文件作为输入,其中包含格式为“http(s)://<URL>”的输入 URL 的简单列表
-i, –input -> 将 gnmap 文件作为输入。这包括 masscan gnmap 输出。
-p, –headless -> 我发现自己越来越多地使用此选项。默认情况下,脚本“驱动” Firefox。随着线程数量的增加,这变得非常丑陋 – 一次打开 20,30 个 Firefox 窗口。此选项使用“phantomjs”,它没有 GUI,但仍能很好地解析 javascript。
-w, –workers -> 要使用的线程数。增加线程数可提高速度。输入 URL 列表会自动打乱,以避免在可能的情况下对彼此接近的 IP 地址进行攻击。如果添加过多线程,您可能会开始看到响应超时 – 请根据您的网络和机器进行调整。
-t TIMEOUT, –timeout -> 在退出之前等待服务器响应的时间
-v, –verbose -> 将输出一些额外的调试输出。
-a, –autodetect -> 如果不启用此选项,HTTPScreenshot 将表现如下:
如果输入的是 URL 列表,则方案为“http://”的站点将被视为非 SSL,方案为“https://”的站点将被视为启用 SSL
对于 GNMAP 输入,脚本将抓取输入并尝试使用 nmap 执行的任何 SSL 检测。不幸的是,这是不可靠的,nmap 并不总是喜欢告诉您某些东西已启用 SSL。此外,masscan 不执行任何版本或服务检测。
-a 或 –autodetect 选项将丢弃输入文件中的所有 SSL 提示并尝试自行检测。
-vH, –vhosts -> 通常,当通过 IP 地址访问网站时(例如:https: //192.168.1.30),我们会收到与预期不同的页面或错误。这是因为网站需要特定的“虚拟主机”或主机名,而不是 IP 地址,有时单个 HTTP 服务器会针对不同的主机名响应许多不同的页面。
对于纯文本“http”网站,我们可以使用反向 DNS、BING 反向 IP 搜索等来尝试查找与 IP 地址关联的主机名。目前 HTTPScreenshot 中尚无此功能,但可能会在以后实现。
对于启用 SSL 的“https”网站,这可能更容易一些。SSL 证书将在 CN 字段中为我们提供域名提示。在证书的“主题 alt 名称”字段中,如果存在,我们可能会获得可能与此 IP 关联的其他域名的完整列表。这些域名通常采用“*.google.com”(通配符证书)的形式,但有时会链接到单个主机名,例如“ www.google.com ”
对于每个启用 SSL 的网站,-vH 或 –vhosts 标志将从 CN 和主题 alt 名称字段中提取主机名,并将它们添加到要截屏的 URL 列表中。对于通配符证书,名称中的“*.”部分将被删除。
-dB, –dns_brute -> 必须与 -vH 一起使用才有意义。此标志指定一个包含潜在子域列表的文件。对于任何通配符证书(例如:“*.google.com”),HTTPScreenshot 将尝试强制执行有效子域并将其添加到要截屏的 URL 列表中。
-r, –retries -> Firefox 或 ghostscript 在获取页面时有时会超时。这可能是由于多种因素造成的,有时只是运行了太多线程、网络故障等。这指定了当主机失败时“重试”的次数。
-tG, –trygui -> 使用无头浏览器 phantomJS 获取失败时,将弹出 FireFox 并重试。
-sF, –smartfetch -> 启用智能获取以减少网络流量,如果满足某些条件,还可以提高速度。