JSoup利用获得的cookies访问该网页中的其它链接

x33g5p2x  于2021-12-28 转载在 其他  
字(1.3k)|赞(0)|评价(0)|浏览(639)

在JSoup模拟登录网站(以校园内网为例)中我们只是模拟登录了华北电力大学内网,如下所示:

假设现在我们要访问其中某一个网站:新教务系统,其url为:

https://202-204-74-178.webvpn.ncepu.edu.cn/jwglxt/xtgl/login_slogin.html

教务系统登录也需要账号密码,相当于我们经历了两次模拟登录。

我们先利用在JSoup模拟登录网站(以校园内网为例)中获得的cookies进入到新教务系统的登录页面:

public static void get_jwxt(Map<String, String> cookies) throws IOException {
    String url_login = "https://202-204-74-178.webvpn.ncepu.edu.cn/jwglxt/xtgl/login_slogin.html";
    Document document = Jsoup.connect(url_login).cookies(cookies).post();
    System.out.println(document);
}

这里面的cookies就是上一步登录获得的cookies。
如果没有这个cookies,我们像正常访问一个网页去访问新教务系统登录页面:

String url_login = "https://202-204-74-178.webvpn.ncepu.edu.cn/jwglxt/xtgl/login_slogin.html";
Document document = Jsoup.connect(url_login).get();
System.out.println(document);

那么很不幸,打印出来的是内网的登录界面,也就是说:我们被强制退出了内网。
模拟登录新教务系统比较复杂,换成访问中国知网:

public static void get_cnki(Map<String, String> cookies) throws IOException {
    String url = "https://www-cnki-net-443.webvpn.ncepu.edu.cn/";
    Connection connection = Jsoup.connect(url).cookies(cookies);
    connection.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36");   // 配置模拟浏览器
    Response res = connection.execute();                // 获取响应
    Document d = Jsoup.parse(res.body()); 
    System.out.println(d);
}

内容过长,不再显示。

相关文章