Search code examples
javaweb-crawlerjsouplinkedin-api

Login into Linkedin with JSoup


I need to login into Linkedin with Jsoup, preferably.

This is what I'm using to login to another website but it isn't working for Linkedin.

Connection.Response res = Jsoup
    .connect("https://www.linkedin.com/uas/login?goback=&trk=hb_signin")
    .data("session_key", mail, "session_password", password)
    .method(Connection.Method.POST)
    .timeout(60000).

// Also tried "https://www.linkedin.com/uas/login-submit"

Map<String, String> loginCookies = res.cookies();
    //Checking a profile to see if it was succesful or if it returns the login page.    
Document currentPage = Jsoup.connect(someProfileLink).cookies(loginCookies).timeout(10000).
System.out.println("" + currentPage.text());

What am I doing wrong?

I need to be able to fetch user profiles by using a web crawler but whatever I try I can't get the login cookies.


Solution

  • You can login into Linkedin with this code:

        try {
    
                    String url = "https://www.linkedin.com/uas/login?goback=&trk=hb_signin";
                    Connection.Response response = Jsoup
                            .connect(url)
                            .method(Connection.Method.GET)
                            .execute();
    
                    Document responseDocument = response.parse();
                    Element loginCsrfParam = responseDocument
                            .select("input[name=loginCsrfParam]")
                            .first();
    
                    response = Jsoup.connect("https://www.linkedin.com/uas/login-submit")
                            .cookies(response.cookies())
                            .data("loginCsrfParam", loginCsrfParam.attr("value"))
                            .data("session_key", "your_login")
                            .data("session_password", "your_password")
                            .method(Connection.Method.POST)
                            .followRedirects(true)
                            .execute();
    
                    Document document = response.parse();
    
        //            System.out.println(document)
    
                    System.out.println("Welcome " 
                            + document.select(".act-set-name-split-link").html());
    
                } catch (IOException e) {
                    e.printStackTrace();
                }