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模拟登陆合肥工业大学信息门户相关推荐

  1. 利用selenium+chrome模拟登陆合工大信息门户并进行自动填写测评

    最近学校要填写对于老师的评教,不填写的就无法进行下周的选课∑^)/ 我这么懒,自然不想一个一个点进去填写,想到最近在学爬虫,干脆写一个爬虫帮我弄算了 ╭~~~╮ (o~.~o) 首先打开我们学校的信息 ...

  2. Jsoup 模拟登陆

    楔子 之前用JSOUP 模拟登陆 签到 获取积分(只需要 用户密码即可登陆的情况). 好奇 Jsoup 模拟 浏览器访问 ,他是如何保持连接状态的.( 比如 传统 应用依靠session 判断是否登陆 ...

  3. 合肥工业大学信息隐藏实验报告

    ✅作者简介:CSDN内容合伙人.信息安全专业在校大学生

  4. 网络爬虫模拟登陆获取数据并解析实战(二)

    本文为原创博客,仅供学习使用.未经本人允许禁止复制下来,上传到百度文库等平台. 目录 分析要获取的数据 程序的结构 构建封装数据的model 模拟登陆程序并解析数据 结果展示 分析要获取的数据 下面继 ...

  5. python2实现模拟登陆UESTC信息门户

    python2实现模拟登陆UESTC信息门户 手动登陆查看post的数据包信息 打开UESTC信息门户 网页url为http://idas.uestc.edu.cn/authserver/logins ...

  6. Jsoup实现java模拟登陆

    Jsoup实现java模拟登陆 1:如何获取cookies. 1.1:由于需要登录,故先模拟登陆时的那一个<form>,这里用map来装载变量名称,变量值. Map<String, ...

  7. 模拟登陆新版正方教务管理系统【可以获取学生基本/课表信息】

    写在前面 博主登陆现在还可以正常使用,但是后面登陆成功,获取信息啥的有问题 登陆还是按照学长的来,模拟登陆新版正方教务管理系统 开始 学校教务系统改版,我直接copy博主代码获取学籍那里一直是获取到的 ...

  8. 湖南工业大学教务系统爬虫(模拟登陆篇)

    湖南工业大学教务系统爬虫(模拟登陆篇) 之前写了一个教务系统的爬虫程序,可以根据用户要求爬取任何一部分的数据,也可以模拟提交数据,可能这也是部分工大计算机学生比较感兴趣的,所以今天就在这分享一下整个的 ...

  9. 微机原理与接口技术模拟试题微型计算机中主要包括,合肥工业大学微机原理与接口技术模拟试题...

    合肥工业大学微机原理与接口技术模拟试题 (48页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 合肥工业大学微机原理与接口技术模拟试题 微 ...

  10. python github登陆_用Python模拟登陆GitHub并获取信息

    最近在研究如何对搜狗搜索公众号文章进行爬取,由于需要用到Cookies,所以这回先了解下Cookies的相关知识. 搜狗的反爬有点厉害,即使我用了高匿代理,它还是会提醒我IP访问过于频繁,然后跳转验证 ...

最新文章

  1. openstack nova 源码解析 — Nova API 执行过程从(novaclient到Action)
  2. 都在说微服务,那么微服务的反模式和陷阱是什么(一)
  3. 第六天2017/04/11(1:结构体链表基础和相关经典操作)
  4. 细品慢酌QuickTest关键视图(5)脚本调试
  5. centos6.2 64安装mysql_centos6.2 64bit安装mysql+php
  6. Java 冒泡排序的实现
  7. 搭建分布式键值对文件系统FastDFS
  8. 《R语言数据挖掘:实用项目解析》——1.11 apply原理
  9. Jupyter Notebook——夏侯南溪常用的快捷键
  10. jboss7.1.0配置数据库(mysql)
  11. Tsinsen-A1103 ====单循环赛制====固定轮转法。。
  12. Java数组、集合、散列表常见算法浅析
  13. AUTOCAD——线宽设置
  14. 音频压缩编码技术(一)—有损压缩
  15. 阿里云商标智能注册申请图文教程(亲踩坑)
  16. 鸿蒙音频低延迟,鸿蒙OS 音频播放开发指导
  17. 声网传输层协议 AUT 的总结与展望丨Dev for Dev 专栏
  18. 非对称加密算法——RSA
  19. 2021赤峰市地区高考成绩排名查询,2021年赤峰高考状元是谁分数多少分,历年赤峰高考状元名单...
  20. SecureCRT的设置

热门文章

  1. it is dying gasp packet 说明
  2. Qt写的json代码生成器
  3. PayPal社交游戏及移动娱乐产业的海外商机
  4. 香橙派PC 2(H5)配置备忘录
  5. 计算机网络总线型结构优 缺点,总线型拓扑结构优缺点是什么
  6. 基于主机的入侵检测优缺点_[转]基于网络和主机的入侵检测比较,各自优缺点...
  7. 满足国六标准通用型故障诊断仪:Q-OBD
  8. 大众-OBD-接口位置
  9. 逍遥书生服务器啥时候维护完毕,2020年8月18日定期维护解读
  10. 牛客网--15894--WWX的520