提取所有输入参数的JSP页面爬网程序

时间:2010-12-25 19:59:49

标签: java jsp web-crawler web-scraping

您是否碰巧知道一个开源Java组件,它提供了扫描一组动态页面(JSP)的功能,然后从那里提取所有输入参数。当然,爬虫可以抓取静态代码而不是动态代码,但我的想法是将其扩展为抓取包含所有服务器端代码的Web服务器。当然,我假设该工具可以完全访问已爬网的Web服务器,而不是使用任何黑客攻击。

我们的想法是构建一个静态分析器,它能够检测所有动态页面中的所有参数(request.getParameter()等)字段。

1 个答案:

答案 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();
// ...