HTTPScreenshot——用于抓取大量网站的屏幕截图和 HTML 的工具

HTTPScreenshot——用于抓取大量网站的屏幕截图和 HTML 的工具

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 -> 启用智能获取以减少网络流量,如果满足某些条件,还可以提高速度。

国内下载链接

© 版权声明
THE END
喜欢就支持一下吧
点赞98 分享