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. Maven Tomcat:run 使用tomcat7

    <build> <finalName>service</finalName> <resources> <resource> <dire ...

  2. 【javascript】设为首页——setHome

    原生 js 编写,兼容 ie,火狐和谷歌. 函数如下: function setHome(obj,url){ try{ obj.style.behavior = 'url(#default#homep ...

  3. JavaScript(四):函数

    JavaScript中的函数分为两种:系统函数和自定义函数,这里主要讲解自定义函数. 一.自定义函数 1.语法: 注意: 传入的参数是可选的. 例如: <!DOCTYPE html> &l ...

  4. 解决EasyUi中的DataGrid删除一条记录后,被删除的数据仍处于被选中状态问题

    项目中遇到这么一个问题,在easyui的datagrid中,删除一条记录成功,重新加载datagrid后,去点编辑操作,仍可把之前删除掉的那条记录进行编辑操作,正常情况应该是,删除后再去点击“编辑”, ...

  5. 关于 HTTP GET/POST 请求参数长度最大值的一个理解误区

    1.    Get方法长度限制 Http Get方法提交的数据大小长度并没有限制,HTTP协议规范没有对URL长度进行限制.这个限制是特定的浏览器及服务器对它的限制. 如:IE对URL长度的限制是20 ...

  6. orcale的over的使用

    --------------------------- 建表 --------------------------- create table test_user( id VARCHAR2(12), ...

  7. Java设计模式(22)命令模式(Command模式)

    Command模式是最让我疑惑的一个模式,我在阅读了很多代码后,才感觉隐约掌握其大概原理,我认为理解设计模式最主要是掌握起原理构造,这样才对自己实际编程有指导作用.Command模式实际上不是个很具体 ...

  8. HotSpot JVM常用参数(选项)设置

    本文讨论的选项是针对HotSpot虚拟机的. 1.选项分类及语法 HotspotJVM提供以下三大类选项: 1.1.标准选项 这类选项的功能是很稳定的,在后续版本中也不太会发生变化. 运行java或者 ...

  9. JavaScript世界的一等公民—— 函数

    简介 在很多传统语言(C/C++/Java/C#等)中,函数都是作为一个二等公民存在,你只能用语言的关键字声明一个函数然后调用它,如果需要把函数作为参数传给另一个函数,或是赋值给一个本地变量,又或是作 ...

  10. 【转】]Android实现开机自动运行程序

    有些时候,应用需要在开机时就自动运行,例如某个自动从网上更新内容的后台service.怎样实现开机自动运行的应用?在撰写本文时,联想到高焕堂先生以“Don't call me, I'll call y ...