gpt4 book ai didi

java - 如何使用 Jsoup 登录网站(元刷新)?

转载 作者:搜寻专家 更新时间:2023-11-01 07:49:33 26 4
gpt4 key购买 nike

我正在尝试使用它登录。

res = Jsoup.connect("http://www.registru.liceu.asm.md/elev/login.php?user=Vozian_Valentin")
.data("pass", "DyXnyU")
.data("class","Clasa11B")
.data("submit","log in")
.method(Method.POST)
.execute();

当我调用 res.parse().outerHtml() 时,它会显示与成功登录页面或错误登录页面不同的内容,如果我将密码更改为不正确,它会显示错误登录页面。

最佳答案

一旦您登录,服务器将返回一个带有 Refresh 元标记的 HTML 页面。由于 Jsoup 是一个 HTML 解析器,它不能自动处理这种重定向。必须告诉它这样做。

方法如下:

private static final String UA_STRING = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1";
private static final String REFRESH_URL = "refresh-url";
private String loginFormUrl = "http://www.registru.liceu.asm.md/elev/login.php?user=Vozian_Valentin";

// Go to login form page
Response res = Jsoup.connect(loginFormUrl) //
.userAgent(UA_STRING) //
.data("pass", "DyXnyU") //
.data("class","Clasa11B") //
.data("submit","log in") //
.method(Method.POST) //
.execute();

// Extract the Refresh meta tag from server response
Element meta = res.parse().select("meta[http-equiv=Refresh]").first();
if (meta==null) {
throw new RuntimeException("Unable to locate Refresh meta tag...");
}

// Determine the refresh url from the meta tag
String content = meta.attr("content");
meta.attr(REFRESH_URL, content.replaceAll("(?i)^(\\d+;.+URL=)(.+)$", "$2"));

// Go to refresh url
Response res2 = Jsoup //
.connect(meta.absUrl(REFRESH_URL)) //
.userAgent(UA_STRING) //
.referrer(loginFormUrl) //
.method(Method.GET) //
.cookies(res.cookies()) //
.execute();

// Get the successfully logged page
System.out.println(res2.parse().outerHtml());

关于java - 如何使用 Jsoup 登录网站(元刷新)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36988578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com