【问题标题】:Parse and execute HTML in Android在 Android 中解析和执行 HTML
【发布时间】:2017-04-02 23:55:03
【问题描述】:

我需要用 Java 解析网页中的 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());
}

我对@9​​87654326@ 无法做到这一点的理解是否正确?

如果有,是否有适用于 Android 的库?

我知道有很多 Java 库,但由于 javax 的限制,大多数都无法与 Android 一起使用(例如 HtmlUtil)。

【问题讨论】:

  • 您想模拟浏览器还是只想发布表单?为什么你需要解析表单呢?毕竟,您在提供的代码 sn-p 中没有从表单中提取任何信息。
  • 我不需要提取任何信息。我需要做的就是验证提供的用户名和密码是否有效。如果我可以模拟点击,我可以验证提供的 ID 和密码是否有效。我知道有更好的方法可以做到这一点,但是我需要暂时以这种方式实现它
  • 该方法在很大程度上取决于您要探测的站点的性质。如果它返回错误(例如 404、403、401),您只需发布用户名和密码并查看响应即可。请参阅developer.android.com/reference/java/net/HttpURLConnection.html 以获得正确的轨道。如果您搜索 HttpURLConnection 和 HTTP POST,您将获得大量关于如何将表单数据发布到 URL 的教程。
  • 需要找到需要传递的目标链接和参数。你不需要解析页面。
  • 我已经有了目标链接和参数。根据下面给出的答案(链接),我尝试了但是我得到了以下响应:“最近的请求被拒绝,因为它包含无效的安全令牌。请刷新页面并重试。”当我做 post 方法时

标签: java android jsoup html-parsing


【解决方案1】:

您可以查看此链接。提供了一个很好的answer

步骤如下:

  1. 进入登录页面
  2. 使用 jsoup 解析 html 以获取用户名和密码
  3. 用实际的用户名和密码替换它
  4. 使用 http POST 发布用户名和密码表单。

【讨论】:

  • 看起来很有希望。我会看看。谢谢
  • 我试过这个例子,但是即使我输入了错误的凭据,它也会返回一个200。在浏览器上,它返回 303 所以有些东西看起来不对
  • 我什至尝试使用名为 Postman 的 chrome 扩展程序执行相同的任务,并且也返回 200。我想知道用户何时没有输入正确的密码。 303 是我正在寻找的响应,因此我可以区分成功和失败的登录尝试
  • @th3pat3l 这对你有帮助吗?
  • 不幸的是,它没有。我很有希望
猜你喜欢
  • 2016-04-18
  • 2013-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 2011-06-03
相关资源
最近更新 更多