我正在尝试登录this page,但我不能为我的生活让它发挥作用。当我连接到学校的wifi时,我必须登录这个网站才能开始会话。
到目前为止,我已经尝试使用bash和cUrl来实现这一点,但只是让自己头疼。会工作还是我走错了路?非常感谢任何帮助!
谢谢,
<磷>氮这是我试过的:
curl --cookie-jar cjar --output /dev/null http://campus.fsu.edu/webapps/login/
curl --cookie cjar --cookie-jar cjar \
--data 'username=foo' \
--data 'password=bar' \
--data 'service=http://campus.fsu.edu/webapps/login/' \
--data 'loginurl=http://campus.fsu.edu/webapps/login/bb_bb60/logincas.jsp' \
--location \
--output ~/loginresult.html \
http://campus.fsu.edu/webapps/login/
答案 0 :(得分:3)
有些事情你显然做错了 - 你的表格看起来像这样:
<form onsubmit="return validate_form(this)" method="post" action="https://bb5.fsu.edu/cas/" id="login" AUTOCOMPLETE="off">
<!-- etc -->
</form>
您需要将您的请求提交到表单的“操作”URL,并且您需要将其作为POST请求而不是对其他URL的GET请求。
答案 1 :(得分:2)
curl -c vh.cookie "http://campus.fsu.edu/webapps/login/bb_bb60/logincas.jsp?username=foor&password=bar"
curl -b vh.cookie "http://campus.fsu.edu/webapps/login/login.result"
其中http://campus.fsu.edu/webapps/login/login.result是用户通过身份验证后的结束网址
所以最初验证然后 - 再次调用curl并将cookie加载到经过身份验证的URL
答案 2 :(得分:1)
我设法用python和mechanize做到了这一点。应该也适合你:
http://stockrt.github.com/p/handling-html-forms-with-python-mechanize-and-BeautifulSoup/
您还可以下载selenium插件并将您的登录方案导出为python,ruby或java脚本。下载了一些库后,您将实现相同的目标。
答案 3 :(得分:1)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map.Entry;
import java.util.Vector;
public class AuthUrl {
String username="";
String password="";
private Boolean error=false;
private static final String conurl="campus.fsu.edu";
private static final String auth_url="http://campus.fsu.edu/webapps/loggedin.htm";
public AuthUrl() {}
public AuthUrl( String username, String password) {
this.username = username;
this.password = password;
}
public String Result() {
String url = "http://"+conurl+"/webapps/login/bb_bb60/logincas.jsp";
String charset = "UTF-8";
StringBuilder sba=new StringBuilder();
sba.append("Username: "+username+" ("+conurl+")<br>");
try {
String query = String.format("qualifier=%s&username=%s&password=%s",
URLEncoder.encode(username, charset),
URLEncoder.encode(password, charset));
HttpURLConnection authi = (HttpURLConnection) new URL(url + "?" + query).openConnection();
authi.connect();
StringBuilder sb = new StringBuilder();
// find the cookies in the response header from the first request
List<String> cookies = authi.getHeaderFields().get("Set-Cookie");
if (cookies != null) {
for (String cookie : cookies) {
if (sb.length() > 0) {
sb.append("; ");
}
// only want the first part of the cookie header that has the value
String value = cookie.split(";")[0];
sb.append(value);
}
}
//If authentication passed the Location field will have a value
//however the user has put in invalid details the Location within header will be null
List<String> location = authi.getHeaderFields().get("Location");
if (location == null) {
error=true;
}
if (error==false) {
// build request cookie header to send on all subsequent requests
String cookieHeader = sb.toString();
// with the cookie header your session should be preserved
// Now connect to authenticated url - and show its contents
URL regUrl = new URL(auth_url);
HttpURLConnection regCon = (HttpURLConnection) regUrl.openConnection();
regCon.setRequestProperty("Cookie", cookieHeader);
regCon.connect();
//int rc = regCon.getResponseCode();
//for (Entry<String, List<String>> header : regCon.getHeaderFields().entrySet()) {
// System.out.println(header.getKey() + "=" + header.getValue());
//}
BufferedReader br = new BufferedReader(new java.io.InputStreamReader(regCon.getInputStream()));
String line = null;
String searchingfor="";
while ((line = br.readLine()) != null){
// To Parse the results over here logics would be needed such as
//if (line.indexOf("some_string")>-1) {
// searhingfor=line.substring(line.indexOf("Pattern before),line.indexOf("endstring")+4)
//where 4 if number of characters end string was.
//}
//above is commented for now print each line
sba.append(line+"<br>");
}
}
}else{
sba.append("Authentication has failed - credintials did not meet the criteria for username:"+ username+" on url: "+url+ "?" + query);
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return(sba.toString());
}
}
这是用java编写的,与http https
一起使用的答案