

jsoupを使ってログインが必要なサイトの解析を行いたく、実装しています。  
解析機能などは実装が終わっていてサイトへのログインだけどうしてもわからず詰んでしまっているので質問させてください。

[code]

    <form method="POST" id="loginform">
        <input type="hidden" name="StayOnError" value="true" />
        <table class="ta2">
            <tbody>
                <tr>
                    <th>メールアドレス</th>
                    <td><input type="hidden" name="ReturnUrl"
                        value="example.com/top" style="display: none;"> <input
                        id="state" name="state" style="display: none;" type="hidden"
                        value=""> <input class="textform w100" data-val="true"
                        data-val-maxlength="メールアドレスを255文字以内で入力して下さい"
                        data-val-maxlength-max="255"
                        data-val-minlength="メールアドレスを4文字以上で入力して下さい"
                        data-val-minlength-min="4" data-val-required="メールアドレスを入力して下さい"
                        id="Username" name="Username" placeholder="メールアドレス" type="text"
                        value=""></td>
                </tr>
                <tr>
                    <th>パスワード</th>
                    <td><input class="textform w100" data-val="true"
                        data-val-required="パスワードを入力して下さい" id="Password" name="Password"
                        placeholder="パスワード" type="password"></td>
                </tr>
            </tbody>
        </table>
        <div class="dis-block text-center centering m-top10">
            <input class="btn-r m5" type="submit" value="ログイン" id="loginbtn">
            <a href="/Account/Register1" class="btn-b m5">新規会員登録</a>
            <p style="margin-top: 5px; text-align: center;">
                ※パスワードを忘れた場合は<a class="btn-link" href="/Account/RecoveryPassword">こちら</a>へ
            </p>
        </div>
    </form>
    
    
[/code]

上記のログインフォームに対して下記のコードを書きました。  
この実装で、ログイン自体は問題なくできているようなのですが、そのログインができたレスポンスからクッキーを取得して、解析をしたいページに渡そうとすると、なぜかクッキーが空でログインページにリダイレクトされてしまいます。  
渡す情報が足りないのか、GET,POSTなどで間違いがあるのか、あるいはサイト側に原因があるのか。  
スクレイピング対策がされているのでしょうか。それとも私がなにか間違えているのでしょうか。  
わかる方いましたらご教授願います。

[code]

    import java.io.IOException;
    import java.util.Map;
    import org.jsoup.Connection;
    import org.jsoup.Connection.Response;
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    
    public class AnalyzeSite {
      private static final String LOGIN_URL = "example.com/login";
      private final String USERNAME = "username@example.com";
      private final String PASSWORD = "pass1234";
      private final String UA = "Mozilla/5.0";
      private Map<String, String> cookie;
    
      public Document getDocument(String url) {
        Document document = null;
        try {
          if (cookie == null) {
            Response response = Jsoup.connect(LOGIN_URL).method(Connection.Method.GET).execute();
            response = Jsoup.connect(LOGIN_URL).data("Username", USERNAME, "Password", PASSWORD)
                .userAgent(UA).cookies(response.cookies()).method(Connection.Method.POST).timeout(10000).execute();
            System.out.println(response.statusCode());// httpステータス200 問題なし
            System.out.println(response.parse()); // ログインできてるHTMLが出る
            System.out.println(response.cookies().isEmpty());//なぜか空っぽ
            cookie = response.cookies();
          }
          document = Jsoup.connect(url).userAgent(UA).cookies(cookie).timeout(10000).get();
          System.out.println(document.html());//なぜかリダイレクトされたログインページが出力される
        } catch (IOException e) {
          e.printStackTrace();
        }
        return document;
      }
    
      public static void main(String[] args) {
        AnalyzeSite as = new AnalyzeSite();
        doSomething(as.getDocument("example.com/mypage"));// ここで取ったdocumentを解析したい
      }
    }
    
[/code]


CC BY-SA 4.0
2022-06-08T04:41:03.843
89284
2022-06-08T05:49:48.570
2022-06-08T05:49:48.570
52979
52979
question
java
jsoupでログインが必要なサイトの解析がしたいが、ログインがうまくいかない