2014-09-23 2 views
0

jsoup를 사용하여 tumblr에 로그인하려고합니다. 비슷한 질문을 한 적이 있는데 비슷한 코드는 sessionid이 없어서 작동하지 않는다고했습니다. 그런 다음 입력하기 위해 javascript:void(alert(document.cookie))을 입력하려고했지만 어떤 sessionid 매개 변수도 보지 못했습니다. 다음 코드를 사용하고 있습니다 :jsoup로 tumblr에 로그인

try { 
    Connection.Response res = Jsoup.connect("https://www.tumblr.com/login") 
     .data("signup_email", "[email protected]", "signup_password", "mypassword") 
     .method(Method.POST) 
     .execute(); 

     //sessionId = res.cookie("SESSIONID"); 
     cookiesoup = res.cookies(); 
} catch (IOException e) { 
    JOptionPane.showMessageDialog(this, "This code didn't work", "Error", JOptionPane.WARNING_MESSAGE); 
} 

어떤 조언이 필요합니까?

+3

왜 공식 API를 사용하지 않습니까? –

+0

API에는로드 할 수있는 게시물의 양에 많은 제한이 있으므로 필요한 작업을 수행하는 데 유용하지 않습니다. 나는 이미 jsoup에 내 대부분의 다른 코드를 가지고있다. – Redothematrix

+0

res.cookies()의 내용을 게시 할 수 있습니까? – Drublic

답변

0
private String login_url = "https://www.tumblr.com/login"; 
private String bblog_url = "https://www.tumblr.com/services/bblog"; 
private String user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36"; 
private String email; 
private String password; 

//connect to Tumblr Login Page 
Response login_page = Jsoup.connect(login_url).method(Method.GET).execute(); 

Document login_document = login_page.parse(); 

//get hidden tokens needed to login 
String random_username_suggestions = Jsoup.parse(login_document.select("input[name=random_username_suggestions]").attr("value")).text(); 
String form_key = login_document.select("input[name=form_key]").attr("value"); 

Map<String, String> login_page_cookies = login_page.cookies(); 

//POST request to bblog url needed for login 
Jsoup 
.connect(bblog_url) 
.cookies(login_page_cookies) 
.referrer(login_url) 
.ignoreHttpErrors(true).followRedirects(true) 
.userAgent(user_agent) 
.method(Method.POST) 
.execute(); 

//Finally request to login page with required form data 
Response login_response = Jsoup.connect(login_url) 
     .data("determine_email", email) 
     .data("user[email]",email) 
     .data("user[password]",password) 
     .data("tumblelog[name]","") 
     .data("user[age]","") 
     .data("context","other") 
     .data("version","STANDARD") 
     .data("follow","") 
     .data("http_referer","https://www.tumblr.com/logout") 
     .data("form_key", form_key) 
     .data("seen_suggestion","0") 
     .data("used_suggestion","0") 
     .data("used_auto_suggestion","0") 
     .data("about_tumblr_slide","") 
     .data("random_username_suggestions", random_username_suggestions) 
     .cookies(login_page_cookies) 
     .userAgent(user_agent) 
     .method(Method.POST) 
     .execute(); 

Document login_reponse_document = login_response.parse(); 

String user_id = login_reponse_document.select("input[name=t]").attr("value"); 

// This will print current username 
System.out.println(user_id);