Jsoup:使用在每个连接上更改的帖子键登录到站点?

时间:2013-11-19 08:50:19

标签: java html dom jsoup

我正在尝试为网站自动登录:https://my.calpoly.edu

网站的登录表单有一个密钥,可以根据网站的每个请求进行更改:

有没有解决这个问题?我能够抓取所有输入元素并将它们存储到地图中,然后在第二个连接上发送POST请求,但我认为它不起作用,因为在第二个连接上,lt请求发生了变化。

这是我的代码:

    Document doc = Jsoup.connect("https://my.calpoly.edu/").get();
    Element loginForm = doc.getElementById("fm1");
    Elements inputElements = loginForm.getElementsByTag("input");
    HashMap<String, String> paramList = new HashMap<String, String>();

    for (Element inputElement : inputElements) {
        String key = inputElement.attr("name");
        String value = URLEncoder.encode(inputElement.attr("value"), "UTF-8");

        if (key.equals("username")) {
            value = "user123";
        }
        else if (key.equals("password")) {
            value = "pass123";
        }

        paramList.put(key, value);
    }

    //Iterator it = paramList.entrySet().iterator();
    //while (it.hasNext()) {
    //    Map.Entry pairs = (Map.Entry)it.next();
    //   System.out.println(pairs.getKey() + "=" + pairs.getValue());
    //}

    Connection res = Jsoup.connect("https://my.calpoly.edu/cas/login");
    res.data(paramList);
    res.method(Method.POST);
    res.userAgent("Mozilla");
    Response response = res.execute();
    System.out.println(response.body());

1 个答案:

答案 0 :(得分:1)

创建如下文档:

Connection connect = Jsoup.connect("https://my.calpoly.edu/");
Document doc = connect.get();

然后,对于第二个连接,请使用相同的对象,因此请求不会更改:

  Connection res = connect;

或者,您也可以直接使用connect对象。