2017-10-20 4 views
1

내가 Jsoup를 사용하여이 웹 사이트에 로그인을 시도하고있다 : 나는 그것을 위해 다음 코드를 사용하고 https://www.startus.cc/Jsoup 인증

:

String url = "https://www.startus.cc/user/login"; 
      String userAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36"; 

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

      response = Jsoup.connect(url) 
        .cookies(response.cookies()) 
        .data("name", "myname") 
        .data("pass", "mypass") 
        .data("op", "Log in") 
        .userAgent(userAgent) 
        .method(Connection.Method.POST) 
        .followRedirects(true) 
        .execute(); 

Document doc = Jsoup.connect("https://www.startus.cc/") 
       .cookies(response.cookies()) 
       .userAgent(userAgent) 
       .get(); 

     System.out.println(doc); 

그것은 나에게 페이지의 HTML 콘텐츠를 인쇄 않습니다, 하지만 여전히 로그인되어 있지 않습니다. 여기서 누락 된 것이 무엇인지 알고 있습니까? 고맙습니다!

답변

2

POST 요청에 누락 매개 변수가 있습니다 (form_build_id). https://www.startus.cc/을하고 응답에서 form_build_id의 값을 추출하십시오 주요 페이지 response = Jsoup.connect...를 -

  1. GET 요청을 보내기 다음 단계는 로그인하십시오. .cookies(response.cookies())-
  2. form_build_id 1 단계에서 가져온 쿠키를 포함 https://www.startus.cc/user/login-POST 요청을 보냅니다.
+0

도움 주셔서 감사합니다. 그 form_build_id 매개 변수가 무엇인지 더 설명해 주시겠습니까? –

+0

양식 상태 ID 인 것으로 보입니다. - 출처 : https://drupal.stackexchange.com/a/203027 – r3dst0rm