Jsoup: невозможно получить доступ к значению CSRF-токена - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь получить значение токена CSRF, представленного в форме. Но вместо этого я получаю эхо-код php, когда он должен выглядеть примерно так: '88569a2d60e4e7'

Я использовал инструменты проверки элементов в Chrome, там я вижу сгенерированный токен. Однако с JSoup дело обстоит иначе.

Connection.Response res1 = Jsoup.connect("http://lms.uaf.edu.pk/login/index.php").method(Connection.Method.GET).execute();
                        Document welcomePage = res1.parse();
                        Map welcomCookies = res1.cookies();

    // Here I'm trying to access 'name' and 'value' of token

                        Element inputHidden = welcomePage.getElementById("token");
                        String securityTokenKey = inputHidden.attr("name");
                        String securityTokenValue = inputHidden.attr("value");


// Logging the value of token but getting php echo code, instead of token value
                        Log.d("myTag", securityTokenValue.toString());

Вот вывод, который я получаю:

Token value

1 Ответ

0 голосов
/ 20 июня 2019

Что заставило вас решить, что у вас есть элемент с Id = 'token' в html?
Проверка источника страницы покажет, что он содержит <input type="hidden" name="logintoken" value="vN8mavyjqEsJimM0ffx7ulLARg2A17vI">.
Чтобы получить этот элемент, вы можете использовать следующеекод:

Elements inputHidden = welcomePage.getElementsByAttributeValueContaining("name", "token");
    for (Element e : inputHidden) {
        String securityTokenKey = inputHidden.attr("name");
        String securityTokenValue = inputHidden.attr("value");
        System.out.println(securityTokenKey + "=" + securityTokenValue);
    }

Значение будет напечатано дважды, поскольку страница содержит указанный выше элемент дважды.

...