2
우리는 수많은 Java 웹 유틸리티를 시도했으며, Quora 로그인 URL에 게시하려고 할 때 모두 500을 반환합니다. Chrome 네트워킹 탭을 사용하여 헤더/요청 항목을 찾고 모든 것이 완벽하게 설정되어야합니다. 게시 요청을 보내려고 할 때마다 500 서버 오류가 반환되는 이유는 확실하지 않습니다.Java jsoup 게시물 요청 500 Quora 로그인
public static final String USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36";
public static void test(String email, String password) throws IOException {
// Login first
String loginFormUrl = "https://quora.com/login";
String loginActionUrl = "https://www.quora.com/webnode2/server_call_POST";
Connection.Response loginForm = Jsoup.connect(loginFormUrl).userAgent(USER_AGENT).method(Connection.Method.GET).execute(); // removed useragent
// "formkey": "f3e47dd339ed5673c9411822ad5ff1da", length = 32
String[] key = loginForm.body().split("formkey\": \"");
String[] wat = key[1].split("\",");
String formkey = wat[0];
// windowId, length = 27
String[] parts = loginForm.body().split("windowId = \"");
String[] another = parts[1].split("\";");
String windowId = another[0];
// Vcon
String[] vcon1 = loginForm.body().split(Pattern.quote("new(require(\"login\").LoggedOutHomeHeaderInlineLogin"));
String[] vcon2 = vcon1[1].split("\",\"");
vcon2[0] = vcon2[0].replace(")(\"", "");
String vcon_json = "["+vcon2[0]+"]";
// Cookies
String result = "";
boolean first = true;
for(String c : loginForm.cookies().keySet()){
String value = loginForm.cookies().get(c);
if(first){
result = result + c + "=" + value;
first = false;
}
else{
result = result + "; " + c + "=" + value;
}
}
Connection.Response loginPage = Jsoup.connect(loginActionUrl)
.data("json", "{\"args\":[],\"kwargs\":{\"email\":\""+email+"\",\"password\":\""+password+"\",\"passwordless\":0}}")
.data("formkey", formkey)
.data("window_id", windowId)
.data("__vcon_json", vcon_json)
.data("__vcon_method", "do_login")
.header("Accept", "application/json, text/javascript, **; q=0.01")
.header("Accept-Encoding", "gzip, deflate, br")
.header("Accept-Language", "en-US,en;q=0.8")
.header("Content-Type", "application/x-www-form-urlencoded")
.header("Connection", "keep-alive")
.header("Content-Length", loginForm.body().length()+"")
.header("Cookie", result)
.header("Host", "www.quora.com")
.header("Origin", "https://www.quora.com")
.header("Referer", "https://www.quora.com/")
.header("User-Agent", USER_AGENT)
.header("X-Requested-With", "XMLHttpRequest")
.userAgent(USER_AGENT)
.cookies(loginForm.cookies())
.followRedirects(true)
.referrer("https://www.quora.com/")
.method(Method.POST)
.execute();
System.out.println(loginPage.statusCode());
}