繁体   English   中英

JSOUP自动登录网站

[英]JSOUP Automatically Login to a website

我正在尝试解析一个需要登录的网站。 从浏览器中,当我在登录页面登录时( https://backoffice.holidayinsider.com/backoffice2/login ),我将自动重定向到https://backoffice.holidayinsider.com/backoffice2/login

因此,首先我要尝试使用Java自动执行登录。 我的方法受此stackoverflow响应的激励。 我使用的代码如下:

package Login;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
import java.util.Map;
public class DoLogin {
    public static void main(String[] args)
    {

        try {

            Connection.Response loginForm = Jsoup.connect("https://backoffice.holidayinsider.com/backoffice2/login")
                .method(Connection.Method.GET)
                .execute();

            Connection.Response mainPage = Jsoup.connect("https://backoffice.holidayinsider.com/backoffice2")
                .data("username", "myusername")
                .data("password", "mypass")
                .cookies(loginForm.cookies()).execute();
            System.out.println(mainPage.parse());

            Map<String, String> cookies = mainPage.cookies();

            Document evaluationPage = Jsoup.connect("https://backoffice.holidayinsider.com/backoffice2/")
                .cookies(cookies)
                .execute().parse();
            System.out.println(evaluationPage);


        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

看来登录状态为200,正在运行。现在的问题是当我打印mainPage时,它似乎仍在登录页面上。 可能是什么原因? 预先感谢您的任何帮助或建议。

登录时,您需要添加POST方法:

        Connection.Response loginForm = Jsoup.connect("https://backoffice.holidayinsider.com/backoffice2/login")
            .method(Connection.Method.GET)
            .execute(); 

        Connection.Response mainPage = Jsoup.connect("https://backoffice.holidayinsider.com/backoffice2/login")
            .data("username", "myusername") 
            .data("password", "mypass") 
            .cookies(loginForm.cookies())
            .followRedirects(true)
            .method(Connection.Method.POST).execute(); 
        System.out.println(mainPage.parse());

        Map<String, String> cookies = mainPage.cookies();

        Document evaluationPage = Jsoup.connect("https://backoffice.holidayinsider.com/backoffice2/")
            .cookies(cookies)
            .get();
        System.out.println(evaluationPage);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM