我们先给出登录界面以及界面的URL:

URL:https://webvpn.ncepu.edu.cn/users/sign_in

主要步骤:

  1. 填好用户名以及登录密码,按下F12,并在Elements中搜索action:

    可以看到,我们输入的表单数据最终被提交到了"/users/sign_in"里。

  2. 点击登录,在Network里面找到sign_in,可以看到我们模拟登录需要的各种信息:

  3. 开始写代码。

  • 第一步主要是获取表单信息以及cookie,可能有的网站这里必须动态请求网页数据来获得form data,具体原因请参考:Exception in thread “main“ org.jsoup.HttpStatusException: HTTP error fetching URL. Status=422, URL=
Connection connection = Jsoup.connect(URL);
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();   //获取res.cookies(),后面要用到
Document d = Jsoup.parse(res.body());
List<Element> elements = d.select("form");
Map<String, String> datas = new HashMap<>();
for (Element element : elements.get(0).getAllElements()) {if (element.attr("name").equals("user[login]")) {element.attr("value", "************");}if (element.attr("name").equals("user[password]")) {e.attr("value", "******");}if (element.attr("name").length() > 0) {datas.put(e.attr("name"), e.attr("value"));}
}

USER_AGENT等信息都在这里面:

我们可以打印一下datas:

{user[dymatice_code]=unknown, utf8=?, commit=登录 Login, user[login]=马赛克, user[password]=马赛克, authenticity_token=+BD3FgRXj+LsvgUpS81EKyU7SOF1B6eshSzfo3aMOSHD3LoMsx8ZP85vWNbm1PbPJGbgJqHVbFkTvHuSzDwI8A==}

  • 第二步就是提交表单信息以及cookies,进行模拟登录:
Connection connection2 = Jsoup.connect("https://webvpn.ncepu.edu.cn/users/sign_in");
connection2.header(USER_AGENT, USER_AGENT_VALUE);
Response response = connection2.ignoreContentType(true).followRedirects(true).method(Method.POST).data(datas).cookies(res.cookies()).execute();
  • 最后一步:打印一下获得的html以及获得的cookies:
System.out.println(response.body());
Map<String, String> map = response.cookies();
for (String s : map.keySet()) {System.out.println(s + " : " + map.get(s));
}

完整代码:

