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. windows 下 MySql5.6主从复制

    说明: 1.MySql 版本5.6 2.本例中使用的主从服务器ip分别为:192.168.120.211:192.168.120.209 一.配置master服务器 1.配置 在my.ini中[mys ...

  2. phpcms v9 所有当前栏目信息标签

    PHPCMS v9 很多时候在内容页下不关是调用内容页的信息,还会调用当前栏目的相关信息.下面做总结,方便大家找到在内容页想调用的东西当前栏目id:                       {$c ...

  3. jquery.nestable.min.js可拖动标签

    主容器为一个叫div的classname为dd的东西. 只要对这个主容器进行捕获加上一个方法 nestable就可以了. 可以给的属性为​​ serialize   直接以字符串的形式给入,意思就是按 ...

  4. 转:Java中String与byte[]的转换

    原文地址:http://blog.csdn.net/llwan/article/details/7567906 String s = "fs123fdsa";//String变量 ...

  5. 记 Install VNC On RaspberryOS During 创新实训 自然语言交流系统

    树莓派初始化设置并安装VNC SSH上去之后第一件事就是更新debian: sudo apt-get update, 升级完成后重启一下; 在SSH终端输入sudo raspi-config, 这里需 ...

  6. 访问网站出现EOF

    HTTP/0.0 503 Service Unavailable Date: Tuesday, 18-Apr-17 10:29:46 CST Keep-Alive: timeout=38 EOF 今天 ...

  7. 安卓横竖屏切换时activity的生命周期

    关于Activity横竖屏切换的声明周期变化: 1.新建一个Activity并把各个生命周期打印出来 2.运行Activity,得到如下信息 onCreate-->onStart-->on ...

  8. Mybatis系列(四):Mybatis缓存

    一.MyBatis缓存介绍 MyBatis 提供了一级缓存和二级缓存的支持        1. 一级缓存: 默认开启,基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Se ...

  9. e801. 创建一个JProgressBar组件

    A progress bar is used to visually indicate how much a task has been progressed. A progress bar can ...

  10. 弹出输入框后,将listview内容遮住,解决方案

    转自http://blog.csdn.net/silence_cdsn/article/details/7987063 更改listview的布局属性 之前的布局: <ListView andr ...