4

そこにはたくさんの情報があることは知っていますが、私の問題にふさわしいものは何も見つかりませんでした。ログインする必要のあるページからデータを収集したい。これが私がやろうとしていることです。

私は次のことを行ってCookieを収集します。

Connection.Response res = Jsoup
      .connect("http://website.com/login?event=doLogin")
      .execute();
Map <String,String> cookies = res.cookies();

そして、隠された値のhtmlを読んでください:

 Document doc = Jsoup
      .connect("http://website.com/login?event=doLogin")
      .cookies(cookies)
      .get();


        html = doc.toString();
        length = html.length();
        counter = 0;

        for (int i = 0; i < length; i++) {
            if (html.startsWith("document.write", i)){
                name[counter] = html.substring(i + 41, i + 144);
                value[counter] = "Login";
                counter++;
            }
            if (html.startsWith("hidden", i)) {
                name[counter] = html.substring(i + 13, i + 81);
                value[counter] = html.substring(i + 90, i + 123);
                counter++;
            }
        }

最後に、この情報を使用して、Cookieと非表示の値を使用してログインします。

 Document doc2 = Jsoup
      .connect("http://website.com/login?event=doLogin")
      .cookies(cookies)
      .data("email", "my@email")
      .data("pass", "mypass")
      .data(name[0], value[0])
      .data(name[1], value[1])
      .data(name[2], value[2])
      .method(Connection.Method.POST)
      .get();
 System.out.println(doc2);

しかし、私が得たのはログインページだけです。私が試したときに、これらの隠された値が変更される可能性があるのではないかと思います。

Document doc2 = Jsoup.connect

私はそれを正しくやっていますか?

4

1 に答える 1

6

メソッドをPOSTに設定してから、GETリクエストを呼び出すと、一種の混合コンテキストになります。これを試して:

Connection.Response res = Jsoup.connect("http://website.com/login?event=doLogin")
                               .execute();

...

Document doc = Jsoup.connect("http://website.com/login?event=doLogin")
                    .cookies(res.cookies())
                    .data("email", "my@email")
                    .data("pass", "mypass")
                    .data(name[0], value[0])
                    .data(name[1], value[1])
                    .data(name[2], value[2])
                    .post();
于 2013-03-12T18:49:00.893 に答える