我正在尝试为网站自动登录:https://my.calpoly.edu。
网站的登录表单有一个密钥,可以根据网站的每个请求进行更改:
有没有解决这个问题?我能够抓取所有输入元素并将它们存储到地图中,然后在第二个连接上发送POST请求,但我认为它不起作用,因为在第二个连接上,lt请求发生了变化。
这是我的代码:
Document doc = Jsoup.connect("https://my.calpoly.edu/").get();
Element loginForm = doc.getElementById("fm1");
Elements inputElements = loginForm.getElementsByTag("input");
HashMap<String, String> paramList = new HashMap<String, String>();
for (Element inputElement : inputElements) {
String key = inputElement.attr("name");
String value = URLEncoder.encode(inputElement.attr("value"), "UTF-8");
if (key.equals("username")) {
value = "user123";
}
else if (key.equals("password")) {
value = "pass123";
}
paramList.put(key, value);
}
//Iterator it = paramList.entrySet().iterator();
//while (it.hasNext()) {
// Map.Entry pairs = (Map.Entry)it.next();
// System.out.println(pairs.getKey() + "=" + pairs.getValue());
//}
Connection res = Jsoup.connect("https://my.calpoly.edu/cas/login");
res.data(paramList);
res.method(Method.POST);
res.userAgent("Mozilla");
Response response = res.execute();
System.out.println(response.body());
答案 0 :(得分:1)
创建如下文档:
Connection connect = Jsoup.connect("https://my.calpoly.edu/");
Document doc = connect.get();
然后,对于第二个连接,请使用相同的对象,因此请求不会更改:
Connection res = connect;
或者,您也可以直接使用connect
对象。