Bash script to enter a web page

I try to enter this page , but I canโ€™t get it to work for life. I need to log in to this site when I connect to my school Wi-Fi to start a session.

So far, ive has tried to use bash and cUrl to achieve this, but has only reached to give herself a headache. will cUrl work or am I mistaken? Any help is much appreciated!

Thanks,

N

Here is what I tried:

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/ 
+3
source share
4 answers

Some things that you are clearly mistaken, your form is as follows:

 <form onsubmit="return validate_form(this)" method="post" action="https://bb5.fsu.edu/cas/" id="login" AUTOCOMPLETE="off"> <!-- etc --> </form> 

You need to send a request to the action form URL, and you need to make a POST request instead of a GET request to a different URL.

+3
source
 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" 

where http://campus.fsu.edu/webapps/login/login.result is the final URL after user authentication

so first authenticate, then call curl again and load the cookie into the authenticated URL

+2
source

I managed to do this with python and mechanize. Should work for you too:

http://stockrt.github.com/p/handling-html-forms-with-python-mechanize-and-BeautifulSoup/

You can also download the selenium plugin and export the login script as a python, ruby โ€‹โ€‹or java script. With some loaded libraries you will achieve the same.

+1
source
 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()); } } 

This is the same answer written in java and working with http https

+1
source

Source: https://habr.com/ru/post/1433764/


All Articles