package com.entrym.crawler.test;

 import java.util.HashMap;
import java.util.Map; import org.apache.commons.lang.StringUtils;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import com.entrym.crawler.constans.CommonConstants;
import com.entrym.crawler.util.CommonUtil;
import com.entrym.crawler.util.PowerHttpClient;
import com.entrym.crawler.util.verifyCode.Captcha; /**
* 央行征信报告获取爬虫
* @ClassName: PbccrcCrawler
* @Description: TODO(这里用一句话描述这个类的作用)
*
*/
public class PbccrcCrawler
{ private static Logger logger = LoggerFactory.getLogger(PbccrcCrawler.class);
private static String loginUrl = "https://ipcrs.pbccrc.org.cn/page/login/loginreg.jsp";
private static String loginPostUrl = "https://ipcrs.pbccrc.org.cn/login.do";
private static String welcomeUrl = "https://ipcrs.pbccrc.org.cn/welcome.do";
private static String reportUrl = "https://ipcrs.pbccrc.org.cn/reportAction.do";
private static String summaryReportUrl = "https://ipcrs.pbccrc.org.cn/summaryReport.do";
private static String simpleReportUrl = "https://ipcrs.pbccrc.org.cn/simpleReport.do"; private static String host = "ipcrs.pbccrc.org.cn";
private static String userAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"; private PowerHttpClient powerHttpClient;
private boolean isLogin=false;//登录状态
private boolean report0=false;//个人信用信息提示
private boolean report1=false;//个人信用信息概要
private boolean report2=false;//个人信用报告 private String task_id=null; /**
* 登录
* @Title: login
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param @param loginname
* @param @param password 参数
* @return void 返回类型
* @throws
*/
public String login(String loginname ,String password)
{
try
{
powerHttpClient = new PowerHttpClient();
//打开首页
String html = powerHttpClient.getToString(loginUrl);
logger.debug("----首页---",html); Document doc = Jsoup.parse(html);
String token = doc.select("input[name=org.apache.struts.taglib.html.TOKEN]").val();
String method = doc.select("input[name=method]").val();
String date = doc.select("input[name=date]").val();
String imgUrl = doc.select("img[id=imgrc]").attr("src");
String imgData = "";
if (StringUtils.isNotBlank(imgUrl))
{
//处理验证码
imgUrl = "https://ipcrs.pbccrc.org.cn"+imgUrl;
logger.info(task_id+"Captcha imgUrl = {}",imgUrl);
HttpGet httpGet = powerHttpClient.getHttpGet(imgUrl);
httpGet.addHeader("Host", host);
httpGet.addHeader("User-Agent", userAgent);
httpGet.addHeader("Referer", loginUrl); byte[] imgByte = powerHttpClient.getToByteArray(httpGet);
Captcha captcha = new Captcha("img");
CommonUtil.writeByteArrayToFile(imgByte, CommonConstants.RUNTIME_TEMPIMG_FOLDER+captcha.getFilePath());
System.out.println(CommonConstants.RUNTIME_TEMPIMG_FOLDER+captcha.getFilePath());
imgData = CommonUtil.consoleScanner();
} //提交登录
Map<String, String> map = new HashMap<>();
map.put("org.apache.struts.taglib.html.TOKEN", token);
map.put("method", method);
map.put("date", date);
map.put("_@IMGRC@_", imgData);
map.put("loginname", loginname);
map.put("password", password); HttpPost httpPost = powerHttpClient.getHttpPost(loginPostUrl);
httpPost.addHeader("Host", host);
httpPost.addHeader("User-Agent", userAgent);
httpPost.addHeader("Referer", loginUrl);
String html1 = powerHttpClient.postWithMap(map,httpPost);
logger.debug("----提交登录结果---",html1); HttpGet httpGet1 = powerHttpClient.getHttpGet(welcomeUrl);
httpGet1.addHeader("Host", host);
httpGet1.addHeader("User-Agent", userAgent);
httpGet1.addHeader("Referer", loginPostUrl);
String html2 = powerHttpClient.getToString(httpGet1, "");
logger.info("----欢迎页面---{}",html2);
parseLogin(html2);
return html2;
} catch (Exception e) {
logger.error(task_id+"---登录出现异常:{}",CommonUtil.getExceptionTrace(e));
}
return null;
} /**
* 解析登录和报告状态
* @Title: parseLogin
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param @param html 参数
* @return void 返回类型
* @throws
*/
private void parseLogin(String html)
{
if (StringUtils.isBlank(html)) {
return;
}
if (html.contains("欢迎登录个人信用信息服务平台")) {
isLogin = true;
logger.info(task_id+"----恭喜,登录成功---");
} } public static void main(String[] args) {
PbccrcCrawler pbccrcCrawler = new PbccrcCrawler();
pbccrcCrawler.login("88888", "9999999");
} }

