2016-03-28 60 views
0

ben içinBaşarısız oldu Jsoup

sayfası özel

learn.sun.ac.za/my kazımak böylece this sayfasına giriş mücadele oldum kullanarak bu sayfaya giriş şimdi iyi. Birden fazla SO gönderisini aradım ve her öğeden aldığım tavsiyeyi uygulamaya koymaya çalıştım.

denemesi 1

String url = "https://sso-prod.sun.ac.za/cas/login?service=http%3A%2F%2Flearn.sun.ac.za%2Flogin%2Findex.php"; 
String userAgent = "Mozilla/5.0"; 

      Connection.Response response = Jsoup.connect(url) 
        .userAgent(userAgent) 
        .method(Connection.Method.GET) 
        .execute(); 

      response = Jsoup.connect(url) 
        .userAgent(userAgent) 
        .cookies(response.cookies()) 
        .data("action", "login") 
        .data("username", "MYUSERNAME") 
        .data("password", "MYPASSWORD") 
        .method(Connection.Method.POST) 
        //.followRedirects(true) 
        .execute();    

      Document doc = Jsoup.connect("http://learn.sun.ac.za/my") 
        .cookies(response.cookies()) 
        .userAgent(userAgent) 
        .get(); 

      System.out.println(doc.title()); 

çıkışı: "Tek oturum | Şirketi"

neden giriş etmediğini belirten. diğer mesajlar tavsiyeler gelen

Ben krom yoluyla trafiği izlenir ve aynı sonucu vardı kodu

String url = "https://sso-prod.sun.ac.za/cas/login?service=http%3A%2F%2Flearn.sun.ac.za%2Flogin%2Findex.php"; 
String userAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36"; 

      Connection.Response response = Jsoup.connect(url) 
        .userAgent(userAgent) 
        .method(Connection.Method.GET) 
        .execute(); 

      response = Jsoup.connect(url) 
        .userAgent(userAgent) 
        .cookies(response.cookies()) 
        .header("accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8") 
        .header("accept-encoding", "gzip, deflate") 
        .header("accept-language", "en-US,en;q=0.8") 
        .header("cache-control", "max-age=0") 
        .header("connection", "keep-alive") 
        .header("content-length", "114") 
        .header("content-type","application/x-www-form-urlencoded") 
        .header("dnt", "1") 
        .header("host", "sso-prod.sun.ac.za") 
        .header("origin", "https://sso-prod.sun.ac.za") 
        .header("referer", "https://sso-prod.sun.ac.za/cas/login?service=http%3A%2F%2Flearn.sun.ac.za%2Flogin%2Findex.php") 
        .header("upgrade-insecure-requests", "1") 
        .data("action", "login") 
        .data("username", "MYUSERNAME") 
        .data("password", "MYPASSWORD") 
        .data("lt", "LT-3042474-9t3oldTU1253G6HVqFffHgMWxnYXdg") 
        .data("execution", "e1s1") 
        .data("_eventId", "submit") 
        .method(Connection.Method.POST) 
        //.followRedirects(true) 
        .execute();    

      Document doc = Jsoup.connect("http://learn.sun.ac.za/my") 
        .cookies(response.cookies()) 
        .userAgent(userAgent) 
        .get(); 

      System.out.println(doc.title()); 

oradan tüm başlıkları eklendi. Sonra yaptım gerçek html kodu çıktı ve kod herhangi bir yerde herhangi bir vidalanmış ve gerçekten formunu sunmuş olduğu anlamına gelir herhangi bir giriş hata mesajı olmadığını bulundu?

bunun başarılı krom giriş bilgisi LT değeri yanlış çünkü var enter image description here enter image description here

cevap

1

neye benzediği - her yeni oturum için değer elde gerektiğini ve senin gibi bazı değer göndermemeyi. Sayfanın HTML bak:

LT

seçici değeri div.controls:nth-child(1) olduğunu içeren DIV için.
Yani adımlardır -
sayfa
sizin POST isteğine ekleyin LT değerini alın yükleyin.

+0

sorunu çözdü! – SimpleJack