Вот мой код:
String url = "http://www.metalbulletin.com/Login.html?ReturnURL=%2fdefault.aspx&";
String articleURL = "https://www.metalbulletin.com/Article/3838710/Home/CHINA-REBAR-Domestic-prices-recover-after-trading-pick-up.html";
Connection.Response loginForm = Jsoup.connect(url)
.method(Connection.Method.GET)
.execute();
Document welcomePage = loginForm.parse();
Element formElement = welcomePage.body().getElementsByTag("form").get(0);
String formAction = formElement.attr("action");
Elements input = welcomePage.select("input[name=idsrv.xsrf]");
String securityTokenValue =input.attr("value");
Connection.Response mainPage = Jsoup.connect("https://account.metalbulletin.com"+formAction)
.data("idsrv.xsrf", securityTokenValue)
.data("username", "test@tempmail.com")
.data("password", "p@ssw0rd")
.cookies(loginForm.cookies())
.method(Connection.Method.POST)
.execute();
Map<String, String> cookies = mainPage.cookies();
System.out.println("\n\nloginForm.cookies()==>\n"+loginForm.cookies());
System.out.println("\n\nmainPage.cookies()==>\n"+mainPage.cookies());
Document articlePage = Jsoup.connect(articleURL).cookies(cookies).get();
Element article = articlePage.getElementById("article-body");
Elements lead1 = article.getElementsByClass("articleContainer");
System.out.println("\n\nNews Article==>\n"+lead1);
Вывод показывает:
- статус 200, который подключается Jsoup,
- Jsoup получает куки
но код не может прочитать полную новостную статью
Может кто-нибудь, пожалуйста, помогите мне, где я делаю ошибку.Обратите внимание: логин / пароль действительны, и вы можете войти, чтобы проверить мой код
********* ОБНОВЛЕНИЕ *********
Я отметил, что вышесайт генерирует два одинаковых имени, но разные куки:
loginForm.cookies()==>
{emlbaz1=c61c6ce278bb1f7deb4815e59d4af24a, idsrv.xsrf=iJiP2cNExN8G52A4mDDGEmsQU3NuE2dHV4QIMYT9f1-7Lh_7om59Bkxx7xdYkJLW91dW6Tm1GBO66iP0W1_2Hsw-x0UYaAmaQANOPOOGQVc, SignInMessage.480d6d22b06d45a3c285fd357988d1ce=4btvKnOHpXeDRvzc5qH1aH8QX2UoO5ag0DPpE98J99abfOuxv6IBr-ygLq7NdGpHYjiuJzJWIeSr7MM8VUHynWFTVgIYJbNxPy1rJHD2guJKbCQR63Olh-w5gqeIuC4MbwCm4UEcX4KrMnEclU5Z7L-paPJgRYjmHKq2wrzba6tCsosZamFaMaRFN7Hkq7Vv2cYEKDCVFaOEyk_1DZXlshlNEDOME1WFgjCQ5R8065AJmHik5OdMOIH4ji_HeYVwupa1jc4KJO1kv7GnLOqZzhIJxXjV5N0dyQ1HYmBD4N8YLS6bvIp5guhxX7IhBASiqnpaMB_ZH8BazaOJRW6-vFlU0Q3fItW6_h2UkQwb9QBh4Ig9K3hclncY4MLxtJJGTVAildPaandRD0JNNeDMs1n2GQ78oHKqGxXpLTOa6dauN-5gm8bBKMv0mvb90G8SjmMIblW-uFWEJ4k13AKtTm6cZrQXB3vmsS6yZpoyAUdxx4E5YOP_pbJmmgHRWq8Tg5f496gpwWOirKEYsF-_YCuJP9cMkHsAHeQmYn3pKPjuug64fJaIGzKqgpByjwKYwQgPQWCd9UQ21uDWJVA1FCoHdllYbrjoc_5WvR9CttL0vMInA8AnxGcUUSmmmN5yi-KXttiUryYZgcw_gwbpFQ, clientId=mb, ASP.NET_SessionId=bz0ezutsr1mizdqhunbeans0, EMWF_MBR.ASPXAUTH=, titan-nonce=05c9ea8c-145a-4d08-a56d-9ffa277d39fd, visid_incap_884336=lcF2GyNEQ/2MAa/2Yh70X+poz1sAAAAAQUIPAAAAAABJrURuQ31kxFwvtR4xuU55, incap_ses_532_884336=V4UEIbvIzBFqc0OXJwxiB+poz1sAAAAAaAJN/2THMp/WElZBXl1aaw==}
mainPage.cookies()==>
{emlbaz1=c61c6ce278bb1f7deb4815e59d4af24a, idsvr.clients=WyJtYiJd, SignInMessage.480d6d22b06d45a3c285fd357988d1ce=., idsvr.session=af9f1a6a46a5133d9751ad3ff90eb23e, idsrv.partial=, idsrv.external=, idsrv=jDTFFRmvLNgO3GEqKKI1U68aI7_M5m1BmN7qsMsOi0WzAvAiz2GCsVFPuSzcPpeeCZ-UUUbP8A7T3A21bRDVUoSpEnNlkqeOhsVnmykf3sZvvfnRG-rPAFQDp-KObHopQ5cPZkYKMnEguStM6Mfvvu-XBM5fj8Z86B_rZp4YyaVEa_k2tpGFdT8PjRB64zTHpdPmgyG0GMBayV1AhvPVSZCnO41vZlwTCm_p8B5OJFmRnCqimRhwSIi6dUA9P8D11G01Gn7aYxqAr8Q125-bqnoMORC1ESYgy2YwjxGRd2tletrqSrsd3VqwEpAlOuSiECZJuvCGmW0VQt2ErXcYKJ-me-uXm8FAWVj3oml7iT4mMgysKcFUtOYNAbiQunuz6_-3udZgiCsG8cBZLRXu1Nvs_We7Y0rqgbm1Lmn4aduf4XC8bV3IF-MHY_pObX-1WtN7xiZYZOuqyI8leZWSIoPLBOHbSR5oyUKxGmGrZybFQm4pkpBy9OkYFUx15Qh5R6nClwuqCLu6iX6KXB7jySu4LgvYntaEP8jkJSxiGFo}
Теперь возникает вопрос, какие куки нужно использовать для получения доступа к другим URL-адресам веб-страницы?
Update-2
Я проверил, какая форма отправляет как сообщение, и нашел те же параметры, которые я использую
Element testForm = document.body().getElementsByTag("form").get(0);
String formAction = testForm.attr("action");
System.out.println(formAction);
Elements inputElements = testForm.getElementsByTag("input");
for (Element inputElement : inputElements) {
String key = inputElement.attr("name");
String value = inputElement.attr("value");
System.out.println("Parameter Name: " + key);
System.out.println("Parameter Value: " + value);
System.out.println("");
}
Jsoup также дает статус 200 как ОК, но, возможно, проблема связана с учетными данными для входа в систему +куки для сканирования других страниц сайта.
Доказано, что Jsoup входит на веб-сайт, но учетные данные не работают для других URL-адресов страницы.
Обновление-3
Я пришел к точной проблеме, что этот сайт использует два одинаковых файла cookie с разными значениями.Это поддерживает Jsoup?
С уважением