使用Jsoup登录Android网站



当我找到这个URL并获得urlLogin时。之后,我将尝试登录到urlLogin。

Document doc = Jsoup.connect("https://www.cgv.vn/vn/theaters/showtimes/").get();
            Element element = doc.getElementById("top_register");
            //Get url login
            String urlLogin = element.childNode(0).attr("href");
            Connection.Response loginForm = Jsoup.connect(urlLogin)
                    .method(Connection.Method.GET)
                    .execute();
            Document document = Jsoup.connect(urlLogin)
                    .data("login[username]", "ABC")
                    .data("login[password]", "ABC")
                    .data("cookieexists", "false")
                    .data("form_key", "WrToMuENMoOq8ZA3")
                    .data("form_key_test", "WrToMuENMoOq8ZA3")
                    .data("send", "")
                    .cookies(loginForm.cookies())
                    .post();
            //a page you want to load after login
            String url = "https://www.cgv.vn/vn/customer/account/";
            Document fpl = Jsoup.connect(url)
                    .timeout(5000)
                    .cookies(loginForm.cookies())
                    .get();
           String body = fpl.body().toString();
            Log.e("test", body);

不幸的是,这只是在未登录状态下返回相同的页面。我做错了什么?

您可以检查的一些要点:

1) 手动登录

尝试使用您喜欢的浏览器手动登录,并使用开发工具工具栏或Fiddler等工具监视其交换。完成后,使用Jsoup在代码中重现相同的交换。

2) 表单字段form_keyform_key_test

确保这些字段不是由服务器随机生成的。您可能需要从文档中提取它们的值,而不是对它们各自的值进行硬编码。

请参阅以下两行:

.data("form_key", "WrToMuENMoOq8ZA3") // randomly generated ?
.data("form_key_test", "WrToMuENMoOq8ZA3") // randomly generated ?

3) 缺少Cookie

您是否检查了以下语句是否不会生成稍后获取https://www.cgv.vn/vn/customer/account/所需的新cookie。

Document document = Jsoup.connect(urlLogin)
                .data("login[username]", "ABC")
                .data("login[password]", "ABC")
                .data("cookieexists", "false")
                .data("form_key", "WrToMuENMoOq8ZA3")
                .data("form_key_test", "WrToMuENMoOq8ZA3")
                .data("send", "")
                .cookies(loginForm.cookies())
                .post();

最新更新