java登录央行征信网站的更多相关文章

  1. linux环境下pytesseract的安装和央行征信中心的登录验证码识别

    首先是安装,我参考的是这个 http://blog.csdn.net/xinghun_4/article/details/47860645 我是centos,使用yum yum install pyt ...

  2. JAVA发送手机短信

    <p><span>JAVA发送手机短信,流传有几种方法:(1)使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注册 ...

  3. 基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写

    基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写 专业程序代写服务(QQ:928900200) 随着社会的进步.服务行业的服务水平不断发展与提高,宾馆.酒店.旅游等服务行业的信息量和工作 ...

  4. 大数据征信的应用和启示:ZestFinance的基于大数据的信用评估技术

    http://www.d1net.com/bigdata/news/325426.html 2014年11月,本文作者有机会和ZestFinance的创始人和首席执行官梅里尔(Douglas C.Me ...

  5. java实现发送短信验证码

    java实现短信验证码发送 由于我们使用第三方平台进行验证码的发送,所以首先,我们要在一个平台进行注册. 在这里我选择是秒嘀科技,因为新人注册会赠送十元,足够测试使用了. 注册完成后,我们需要获取自己 ...

  6. C# 利用 HttpWebRequest 和 HttpWebResponse 模拟登录有验证码的网站

    原文:C# 利用 HttpWebRequest 和 HttpWebResponse 模拟登录有验证码的网站 我们经常会碰到需要程序模拟登录一个网站,那如果网站需要填写验证码的要怎样模拟登录呢?这篇文章 ...

  7. 通过winform+模拟登录实现快速一键登录到人才招聘网站

    之前为了便于人事部门招聘登录网站更简洁高效,免去每天频繁输网址.用户名.密码等相关登录信息,特基于winform+HttpWebRequest实现模拟请求登录,最终达到一键登录到招聘网站后台的效果. ...

  8. php使用curl模拟登录带验证码的网站[开发篇]

    需求是这样的,需要登录带验证码的网站,获取数据,但是不可能人为一直去记录数据,想通过自动采集的方式进行,如下是试验出来的结果代码!有需要的可以参考下! <?php namespace Home\ ...

  9. php使用curl模拟登录带验证码的网站

    需求是这样的,需要登录带验证码的网站,获取数据,但是不可能人为一直去记录数据,想通过自动采集的方式进行,如下是试验出来的结果代码!有需要的可以参考下! <?php namespace Home\ ...

随机推荐

  1. [转载]番茄时间管理法(Pomodoro Technique):一个番茄是如何让你工作更有效率的

    如果你经常读一些关于提高工作效率或时间管理类的博客,一定听说过番茄时间管理法(Pomodoro Technique).这是一种极好的帮助你集中注意力.获得更高工作效率的方法. 基本上,它的实施方法是这 ...

  2. wysiwyg加ckeditor加 代码高亮

    1.所需文件 drupal 版本:7.28 Wysiwyg- 7.x-2.2 (模块) 下载地址:http://drupal.org/project/wysiwyg Syntax Highlighte ...

  3. 《开发专家 Visual C 开发入行真功夫》笔记

    智能感知的功能,输入 is 后,同时按下Alt + →这两个键就出现了供选择变量.方法.宏等的列表,继续输入 in 后,isInit就出来了. stdafx.h预编译头文件,.h应用程序主头文件,do ...

  4. jPlayer 视频播放

    在网页中播放MP4格式视频代码:显示效果如下图,缺陷是不能自动适应页面大小,只能全屏 <!DOCTYPE html> <html> <head> <meta ...

  5. C#里的SubString和Convert.ToDateTime

    1.C#里的SubString String.SubString(int   index,int   length) index:开始位置,从0开始 length:你要取的子字符串的长度 2.C#语言 ...

  6. sparkr跑通函数 包含排序

    spark1.4.0的sparkR的思路:用Spark从大数据集中抽取小数据(sparkR的DataFrame),然后到R里分析(DataFrame). 这两个DataFrame是不同的,前者是分布式 ...

  7. css3动画属性系列之transform细讲scale缩放

    下面我们从3个方面开始介绍: 1.scale(x,y) 对元素进行缩放 X表示水平方向缩放的倍数 | Y表示垂直方向的缩放倍数 Y是一个可选参数,没有设置的话,则表示X,Y两个方向的缩放倍数是一样的. ...

  8. 使用VS2012生成DLL文件(1)

    文章转载自:1. http://blog.sina.com.cn/s/blog_45bcb4c3010140b3.html 一:生成DLL 1:创建DLL工程 文件->新建->项目-> ...

  9. 1、Maven安装教程详解

    一.准备工作  1.确定电脑上已经成功安装jdk7.0以上版本                 2.win10操作系统                 3.maven安装包            下载 ...

  10. 使用xshell5 从CentOS主机download资料

    需要安装一个软件,步骤如下: 第一步,找出软件的完整名称: 第二步,安装该软件: 第三步,执行sz命令. 参考下面的执行过程 [root@mylinux ~]# yum provides lrzsz* ...