Crawlergo 使用教程
1. 项目介绍
Crawlergo 是一个基于 Chrome headless 模式的浏览器爬虫,用于为网页漏洞扫描器收集 URL。它通过在 DOM 渲染阶段钩取整个网页的关键位置,自动填充并提交表单,智能触发 JS 事件,尽可能收集网站暴露的条目。内置的 URL 去重模块过滤掉了大量伪静态 URL,同时保持了对大型网站快速解析和爬行的速度,最终得到高质量的需求结果集合。
Crawlergo 当前支持以下特性:
- Chrome 浏览器环境渲染
- 智能表单填充,自动提交
- 完整的 DOM 事件收集与自动触发
- 智能的 URL 去重,移除大部分重复请求
- 智能分析网页,并收集 URLs,包括 JavaScript 文件内容、页面注释、robots.txt 文件以及自动 Fuzz 常见路径
- 支持主机绑定,自动修复并添加 Referer
- 支持浏览器请求代理
- 支持将结果推送到被动网页漏洞扫描器
2. 项目快速启动
在开始使用之前,请确保已经阅读并确认免责声明。
安装
Crawlergo 依赖于 Chrome 环境,你可以从官方网站下载最新版本的 Chromium。下载最新版本的 Crawlergo 并解压到任意目录。如果你使用的是 Linux 或 macOS,请给予 crawlergo 可执行权限(+x)。
编译
对于当前平台编译,运行:
make build
对于所有平台编译,运行:
make build_all
快速启动示例
假设你的 Chromium 安装目录为 /tmp/chromium/,以下命令会在同时打开 10 个标签页的情况下,爬取 testphp.vulnweb.com:
bin/crawlergo -c /tmp/chromium/chrome -t 10 http://testphp.vulnweb.com/
使用 Docker
你也可以使用 Docker 来运行 Crawlergo,避免环境问题:
git clone https://github.com/Qianlitp/crawlergo
docker build -t crawlergo .
docker run crawlergo http://testphp.vulnweb.com/
使用代理
bin/crawlergo -c /tmp/chromium/chrome -t 10 --request-proxy socks5://127.0.0.1:7891 http://testphp.vulnweb.com/
使用 Python 调用
默认情况下,crawlergo 会直接在屏幕上打印结果。下面的示例代码展示了如何将输出模式设置为 json 并使用 Python 调用:
#!/usr/bin/python3
# coding: utf-8
import simplejson
import subprocess
def main():
target = "http://testphp.vulnweb.com/"
cmd = [
"bin/crawlergo",
"-c",
"/tmp/chromium/chrome",
"-o",
"json",
target
]
rsp = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, error = rsp.communicate()
result = simplejson.loads(output.decode().split("--[Mission Complete]--")[1])
req_list = result["req_list"]
print(req_list[0])
if __name__ == '__main__':
main()
3. 应用案例和最佳实践
Crawlergo 返回完整的请求和 URL,可以被用于多种场景:
- 与其他被动网页漏洞扫描器结合使用
- 首先启动一个被动扫描器并设置监听地址为
http://127.0.0.1:1234/ - 然后在同一台机器上启动 crawlergo,并设置参数:
--push-to-proxy http://127.0.0.1:1234/
- 主机绑定(高版本 Chrome 不支持)
- 自定义 Cookies
- 定期清理 crawlergo 生成的僵尸进程
- 禁用 headless 模式检测
4. 典型生态项目
(本部分内容因项目具体情况而定,可列出与 Crawlergo 相关联的开源项目,例如漏洞扫描器、安全工具等,以及它们的简要介绍和链接方式,这里不展开具体内容。)
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



