用于收集URL和JavaScript文件位置的高速Go语言网络爬虫。这基本上是优秀的Gocolly库的一个简单实现。
单个URL:
echo https://google.com | hakrawler
多个URL:
cat urls.txt | hakrawler
每行标准输入的超时时间设为5秒:
cat urls.txt | hakrawler -timeout 5
通过代理发送所有请求:
cat urls.txt | hakrawler -proxy http://localhost:8080
包含子域名:
echo https://google.com | hakrawler -subs
注意:一个常见问题是该工具不返回任何URL。这通常发生在指定了一个域名(如https://example.com),但它重定向到一个子域名(如https://www.example.com)时。子域名不在爬取范围内,因此不会输出任何URL。要解决此问题,请指定重定向链中的最终URL,或使用`-subs`选项来包含子域名。
获取google的所有子域名,找出那些响应http(s)的,然后全部爬取。
echo google.com | haktrails subdomains | httpx | hakrawler
首先,你需要安装Go语言。
然后运行这条命令来下载并编译hakrawler:
go install github.com/hakluke/hakrawler@latest
现在你可以运行~/go/bin/hakrawler。如果你希望直接运行hakrawler而不带完整路径,需要执行export PATH="~/go/bin/:$PATH"。你也可以将这行添加到~/.bashrc文件中,以便持久生效。
echo https://www.google.com | docker run --rm -i hakluke/hakrawler:v2 -subs
使用上面的Docker Hub方法要简单得多,但如果你希望本地运行:
git clone https://github.com/hakluke/hakrawler
cd hakrawler
sudo docker build -t hakluke/hakrawler .
sudo docker run --rm -i hakluke/hakrawler --help
注意:这将安装一个较旧版本的hakrawler,缺少所有功能,并且可能存在缺陷。我推荐使用其他方法。
sudo apt install hakrawler
然后,运行hakrawler:
echo https://www.google.com | docker run --rm -i hakluke/hakrawler -subs
Usage of hakrawler:
-d int
爬取深度。(默认2)
-dr
禁用跟随HTTP重定向。
-h string
自定义请求头,由两个分号分隔。例如:-h "Cookie: foo=bar;;Referer: http://example.com/"
-i 仅爬取路径内部
-insecure
禁用TLS验证。
-json
以JSON格式输出。
-proxy string
代理URL。例如:-proxy http://127.0.0.1:8080
-s 显示URL的来源(例如:href、form、script等)。
-size int
页面大小限制,单位为KB。(默认-1)
-subs
包含子域名进行爬取。
-t int
使用的线程数。(默认8)
-timeout int
爬取来自标准输入每个URL的最大时间,单位为秒。(默认-1)
-u 仅显示唯一URL。
-w 显示URL是在哪个链接中找到的。