发送了所有隐藏值,发送了正确的登录详细信息,发送了cookie,但它仍然不起作用。我看过一些教程,但我觉得给出的示例不太简单,而且我对 Jsoup 还很陌生。
import java.io.IOException;
import java.util.HashMap;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class example{
public static void main( String[] args ) throws IOException{
final String USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36";
final String LOGIN_FORM_URL = "https://login.gitam.edu/Login.aspx";
final String LOGIN_ACTION_URL = "https://login.gitam.edu/Login.aspx";
final String USERNAME = "mysusername";
final String PASSWORD = "mypassword";
Connection.Response loginForm = Jsoup.connect(LOGIN_FORM_URL)
.method(Connection.Method.GET)
.userAgent(USER_AGENT)
.execute();
HashMap<String, String> cookies = new HashMap<>(loginForm.cookies());
Document loginDoc = loginForm.parse();
String viewstategenerator = loginDoc.getElementById("__VIEWSTATEGENERATOR").val();
String eventtarget = loginDoc.getElementById("__EVENTTARGET").val();
String eventargument = loginDoc.getElementById("__EVENTARGUMENT").val();
String viewstate = loginDoc.getElementById("__VIEWSTATE").val();
String eventvalidation = loginDoc.getElementById("__EVENTVALIDATION").val();
HashMap<String, String> formData = new HashMap<>();
formData.put("__VIEWSTATEGENERATOR", viewstategenerator);
formData.put("__EVENTTARGET", eventtarget);
formData.put("__EVENTARGUMENT", eventargument);
formData.put("__VIEWSTATE", viewstate);
formData.put("__EVENTVALIDATION", eventvalidation);
formData.put("txtusername", USERNAME);
formData.put("password", PASSWORD);
formData.put("Submit", "Login");
Connection.Response homePage = Jsoup.connect(LOGIN_ACTION_URL)
.cookies(cookies)
.data(formData)
.method(Connection.Method.POST)
.userAgent(USER_AGENT)
.execute();
System.out.println(homePage.parse().html());
}
}
我已经发送了 cookie、所有其他隐藏值,但我仍然没有得到我想要的输出。 (我只想要登录后页面的html源)。
这就是我如何让它发挥作用。
使用了 requests 和 BeautifulSoup 包。 使用来自请求的会话。 Session 负责处理所有 cookie 和标头,我能够登录而无需担心 cookie 和标头。 然后我就可以从登录后的页面获取任何信息。