JavaのWebページからHTML要素を解析し、フォームに記入して送信してログインをシミュレートする必要があります。AndroidでHTMLを解析して実行する
私は少しの研究をしており、ここではjsoup
ライブラリを使って行ったことがあります。
しかし、これを実装した後、私はjsoup
が解析のためだけであり、たとえばボタンクリックを実行できないことを認識しました。
この例では、submitButton
要素をクリックする必要があります。
try {
Document htmlDoc = Jsoup.connect(MY_URL).get();
Element loginForm = htmlDoc.getElementById("login-form");
Element usernameField = loginForm.getElementById("username");
Element passwordField = loginForm.getElementById("passwd");
Element submitButton = loginForm.getElementById("submit");
usernameField.val(username);
passwordField.val(password);
// I need to simulate `submitButton` click so I can login
} catch (Exception e) {
Log.e("TAG", e.toString());
}
jsoup
はこれを行うことができません。
もしそうなら、Android用のライブラリがありますか?
多くのJavaライブラリがありますが、ほとんどはjavax
制限のため、Android(例:HtmlUtil)では動作しません。
ブラウザをエミュレートするか、フォームを投稿したいだけですか?なぜあなたはフォームをまったく解析する必要がありますか?結局のところ、あなたが提供したコードスニペットのフォームから情報を抜き出しています。 –
私は情報を抽出する必要はありません。私がする必要があるのは、提供されたユーザー名とパスワードが有効かどうかを確認することだけです。クリックをシミュレートできる場合は、提供されたIDとパスワードが有効かどうかを確認できます。私はこれを行うより良い方法があることを知っていますが、私は一時的にこのように実装する必要があります。 –
アプローチは、調査したいサイトの性質に大きく依存します。エラー(404,403,401など)が返された場合は、ユーザー名とパスワードを投稿してレスポンスを確認するだけです。正しい軌道に乗るためにはhttps://developer.android.com/reference/java/net/HttpURLConnection.htmlを参照してください。 HttpURLConnectionとHTTP POSTを検索すると、フォームデータをURLにPOSTする方法に関するチュートリアルがたくさんあります。 –