package EDM;import java.util.HashMap;
import java.util.List;
import java.util.Map;import org.jsoup.Connection;
import org.jsoup.Connection.Method;
import org.jsoup.Connection.Response;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;/** * @ClassName: login_final* @description: JSoup_Login* @author: KI* @Date: 2020年8月22日 下午1:16:07*/public class Login_Test {public static void main(String[] args) throws Exception {Connection connection = Jsoup.connect("https://webvpn.ncepu.edu.cn/users/sign_in");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()); List<Element> elements = d.select("form");Map<String, String> datas = new HashMap<>();for (Element element : elements.get(0).getAllElements()) {// 设置用户名,这里不是login而是user[login]if (element.attr("name").equals("user[login]")) {element.attr("value", "************");}if (element.attr("name").equals("user[password]")) {element.attr("value", "******");}if (element.attr("name").length() > 0) {datas.put(element.attr("name"), element.attr("value"));}}//System.out.println(datas);Connection connection2 = Jsoup.connect("https://webvpn.ncepu.edu.cn/users/sign_in");connection2.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 response = connection2.ignoreContentType(true).followRedirects(true).method(Method.POST).data(datas).cookies(res.cookies()).execute();//showSystem.out.println(response.body());Map<String, String> map = response.cookies();for (String s : map.keySet()) {System.out.println(s + " : " + map.get(s));}  }
}

JSoup模拟登录网站(以校园内网为例)相关推荐

  1. JSoup模拟登录新版正方教务系统(内网-教务系统)获取信息过程详解

    新版正方教务系统登录界面: 目录 一.需求分析 二.模拟登录内网 三.模拟登录教务系统 四.爬取成绩和课表信息 参考文章 一.需求分析   需要访问教务系统,爬取出课表成绩等信息,并在自己所写的APP ...

  2. 【CURL】模拟登录网站并获取用户信息

    模拟登录网站并获取用户信息 前言 这次来做的是通过代码的方式,模拟登录秒拍官网,获取登录用户的信息. 前后端分离 本文的标题是CURL,传统的网站是PHP代码直接渲染项目视图,通过表单提交到控制器直接 ...

  3. 【环境配置】反向SSH——家中电脑连接校园内网服务器

    1. 需求描述 1.1 具体情境 实验室有一台校园内网GPU服务器,校园内网的特点是只允许内网机器主动访问外网机器,而不允许外网机器主动访问内网机器. 现在需要使用家中的电脑(无公网IP的机器,其可能 ...

  4. 在校外如何安全访问校园内网资源?快解析内网穿透

    现如今很多高校选择利用信息化手段实施网络教学,通过在线直播课堂.网络点播教学.在线辅导答疑等形式丰富教学形式,使学生学习时间更为自由.便利.但很多时候以用校园内网为前提,在校外如何安全访问校园内网资源 ...

  5. 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 1-8

    系列文章 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 1-8 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 2-8 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可 ...

  6. 按键 使用WinHttp实现POST方式用户模拟登录网站

    引言 这篇文章是我以前在一个论坛里写的,今天把这篇文章转移到这里. 文章主要介绍了如何模拟一个网站的登录. 这里使用的辅助工具是按键精灵,编程语言类似于VB. 实现步骤 第一步,获取登录地址 打开登录 ...

  7. 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 8-8

    系列文章 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 1-8 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 2-8 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可 ...

  8. 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 4-8

    系列文章 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 1-8 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 2-8 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可 ...

  9. 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 6-8

    系列文章 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 1-8 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 2-8 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可 ...

最新文章

  1. 配置 Spring Batch 批处理失败重试
  2. Android开发日常笔记
  3. 图片上传之后清空_OSS文件上传及OSS与ODPS之间数据连通
  4. VSTO之旅系列(三):自定义Excel UI
  5. Flink官网自学笔记
  6. 【Python爬虫】用CSS 选择器提取网页数据
  7. 单行溢出文本显示省略号的方法(兼容IE FF)
  8. 基于docker搭建zookeeper集群、kafka集群(多台真机之间的集群)
  9. html页面图片翻转特效代码,如何使用css实现翻转图片的效果(附代码)
  10. Linux命令学习笔记之 network NetworkManager
  11. 什么是jsp,什么是Servlet?jsp 和Servlet 有什么区别
  12. 2020-2021 年度广东省职业院校学生专业技能大赛网络空间安全赛项竞赛规程
  13. UNI-APP_微信授权失败 微信授权第一次失败,需要授权两次才能成功
  14. 2020年4月,全国程序员平均工资14249元
  15. 微软中国2023校招【内推】全面开启!
  16. Android流式布局控件
  17. java内存图解_java内存模型及GC原理 和 图解JVM在内存中申请对象及垃圾回收流程...
  18. 2021年武汉大学MPA考研复试真题分享
  19. python去掉字典重复项_从字典列表中删除重复项python
  20. 在服务器上一按l键自动退出,利用 SysRq 键排除和诊断系统故障

热门文章

  1. tp5.1使用composer安装
  2. 有趣的8086汇编小程序
  3. CCNA实验三十八 ZFW(区域防火墙)
  4. 超简单定制一个Notes库专门设置和存储用户头像
  5. 访问 IIS 元数据库失败
  6. Process finished with exit code -1073741571 (0xC00000FD)的解决方案
  7. Acrel-7000企业能源管控平台在浙江春风动力股份有限公司的应用
  8. Java小农养成记第九天
  9. 读完《财务自由之路》前半部分后的一些想法
  10. 非沪籍女生约辩异地高考沦为骂战 无疾而终