Java 使用JSoup登录Linkedin

Java 使用JSoup登录Linkedin,java,web-crawler,jsoup,linkedin,Java,Web Crawler,Jsoup,Linkedin,我需要用Jsoup登录Linkedin,最好是 这是我用来登录另一个网站的东西,但它对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.M

我需要用Jsoup登录Linkedin,最好是

这是我用来登录另一个网站的东西,但它对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());
Connection.Response res=Jsoup
.连接(“https://www.linkedin.com/uas/login?goback=&trk=hb_signin")
.数据(“会话密钥”、邮件、“会话密码”、密码)
.method(Connection.method.POST)
.超时(60000)。
//“也尝试过”https://www.linkedin.com/uas/login-submit"
Map loginCookies=res.cookies();
//检查配置文件是否成功或是否返回登录页面。
Document currentPage=Jsoup.connect(someProfileLink).cookies(loginCookies).超时(10000)。
System.out.println(“+currentPage.text());
我做错了什么


我需要能够使用网络爬虫获取用户配置文件,但无论我尝试什么,都无法获取登录cookies。

您可以使用以下代码登录Linkedin:

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

session\u key
session\u password
是否是要发布链接的正确字段名?是的,如下面的答案中所示,这是有效的。谢谢你的提问!非常感谢!当然,它是有效的。最后一个请求,如果可以的话:你能解释一下流程吗?为什么登录时需要响应?Linkedin使用什么让JSoup需要以这种方式而不是简单的方式进行操作?@SorinGrecu要通过身份验证过程,您必须将会话cookie和CSRF令牌添加到POST请求中。阅读有关CSRF令牌的内容。似乎不再有效。你知道为什么吗?