2016-05-27 1 views
0

JSoupを利用して、ページにログインするのが非常に困難です。私は、フォーラムで見つけたことに触発されて、私が気づいていない基本的な間違いがあると思うようになったという、さまざまな試みに着手しました。JSoupを使用するのが難しいページへのログイン

Connection.Response loginForm = Jsoup.connect("https://*****.*****.com/login") 
    .method(Connection.Method.GET) 
    .execute(); 

Document res = Jsoup.connect("https://*****.*****.com/login") 
    //.data("appToken", "ef626867eae90b9f7bca8c861ef97abb370987da") 
    .data("appToken", "RandomlyGeneratingToken, see comment above") 
    .data("emailAddress", "*****@*****.***") 
    .data("password", "*****") 
    .userAgent("Mozilla") 
    .post(); 

このサイトは、データがこの段階で投稿するかについて、私は特にわからないなりこれ、要求されている毎回変わるランダムに生成入力.data("appToken", ???)、とは何かを持っています。 が実行されているときに、「HTTPエラーフェッチURLステータス= 400」というエラーが発生しました。どんな助けも高く評価されます - あんまり前もってありがとう!

答えて

0

いくつかのこと:

  1. GET要求 - それは常にあなたがPOST依頼で行ったようuser agent文字列を追加することをお勧めです:

    Connection.Response loginForm = Jsoup.connect("https://pro-labs.imdb.com/login") 
         .method(Connection.Method.GET) 
         .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0") 
         .execute(); 
    
  2. ランダム "appToken" - 以前のGETリクエストに対する応答から抽出する必要があります。ランダムまたは古い値を使用することはできません。

    Document doc = loginForm.parse(); 
    Element e = doc.select("input[name=appToken]").first(); 
    String appToken = e.attr("value"); 
    
  3. POST要求 - サーバーがGET要求に応答をあなたに送信し、セッションクッキーを追加する必要があります - すべての

    Document res = Jsoup.connect("https://pro-labs.imdb.com/login") 
        .data("appToken", appToken) 
        .data("emailAddress", "*****@*****.***") 
        .data("password", "*****") 
        .userAgent("Mozilla") 
        .cookies(loginForm.cookies()) 
        .post(); 
    
+0

まず、あなたの助けのためにどうもありがとうございました!コードを実行するときに、少なくとも私はエラーを取り除きました。それにもかかわらず、成功したログインの後、私は情報を取得しようとしているページにまだアクセスできません。したがって、これは適切なクッキーの添付ファイルを含む基礎となるページにアクセスする正しい方法ですか? (Mozilla/5.0(Windows NT 6.1; WOW64; rv:46.0​​)Gecko/20100101 Firefox/46.0」).cookies(loginForm .cookies()).get(); 'そのURLで見つかった唯一の入力はqで、値は" "です。 – noai

+0

ああ^^その後のリクエストでは、ログインに成功したセッションクッキーを追加する必要があると思っています。つまり、「ドキュメントレス」ですね。私はそれを行う方法を理解しようとしています/それはどうしたのですか? – noai

+0

ブラウザの開発者のツールを開き、それとサイトとの間のHTTPトラフィックを調べます。リクエスト、パラメータ、Cookieが表示されます。今度はあなたのプログラムで同じことをしてください。私はそのサイトのユーザー名を持っていないので、ログインページを渡すことはできません。 – TDG

関連する問題