您是否碰巧知道一个开源Java组件,它提供了扫描一组动态页面(JSP)的功能,然后从那里提取所有输入参数。当然,爬虫可以抓取静态代码而不是动态代码,但我的想法是将其扩展为抓取包含所有服务器端代码的Web服务器。当然,我假设该工具可以完全访问已爬网的Web服务器,而不是使用任何黑客攻击。
我们的想法是构建一个静态分析器,它能够检测所有动态页面中的所有参数(request.getParameter()等)字段。
答案 0 :(得分:3)
我们的想法是构建一个静态分析器,它能够检测所有动态页面中的所有参数字段。
您无法使用 web 抓取工具(基本上是HTML解析器)来提取请求参数。他们可以最高限度地扫描HTML结构。您可以使用例如Jsoup:
for (Element form : Jsoup.connect("http://google.com").get().select("form")) {
System.out.printf("Form found: action=%s, method=%s%n", form.attr("action"), form.attr("method"));
for (Element input : form.select("input,select,textarea")) {
System.out.printf("\tInput found: name=%s, value=%s%n", input.attr("name"), input.attr("value"));
}
}
目前打印
Form found: action=, method= Input found: name=hl, value=en Input found: name=source, value=hp Input found: name=ie, value=ISO-8859-1 Input found: name=q, value= Input found: name=btnG, value=Google Search Input found: name=btnI, value=I'm Feeling Lucky Input found: name=, value= Form found: action=/search, method= Input found: name=hl, value=en Input found: name=source, value=hp Input found: name=ie, value=ISO-8859-1 Input found: name=q, value= Input found: name=btnG, value=Google Search Input found: name=btnI, value=I'm Feeling Lucky
如果您想扫描任何表单/输入的JSP 源代码,那么您必须查看不同的方向,它绝对不能被称为“网络爬虫”。遗憾的是,没有想到这样的静态分析工具。最接近的是创建一个Filter
来记录所有提交的请求参数。
Map<String, String[]> params = request.getParameterMap();
// ...