我有一个托管在 2 台服务器上的网站。该网站基于 SSL。
我想使用本地 Opsview 监控(加载主页并查找特定字符串)每个服务器的网站。这意味着我需要转到 Opsview 的 HOSTS 文件并添加“domain.com 10.10.10.33”,然后每次都进行更改以匹配正确的服务器。我显然无法编写脚本,因为检查过程中结果很可能会出现偏差。
有没有一种 Linux 爬虫,能够获取 IP 地址、域名并将它们结合起来?我尝试了 curl --proxy 和 wget --header,但都无济于事。
答案1
许多 SSL http 服务器并不关心提供了什么 Host: 标头,因此只需请求 https://$ipaddress/foo 就可以了,只要您可以说服客户端(例如 wget)忽略证书 CN 不匹配。
否则尝试类似以下操作:
(echo -e 'GET /foo HTTP/1.0\r\nHost: domain.com\r\n\r'; sleep 2) | openssl s_client -connect 10.10.10.33:443 | grep "a certain string"
答案2
您不需要主机名,您可以单独使用 IP 进行连接并使用 传递域curl
。
curl -k -H "Host: your-domain-name" https://ip-of-server/someURL
将使-k
cURL 忽略证书错误,-H
将放置主机,然后 curl 下载结果。您可以通过 或您拥有的任何其他工具进行管道awk
传输grep
。
答案3
您是否尝试过使用 curl 连接到 IP 地址并覆盖主机?-
curl -H 'Host: domain.com' http://10.10.10.33/
答案4
我最终找到了解决方案,无需取消认证警告等。
这需要最新的 CURL 7.37.1
正确的语法是:
curl --resolve yourdomain.com:443:se.rv.er.ip https://yourdomain.com