我是一个渗透测试员编写了一个基本的网络应用程序枚举(收集所有链接,电子邮件地址,表单域参数和评论)的目标URL的工具。
使用curl,我可以从目标网址的源代码中获得单行注释。
下面显示了所有单行注释:
curl <url> -s -L | grep '<!--.*-->' | sed -e 's/^[[:space:]]*//'我在尝试grep多行注释时遇到了问题。
我该如何使用curl + grep来实现这个目标呢?或者awk/sed是更好的选择?
发布于 2019-07-23 19:35:51
您可以使用sed的/regexp/,/regexp/范围:
curl...|sed -n '/<!--/,/-->/p'发布于 2019-07-23 19:57:28
使用正则表达式解析HTML或XML文件基本上是不可行的。像sed和awk这样的工具在处理文本文件方面非常强大,但是当它归结为解析复杂结构的数据时--比如XML、HTML、JSON等等--它们不过是一把大锤。是的,你可以完成这项工作,但有时会付出巨大的代价。要处理如此精细的文件,您需要使用一组更有针对性的工具来提高技巧。
在解析XML或HTML的情况下,可以很容易地使用xmlstarlet。
对于XHTML文件,您可以使用:
$ curl ... | xmlstarlet sel --html -t -m '//comment()' -v . -n但是,由于HTML页面通常不是格式良好的XML,因此使用tidy对其进行一些清理可能会很方便。在上面的示例中,这给出了:
$ curl ... | tidy -q -numeric -asxhtml --show-warnings no \
| xmlstarlet sel --html -t -m '//comment()' -v . -n发布于 2020-01-23 04:29:37
使用ugrep
curl <url> -s -L | ugrep '<!--(\n|.)*?-->' | sed -e 's/^[[:space:]]*//'请注意,我们使用延迟重复*?来限制匹配的模式,否则文件中的最后一个-->将被贪婪地匹配。
Ugrep相对较新。它的目的是增强grepping,消除我们经常遇到的现有grep工具的限制。
https://stackoverflow.com/questions/57163208
复制相似问题