当前位置: 首页 > news >正文

java模拟登陆系统_Java模拟登录系统抓取内容【转载】

1 @Component2 public class Login extendsBaseJobs {3

4 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");5 /**

6 * 获取当月第一天7 *8 *@return

9 */

10 publicString getFirstDayOfMonth() {11 Calendar lastDate =Calendar.getInstance();12 lastDate.set(Calendar.DATE, 1);//设为当前月的1号

13 returnsdf.format(lastDate.getTime());14

15 }16

17 /**

18 * 计算当月最后一天19 *@return

20 */

21 publicString getLastDayOfMonth() {22

23 Calendar lastDate =Calendar.getInstance();24 lastDate.set(Calendar.DATE, 1);//设为当前月的1号

25 lastDate.add(Calendar.MONTH, 1);//加一个月,变为下月的1号

26 lastDate.add(Calendar.DATE, -1);//减去一天,变为当月最后一天

27 returnsdf.format(lastDate.getTime());28

29 }30

31 //测试

32 public static void main(String args[]) throwsException {33 Login l = newLogin();34 l.login();35 }36

37

38 private static CookieStore cs = newBasicCookieStore();39

40 //利用spring定时器 每天早上10点一刻抓取并发邮件

41 @Scheduled(cron = "0 15 10 ? * *")42 public void login() throwsException {43 DefaultHttpClient httpclient = newDefaultHttpClient();44

45 //创建一个本地上下文信息

46 HttpContext localContext = newBasicHttpContext();47 //在本地上下问中绑定一个本地存储

48 localContext.setAttribute(ClientContext.COOKIE_STORE, cs);49 //目标地址

50 HttpPost httppost = newHttpPost(51 "http://***/userLogin.do");52 //传参

53 StringEntity reqEntity = newStringEntity(54 "userName=jianancun&password=123456&randNum=565656");55 //设置类型

56 reqEntity.setContentType("application/x-www-form-urlencoded");57 //设置请求的数据

58 httppost.setEntity(reqEntity);59 //执行

60 HttpResponse response =httpclient.execute(httppost);61 //取得所有头内容

62 Header[] headers =response.getAllHeaders();63 for(Header h : headers) {64 String name =h.getName();65 String value =h.getValue();66 System.out.println("header : " + h.getName() + ":" +h.getValue());67 if ("Set-Cookie".equalsIgnoreCase(name)) {68 String[] strs = value.split(";");69 for(String str : strs) {70 String[] cookies = str.split("=");71 //输出cookie名称及标题72 //System.out.println("=============== : " + cookies[0] + ":" + cookies[1]);

73 cs.addCookie(new BasicClientCookie(cookies[0], cookies[1]));74 }75 cs.addCookie(new BasicClientCookie("userId", "8888"));76 cs.addCookie(new BasicClientCookie("userName", "jiannancun"));77 cs.addCookie(new BasicClientCookie("state", "0"));78 cs.addCookie(new BasicClientCookie("iAdmin", "0"));79 cs.addCookie(new BasicClientCookie("depCode", "0"));80 }81 }82 HttpEntity entity =response.getEntity();83 //显示结果

84 BufferedReader reader = new BufferedReader(newInputStreamReader(85 entity.getContent(), "UTF-8"));86 String line = null;87 //返回是否登录成功的内容 忽略

88 while ((line = reader.readLine()) != null) {89 //System.out.println(line);

90 }91

92

93

94 //可以添加多个用户

95 String jlc[] ={URLEncoder.encode("贱男春"),"jiannancun@*.cn","888888"};96 List list = new ArrayList();97 list.add(jlc);98

99 for(String []u:list){100 //查询本月考勤内容

101 String logPath = "http://**.cn/timeCard.jsp?nickName="+u[0]+"&eplTimeCard="

102 +u[2]+"&begDate="+getFirstDayOfMonth()+"&endDate="+getLastDayOfMonth();103 String content=getContent(logPath);104 Document doc =Jsoup.parse(content);105 Elements tds = doc.select("table td");106 int i =0;107 //返回的内容

108 String html =""; ;109 for(Element td : tds) {110 //取前25行内容 前25行内容显示的是昨天和今天的考勤记录

111 if(i<25){112 html+=td.text().replace(u[2],URLDecoder.decode(u[0]))+"
";113 } else break;114

115 i++;116 }117 Map map = new HashMap();118 map.put("mailTo",u[1]);119 map.put("mailTitle","考勤提醒");120 map.put("messageBody",html);121 //发送邮件122 //sendMail(map);

123 }124 }125 /**

126 * Function: 请求地址并返回页面内容127 *@authorJNC128 *@paramurl129 *@return

130 *@throwsException131 */

132 private String getContent(String url) throwsException {133 DefaultHttpClient httpclient = newDefaultHttpClient();134 String cookieStr = "";135 List list =cs.getCookies();136 for(Cookie cookie : list) {137 cookieStr += cookie.getName() + "=" + cookie.getValue() + ";";138 }139 //请求目标地址并带上cookie

140 HttpGet httpget = newHttpGet(url);141 httpget.setHeader("Cookie", cookieStr);142 //执行

143 HttpResponse response =httpclient.execute(httpget);144 HttpEntity entity =response.getEntity();145 String resultStr ="";146 BufferedReader reader = new BufferedReader(newInputStreamReader(147 entity.getContent(), "UTF-8"));148 String line = null;149 while ((line = reader.readLine()) != null) {150 resultStr+=line;151 }152 returnresultStr;153 }154 }

相关文章:

  • java httppost https_JAVA利用HttpClient进行POST请求(HTTPS)
  • acs java_ACS 4.2 安装图解
  • java nio nio2 区别_BIO、NIO与NIO.2的区别与联系
  • java 字节码分析_java字节码文件分析
  • java的反射注解_Java中的注解和反射
  • mfc将mysql查询结果取出_笔记-mysql 导出查询结果
  • mysql数据库中的各种约束_数据库Mysql的学习(三)-各种约束
  • java linux磁盘_java获取linux的磁盘空间,磁盘利用率
  • eclipse java转maven_关于在eclipse中使用Maven创建项目转换成javaweb步骤
  • uwp连接mysql数据库_[UWP小白日记-11]在UWP中使用Entity Framework Core(Entity Framework 7)操作SQLite数据库(一)...
  • centos apache php mysql zend_Centos6.5+php+apache+mysql+zendguardloader环境安装
  • java =1 ==1_为什么在Java中-1右移1 = -1?
  • java commons-pool_apache commons-pool的配置参数
  • JAVA CP936编码转utf8_Java编码转换 - querychinesesto的个人空间 - OSCHINA - 中文开源技术交流社区...
  • java hssffont_Java HSSFFont.setBoldweight方法代碼示例
  • Linux链接文件
  • 成为一名优秀的Developer的书单
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 构建二叉树进行数值数组的去重及优化
  • 机器学习 vs. 深度学习
  • 记一次用 NodeJs 实现模拟登录的思路
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 双管齐下,VMware的容器新战略
  • 译自由幺半群
  • 用 Swift 编写面向协议的视图
  • #define,static,const,三种常量的区别
  • #传输# #传输数据判断#
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (C++20) consteval立即函数
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (C语言)球球大作战
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (剑指Offer)面试题34:丑数
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (转)Android学习笔记 --- android任务栈和启动模式
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .Net Redis的秒杀Dome和异步执行
  • .NET框架设计—常被忽视的C#设计技巧
  • .NET下的多线程编程—1-线程机制概述
  • .NET应用架构设计:原则、模式与实践 目录预览
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • [22]. 括号生成
  • [Asp.net mvc]国际化
  • [BUUCTF]-Reverse:reverse3解析
  • [C++从入门到精通] 14.虚函数、纯虚函数和虚析构(virtual)
  • [DevOps云实践] 彻底删除AWS云资源
  • [JS真好玩] 掘金创作者必备: 监控每天是谁取关了你?
  • [LeetCode]-使用特殊算法的题目-2
  • [Machine Learning] 领域适应和迁移学习
  • [Markdown] 02 简单应用 第二弹
  • [OCR]Python 3 下的文字识别CnOCR
  • [one_demo_5]命令行输入输出
  • [Poj 1015] Jury Compromise 解题报告 (完全背包)