JSoup模拟登录网站(以校园内网为例)
我们先给出登录界面以及界面的URL:
URL:https://webvpn.ncepu.edu.cn/users/sign_in
主要步骤:
填好用户名以及登录密码,按下F12,并在Elements中搜索action:
可以看到,我们输入的表单数据最终被提交到了"/users/sign_in"里。点击登录,在Network里面找到sign_in,可以看到我们模拟登录需要的各种信息:
开始写代码。
- 第一步主要是获取表单信息以及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模拟登录网站(以校园内网为例)相关推荐
- JSoup模拟登录新版正方教务系统(内网-教务系统)获取信息过程详解
新版正方教务系统登录界面: 目录 一.需求分析 二.模拟登录内网 三.模拟登录教务系统 四.爬取成绩和课表信息 参考文章 一.需求分析 需要访问教务系统,爬取出课表成绩等信息,并在自己所写的APP ...
- 【CURL】模拟登录网站并获取用户信息
模拟登录网站并获取用户信息 前言 这次来做的是通过代码的方式,模拟登录秒拍官网,获取登录用户的信息. 前后端分离 本文的标题是CURL,传统的网站是PHP代码直接渲染项目视图,通过表单提交到控制器直接 ...
- 【环境配置】反向SSH——家中电脑连接校园内网服务器
1. 需求描述 1.1 具体情境 实验室有一台校园内网GPU服务器,校园内网的特点是只允许内网机器主动访问外网机器,而不允许外网机器主动访问内网机器. 现在需要使用家中的电脑(无公网IP的机器,其可能 ...
- 在校外如何安全访问校园内网资源?快解析内网穿透
现如今很多高校选择利用信息化手段实施网络教学,通过在线直播课堂.网络点播教学.在线辅导答疑等形式丰富教学形式,使学生学习时间更为自由.便利.但很多时候以用校园内网为前提,在校外如何安全访问校园内网资源 ...
- 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 1-8
系列文章 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 1-8 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 2-8 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可 ...
- 按键 使用WinHttp实现POST方式用户模拟登录网站
引言 这篇文章是我以前在一个论坛里写的,今天把这篇文章转移到这里. 文章主要介绍了如何模拟一个网站的登录. 这里使用的辅助工具是按键精灵,编程语言类似于VB. 实现步骤 第一步,获取登录地址 打开登录 ...
- 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 8-8
系列文章 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 1-8 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 2-8 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可 ...
- 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 4-8
系列文章 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 1-8 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 2-8 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可 ...
- 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 6-8
系列文章 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 1-8 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 2-8 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可 ...
最新文章
- 配置 Spring Batch 批处理失败重试
- Android开发日常笔记
- 图片上传之后清空_OSS文件上传及OSS与ODPS之间数据连通
- VSTO之旅系列(三):自定义Excel UI
- Flink官网自学笔记
- 【Python爬虫】用CSS 选择器提取网页数据
- 单行溢出文本显示省略号的方法(兼容IE FF)
- 基于docker搭建zookeeper集群、kafka集群(多台真机之间的集群)
- html页面图片翻转特效代码,如何使用css实现翻转图片的效果(附代码)
- Linux命令学习笔记之 network NetworkManager
- 什么是jsp,什么是Servlet?jsp 和Servlet 有什么区别
- 2020-2021 年度广东省职业院校学生专业技能大赛网络空间安全赛项竞赛规程
- UNI-APP_微信授权失败 微信授权第一次失败,需要授权两次才能成功
- 2020年4月,全国程序员平均工资14249元
- 微软中国2023校招【内推】全面开启!
- Android流式布局控件
- java内存图解_java内存模型及GC原理 和 图解JVM在内存中申请对象及垃圾回收流程...
- 2021年武汉大学MPA考研复试真题分享
- python去掉字典重复项_从字典列表中删除重复项python
- 在服务器上一按l键自动退出,利用 SysRq 键排除和诊断系统故障