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
Document doc3 = Jsoup.connect("http://rutracker.org/forum/index.php").userAgent(userAgent).cookies(loginCookies).get();
System.out.println(doc3.getElementsByClass("logged-in-as-uname"));
}
}
Комментариев нет:
Отправить комментарий