3

I am trying to login into this page but I cannot for the life of me get it to work. I have to login to this site when i connect to my school's wifi in order to start a session.

So far ive tried to use bash and cUrl to achieve this but have only achieved to give myself a headache. will cUrl work or am I on the wrong track? Any help is greatly appreciated!

Thanks,

N

Here's 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
  • 1
    you are probably experiencing issues with cookies or something. so it might be possible with curl with the correct settings. try tcpdumping when you do it by hand and then tcpdump the curl session and look for differences Commented Sep 3, 2012 at 23:43
  • could you post how exactly you've tried? You can login to your school's page with curl but it will be different cookie jar than browser one. So even if you login in that way you don't have session on browser level. Commented Sep 4, 2012 at 7:28
  • the main reason for doing this is to automate the process for logging into the wifi. will the session be started for this kind of thing? Commented Sep 4, 2012 at 12:04

4 Answers 4

3

Some things you're obviously doing wrong - your form looks like this:

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

You need to submit your request to the "action" URL of the form, and you need to make it a POST request instead of a GET request to some other URL.

Sign up to request clarification or add additional context in comments.

Comments

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"

where http://campus.fsu.edu/webapps/login/login.result is the end url after user is authenticated

so initially authenticate then - call curl again and load in cookie to authenticated url

Comments

1

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 selenium plugin and export your loging-in scenario as python, ruby or java script. With some libraries downloaded you'll achieve the same.

Comments

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

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.