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\ ...
随机推荐
- OpenSceneGraph-3.2.0 源代码的编辑步骤
到osg官网去下载源代码 官网 再把资源包下载下来叫作3dpart资源包. 源代码下载下来之后依照这个步骤来. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQ ...
- linux brctl command not found
[root@localhost ~]# brctl-bash: brctl: command not found 解决方法: [root@localhost ~]# yum install bridg ...
- mongoimport 导入数据
最后 利用mongodb自带的mongoimport工具可以上传csv文件 命令如下 mongoimport -h localhost --port 27017 -d test222 -c c21 - ...
- R语言-分组统计
分组统计 1.假定有一组成绩数据,要求根据性别进行分组统计: > score ID score1 score2 Gender1 101 11.35321 0.9 male2 ...
- RootKit
类型0:藏在人群中,干扰人工肉眼检查 类型1 2:篡改系统内部的数据结构和调用表,破坏自动化检测工具,这项数据结构和调用表是检测工具和KootKit共用的 类型3:跳出束缚,由rootkit实现本该宿 ...
- JDBC选择数据库实例
在本教程将演示如何在JDBC应用程序中选择一个数据库. 在执行以下示例之前,请确保您已经准备好以下操作: 具有数据库管理员权限,以在给定模式中创建数据库. 要执行以下示例,需要用实际用户名和密码替换这 ...
- EF5+MVC4系列(2) EF5报错 无法确定“XXX”关系的主体端。添加的多个实体可能主键相同
情景:用户表和订单表是一对多的关系,即 一个 Userinfo 对应对应有 多个 Order表 如果我在EF中,先创建一个用户,然后创建3个订单,然后关联这1个用户和3个订单的关系,毫无问题. ...
- bioerl 获取gi号
代码示例: use Bio::DB::EUtilities; my @ids = qw(CAB02640 EAS10332 YP_250808 NP_623143 P41007); my $facto ...
- FrameBot 软件安装测试
背景: FrameBot 用于纠正DNA序列中的插入和缺失,然后正确的翻译成蛋白质序列,frameBot 工具集成在RDPTools 中 源代码: http ...
- Complex Instance Placement
转自: https://specs.openstack.org/openstack/openstack-user-stories/user-stories/proposed/complex-insta ...