Страницы

Поиск по вопросам

четверг, 11 июля 2019 г.

Проблема с пост запросом. JSoup

http://net.citycheb.ru/ - Это сайт с электронным журналом для школы. Я пытаюсь авторизироваться, чтобы сделать клиент. Использую JSoup:
import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Document;
import java.io.IOException;
class Auth { public static String auth(String login, String password) { try { Document tempodoc = Jsoup.connect("http://net.citycheb.ru").get(); String VER = tempodoc.select("input[name=\"VER\"]").first().toString(); String LT = tempodoc.select("input[name=\"LT\"]").first().toString();
Connection conn = Jsoup .connect("http://net.citycheb.ru/asp/postlogin.asp"); conn.data("VER", VER); conn.data("PW2", ""); conn.data("LT", LT); conn.data("LoginType", "1"); conn.data("ECardID", ""); conn.data("CID", "2"); conn.data("SID", ""); conn.data("PID", "-1"); conn.data("CN", "4"); conn.data("SFT", "2"); conn.data("SCID", "69"); conn.data("UN", login); conn.data("CN", password);
conn.method(Connection.Method.POST); conn.referrer("http://net.citycheb.ru/"); Connection.Response resp = conn.execute(); System.out.println("statusCode: " + resp.statusCode()); System.out.println("response: " + resp.toString());
Document doc = conn.url("http://net.citycheb.ru/asp/Announce/ViewAnnouncements.asp").get();
return doc.select("div[style=\"font-family: Arial, Helvetica, sans-serif; color:#FFFFFF; font-weight: bold;\"]").text(); }
catch (IOException e) { e.printStackTrace(); } return null; } }
В пост запросе меняются VER, PW2, LT, SID параметры, их нужно парсить с главной страницы (по крайней мере я так думаю). Но на самом деле не знаю точно, как строить пост запрос для этого сайта.
В итоге ничего кроме StatusCode : 200 полезного не выводит. Данная система построена на asp.net, как видно по запросам, а так же я думаю что и логин, и пароль предварительно шифруются, но я никаких других скриптов при авторизации через Chrome Development Tools не заметил, хотя может и пользовался неправильно.


Ответ

Отсутствует связующее звено между первым запросом и в вторым. JSoup автоматически не запоминает сессии и куки, не хранит данные откуда перешел пользователь. И еще нужно добавлять user-agent для полного понимания.
Вот пример на основе другого сайта:
import java.io.IOException; import java.security.NoSuchAlgorithmException; import java.util.Map;
import org.jsoup.Connection; import org.jsoup.Connection.Method; import org.jsoup.Jsoup; import org.jsoup.nodes.Document;
public class Rutracker {
public static void main(String[] args) throws IOException, NoSuchAlgorithmException { String urlogin; String urpassword; String userAgent = "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36";
Connection.Response res = Jsoup.connect("http://login.rutracker.org/forum/login.php").userAgent(userAgent) .data("login_username", urlogin, "login_password", urpassword, "login", "%E2%F5%EE%E4") .method(Method.POST).execute(); //Третий параметр отлавливал фидлером

Map loginCookies = res.cookies();
Document doc3 = Jsoup.connect("http://rutracker.org/forum/index.php").userAgent(userAgent).cookies(loginCookies).get(); System.out.println(doc3.getElementsByClass("logged-in-as-uname")); }
}

Комментариев нет:

Отправить комментарий