android - 发布 JSOUP 文档以登录网站

标签 android post cookies ssl jsoup

我在这里发帖是因为我无计可施。我正在使用 Jsoup 发布用于登录的 HTML 数据。奇怪的是我可以在表单中输入数据,按登录,然后从网站上得到响应。但是,即使使用正确的登录凭据,该网站仍告诉我无法登录。关于为什么会这样,我有一些想法:

1) HTTPS://位于我尝试连接的 URL 之前,我读到有时 Jsoup 在验证 SSL 证书时遇到问题。

2) 我知道 cookie 是个问题。当我登录到该网站后在 Chrome 上使用开发人员选项时,当我打印出 Connection.Response 的 cookie 时,那里有一个 cookie 不存在。

3) 当我尝试登录后使用 Jsoup 打印生成的文档时,出现奇怪的“注意:您的数据没有丢失。使用 SSL 安全登录后将发布”消息。我不知道那是什么意思,谷歌显然也不知道。

为了保证安全,我删除了我正在连接的实际 URL,但下面的代码应该仍然有某种意义。

        String encodeUser = URLEncoder.encode(username, "UTF-8");
        String encodePass = URLEncoder.encode(password, "UTF-8");

        Connection.Response loginForm = Jsoup.connect("https://----")
                .method(Method.GET)
                .userAgent("Mozilla/5.0")
                .execute();

        Log.v("Miles", String.valueOf(loginForm.cookies()));

        Document homeDoc = Jsoup.connect("--------")
                .cookie("T3Version", loginForm.cookie("T3Version"))
                .data("_name", encodeUser, "_pass", encodePass, "_login", "in")
                .referrer("https://web.wm.edu/studenthappenings/preview.php")
                .userAgent("Mozilla/5.0")
                .method(Connection.Method.POST)
                .timeout(1000)
                .post();

        Log.v("Miles", String.valueOf(loginForm.cookies()));

                    System.out.println(homeDoc.body());
            if (homeDoc.body().html().contains("Cannot perform login")){
                 Log.v("Miles", "Cannot perform login");
            }

它总是进入 if 循环并打印日志。

帮助?我很乐意提供更多信息,因为在为我的愚蠢问题设计解决方案时您可能需要它。

最佳答案

最终将 Jsoup 降级为 html 抓取和读取数据的唯一目的,使用 HttpClient 等登录网站。 Jsoup 很棒,但并不令人惊奇。

关于android - 发布 JSOUP 文档以登录网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24481151/

相关文章:

java - Android:为谷歌地图设置 API key

angularjs - 如何在 Node js 中重定向到 url 并对其发出 post 请求?

android - 改造:@Field 和 @Body 有什么不同

c# - 如何将包含--data-urlencode 的curl 转换为HttpClient 调用?

java - 使用 cookie 从 PHP 读取 JSON

java - 将系统应用程序的文件复制到另一个位置时出错

具有线程问题的Android ProgressDialog

http - cookies——误解

android - 为什么我在运行 `NoClassDefFoundError: org/codehaus/groovy/runtime/typehandling/ShortTypeHandling` 时得到 `./gradlew tasks` ?

javascript - Cookies 和 SameSite + Secure - ExpressJS