jsoup模拟登陆合肥工业大学信息门户
jsoup模拟登陆合肥工业大学信息门户
- 一 、login.portal文件
- 二、userPasswordValidate.portal文件
- 三、index.portal文件
- 四、代码
网站:合肥工业大学信息门户登录界面
打开F12调试控制台,登录成功后,发现登陆过程一共跳转了两次,请求了两个文件(不包括原来登陆界面的文件)
一 、login.portal文件
- 注意这是带验证码的登录。
- 这个文件共返回两个cookie,JSESSIONID和cookie,但其实这两个cookie是验证码返回的,主要用来表示验证码,查看验证码图片验证码图片链接,可以看到访问时返回这两个cookie。
- 我们要想模拟登陆成功,就必须获取这两个cookie,同时要能够获取验证码。
- 这里,我使用的是tess4j,来识别验证码图片上的字母,我使用的是maven,只需添加依赖`
<dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><version>3.2.1</version>
</dependency>
- tess4j同时需要安装训练集,因为验证码为字母数字,我使用的是英文的eng.traineddata下载链接,
放在tessdata目录(这个目录最好放在项目根目录下,这样就不需要额外的配置)下,具体的使用,下面会有代码。
二、userPasswordValidate.portal文件
- 校验用户名和密码是否正确,如果正确,就返回key为iPlanetDirectoryPro的cookie。
- 可以看到请求这个文件需传入JSESSIONID和cookie两个cookie,而且需要携带下面这些数据。
三、index.portal文件
- 需要传入JSESSIONID,cookie,iPlanetDirectoryPro三个cookie。
四、代码
完整代码 完整代码链接
/* 保存cookie值 */Map<String, String> cookies = new HashMap<>();/* 加载验证码图片,获取cookie,并解析验证码 */Connection connection = Jsoup.connect("http://my.hfut.edu.cn/captchaGenerate.portal?s=0.2679940000310119");/* 构造请求头 */connection.header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3");connection.header("Accept-Encoding", "gzip, deflate");connection.header("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8");connection.header("Cache-Control", "no-cache");connection.header("Connection", "keep-alive");connection.header("Host", "my.hfut.edu.cn");connection.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like " +"Gecko) Chrome/76.0.3809.100 Safari/537.36");Connection.Response response = null;/* 验证码值 */String captcha = "";try {/* 获取验证码图片必须忽略请求内容 */response = connection.ignoreContentType(true).method(Connection.Method.GET).execute();/* 将获取的cookie储存在上面定义的哈希表中 */cookies.putAll(response.cookies());/* 将图片进行转换成bufferedImage* 利用tesseract进行图片的解析* */ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(response.bodyAsBytes());BufferedImage bufferedImage = ImageIO.read(byteArrayInputStream);Tesseract tesseract = new Tesseract();captcha = tesseract.doOCR(bufferedImage).substring(0, 4);} catch (Exception e) {e.printStackTrace();}/* 输入你的用户名 */String username = "xxxxxxxxxx";/* 输入你的密码 */String password = "xxxxxx";/* 数据 */Map<String, String> datas = new HashMap<>();datas.put("Login.Token1", username);datas.put("Login.Token2", password);datas.put("captchaField", captcha);datas.put("goto", "http://my.hfut.edu.cn/loginSuccess.portal");datas.put("gotoOnFail", "http://my.hfut.edu.cn/loginFailure.portal");/* 访问验证用户名和密码的界面 */Connection connection1 = Jsoup.connect("http://my.hfut.edu.cn/userPasswordValidate.portal");connection1.header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng," +"*/*;q=0.8,application/signed-exchange;v=b3");connection1.header("Accept-Encoding", "gzip, deflate");connection1.header("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8");connection1.header("Cache-Control", "no-cache");connection1.header("Connection", "keep-alive");connection1.header("Content-Type", "application/x-www-form-urlencoded");connection1.header("Referer", "http://my.hfut.edu.cn/index.portal");connection1.header("Host", "my.hfut.edu.cn");connection1.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like " +"Gecko) Chrome/76.0.3809.100 Safari/537.36");/* 携带cookie */connection1.cookies(cookies);/* 携带数据 */connection1.data(datas);Connection.Response response1 = null;try {response1 = connection1.method(Connection.Method.POST).execute();cookies.putAll(response1.cookies());} catch (Exception e) {e.printStackTrace();}/* 解析登录成功后的界面 */Connection connection2 = Jsoup.connect("http://my.hfut.edu.cn/index.portal");connection2.header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng," +"*/*;q=0.8,application/signed-exchange;v=b3");connection2.header("Accept-Encoding", "gzip, deflate");connection2.header("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8");connection2.header("Cache-Control", "no-cache");connection2.header("Connection", "keep-alive");connection2.header("Content-Type", "application/x-www-form-urlencoded");connection2.header("Referer", "http://my.hfut.edu.cn/index.portal");connection2.header("Host", "my.hfut.edu.cn");connection2.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like " +"Gecko) Chrome/76.0.3809.100 Safari/537.36");/* 携带cookie */connection2.cookies(cookies);Connection.Response response2 = null;try {response2 = connection2.method(Connection.Method.GET).execute();} catch (Exception e) {e.printStackTrace();}
jsoup模拟登陆合肥工业大学信息门户相关推荐
- 利用selenium+chrome模拟登陆合工大信息门户并进行自动填写测评
最近学校要填写对于老师的评教,不填写的就无法进行下周的选课∑^)/ 我这么懒,自然不想一个一个点进去填写,想到最近在学爬虫,干脆写一个爬虫帮我弄算了 ╭~~~╮ (o~.~o) 首先打开我们学校的信息 ...
- Jsoup 模拟登陆
楔子 之前用JSOUP 模拟登陆 签到 获取积分(只需要 用户密码即可登陆的情况). 好奇 Jsoup 模拟 浏览器访问 ,他是如何保持连接状态的.( 比如 传统 应用依靠session 判断是否登陆 ...
- 合肥工业大学信息隐藏实验报告
✅作者简介:CSDN内容合伙人.信息安全专业在校大学生
- 网络爬虫模拟登陆获取数据并解析实战(二)
本文为原创博客,仅供学习使用.未经本人允许禁止复制下来,上传到百度文库等平台. 目录 分析要获取的数据 程序的结构 构建封装数据的model 模拟登陆程序并解析数据 结果展示 分析要获取的数据 下面继 ...
- python2实现模拟登陆UESTC信息门户
python2实现模拟登陆UESTC信息门户 手动登陆查看post的数据包信息 打开UESTC信息门户 网页url为http://idas.uestc.edu.cn/authserver/logins ...
- Jsoup实现java模拟登陆
Jsoup实现java模拟登陆 1:如何获取cookies. 1.1:由于需要登录,故先模拟登陆时的那一个<form>,这里用map来装载变量名称,变量值. Map<String, ...
- 模拟登陆新版正方教务管理系统【可以获取学生基本/课表信息】
写在前面 博主登陆现在还可以正常使用,但是后面登陆成功,获取信息啥的有问题 登陆还是按照学长的来,模拟登陆新版正方教务管理系统 开始 学校教务系统改版,我直接copy博主代码获取学籍那里一直是获取到的 ...
- 湖南工业大学教务系统爬虫(模拟登陆篇)
湖南工业大学教务系统爬虫(模拟登陆篇) 之前写了一个教务系统的爬虫程序,可以根据用户要求爬取任何一部分的数据,也可以模拟提交数据,可能这也是部分工大计算机学生比较感兴趣的,所以今天就在这分享一下整个的 ...
- 微机原理与接口技术模拟试题微型计算机中主要包括,合肥工业大学微机原理与接口技术模拟试题...
合肥工业大学微机原理与接口技术模拟试题 (48页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 合肥工业大学微机原理与接口技术模拟试题 微 ...
- python github登陆_用Python模拟登陆GitHub并获取信息
最近在研究如何对搜狗搜索公众号文章进行爬取,由于需要用到Cookies,所以这回先了解下Cookies的相关知识. 搜狗的反爬有点厉害,即使我用了高匿代理,它还是会提醒我IP访问过于频繁,然后跳转验证 ...
最新文章
- openstack nova 源码解析 — Nova API 执行过程从(novaclient到Action)
- 都在说微服务,那么微服务的反模式和陷阱是什么(一)
- 第六天2017/04/11(1:结构体链表基础和相关经典操作)
- 细品慢酌QuickTest关键视图(5)脚本调试
- centos6.2 64安装mysql_centos6.2 64bit安装mysql+php
- Java 冒泡排序的实现
- 搭建分布式键值对文件系统FastDFS
- 《R语言数据挖掘:实用项目解析》——1.11 apply原理
- Jupyter Notebook——夏侯南溪常用的快捷键
- jboss7.1.0配置数据库(mysql)
- Tsinsen-A1103 ====单循环赛制====固定轮转法。。
- Java数组、集合、散列表常见算法浅析
- AUTOCAD——线宽设置
- 音频压缩编码技术(一)—有损压缩
- 阿里云商标智能注册申请图文教程(亲踩坑)
- 鸿蒙音频低延迟,鸿蒙OS 音频播放开发指导
- 声网传输层协议 AUT 的总结与展望丨Dev for Dev 专栏
- 非对称加密算法——RSA
- 2021赤峰市地区高考成绩排名查询,2021年赤峰高考状元是谁分数多少分,历年赤峰高考状元名单...
- SecureCRT的设置