java登录央行征信网站
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登录央行征信网站的更多相关文章
- linux环境下pytesseract的安装和央行征信中心的登录验证码识别
首先是安装,我参考的是这个 http://blog.csdn.net/xinghun_4/article/details/47860645 我是centos,使用yum yum install pyt ...
- JAVA发送手机短信
<p><span>JAVA发送手机短信,流传有几种方法:(1)使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注册 ...
- 基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写
基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写 专业程序代写服务(QQ:928900200) 随着社会的进步.服务行业的服务水平不断发展与提高,宾馆.酒店.旅游等服务行业的信息量和工作 ...
- 大数据征信的应用和启示:ZestFinance的基于大数据的信用评估技术
http://www.d1net.com/bigdata/news/325426.html 2014年11月,本文作者有机会和ZestFinance的创始人和首席执行官梅里尔(Douglas C.Me ...
- java实现发送短信验证码
java实现短信验证码发送 由于我们使用第三方平台进行验证码的发送,所以首先,我们要在一个平台进行注册. 在这里我选择是秒嘀科技,因为新人注册会赠送十元,足够测试使用了. 注册完成后,我们需要获取自己 ...
- C# 利用 HttpWebRequest 和 HttpWebResponse 模拟登录有验证码的网站
原文:C# 利用 HttpWebRequest 和 HttpWebResponse 模拟登录有验证码的网站 我们经常会碰到需要程序模拟登录一个网站,那如果网站需要填写验证码的要怎样模拟登录呢?这篇文章 ...
- 通过winform+模拟登录实现快速一键登录到人才招聘网站
之前为了便于人事部门招聘登录网站更简洁高效,免去每天频繁输网址.用户名.密码等相关登录信息,特基于winform+HttpWebRequest实现模拟请求登录,最终达到一键登录到招聘网站后台的效果. ...
- php使用curl模拟登录带验证码的网站[开发篇]
需求是这样的,需要登录带验证码的网站,获取数据,但是不可能人为一直去记录数据,想通过自动采集的方式进行,如下是试验出来的结果代码!有需要的可以参考下! <?php namespace Home\ ...
- php使用curl模拟登录带验证码的网站
需求是这样的,需要登录带验证码的网站,获取数据,但是不可能人为一直去记录数据,想通过自动采集的方式进行,如下是试验出来的结果代码!有需要的可以参考下! <?php namespace Home\ ...
随机推荐
- java你可能不知道的事(2)--堆和栈<转>
在java语言的学习和使用当中你可能已经了解或者知道堆和栈,但是你可能没有完全的理解它们.今天我们就一起来学习堆.栈的特点以及它们的区别.认识了这个之后,你可能对java有更深的理解. Java堆内存 ...
- git——从远程库克隆
从远程库克隆 阅读: 248434 上次我们讲了先有本地库,后有远程库的时候,如何关联远程库. 现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆. 首先,登陆GitHub,创建 ...
- ambari删除脚本
#.删除hdp.repo和hdp-util.repo cd /etc/yum.repos.d/ rm -rf hdp* rm -rf HDP* #rm -rf ambari* #.删除安装包 #用yu ...
- 【转】Mac使用apt-get
和Linux系统不同的是,Mac系统默认是不带有apt-get软件包工具的,所以要想在Mac上使用上方便的apt-get就需要自己来安装它. 这里我们需要借助一个强大的工具-fink. 首先我们需要下 ...
- SSD 固态硬盘,Trim指令 ,查看状态、开启、关闭
一说到SSD 固态硬盘,经常会看到Trim指令这个名词,那什么是Trim? Trim是什么? 为了解决硬盘降速的问题,微软联合各大SSD厂商开发了一个新技术——Trim.Trim指令也叫disab ...
- mysql流程函数if之类
表名: salary ———————— userid | salary| ———————— 1 | 1000 2 | 2000 3 | 3000 4 | null ... IF(value, t, f ...
- c++ 常用数据类型,命名规则, 不常有数据类型
1. 常用数据类型 最大值0111111111111111 = 32767最小值1000000000000000 = -32768 short 最低16位 2**7 - 1 负值:反码 int 至少和 ...
- 第三百七十八节,Django+Xadmin打造上线标准的在线教育平台—django自带的admin后台管理介绍
第三百七十八节,Django+Xadmin打造上线标准的在线教育平台—django自带的admin后台管理介绍 配置django的admin数据库管理后台 首先urls.py配置数据库后台路由映射,一 ...
- Wireshark 捕获过滤器的语法
转自:http://blog.csdn.net/qq_29277155/article/details/52077239 前言 我们都知道,wireshark可以实现本地抓包,同时Wireshark也 ...
- e805. 监听JProgressBar的数值变化
Whenever the value of a progress bar is changed, a change event is fired. In fact, the event is also ...