文档章节

json 加密解密爬虫

林伟琨
 林伟琨
发布于 2016/10/26 17:11
字数 754
阅读 105
收藏 0
package cn.com.czj.front.service.common;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.Date;
import java.util.List;

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang.StringUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cn.com.czj.base.entity.data.DataPinganerEntity;
import cn.com.czj.base.entity.data.DataUrlEntity;
import cn.com.czj.front.dao.DataPingAnerDao;
import cn.com.czj.front.dao.DataUrlDao;
import cn.com.czj.front.dao.UrlContentDao;
import cn.com.czj.front.utils.http.SslUtils;
import cn.com.easy.utils.HttpClientUtils;

/**
 * 抓平安数据
 * 
 * [@author](https://my.oschina.net/arthor) linwk 2016年10月25日
 * 
 */
[@Service](https://my.oschina.net/service)
public class CrawerUserPingAnService {

	/**
	 * 网址
	 * 
	 */
	@Autowired
	private DataUrlDao dataUrlDao;

	@Autowired
	private DataPingAnerDao dataPinganerDao;

	@Autowired
	private DownLoadPicService DownLoadPicService;

	/**
	 * 内容
	 * 
	 */
	@Autowired
	private UrlContentDao urlContentDao;

	public void doCrawerService() throws Exception {
		// 网页
		List<DataUrlEntity> urls = dataUrlDao.findAll();
		if (CollectionUtils.isNotEmpty(urls)) {

			for (int i = 0; i < urls.size(); i++) {
				// 获取分页 循环
				int pageSize = 10;
				// 加密
				DataUrlEntity tDataUrlEntity = urls.get(i);
				// 地址
				tDataUrlEntity.getUrl();
				// 组合
				// System.out.println(tDataUrlEntity.getUrl());
				String pcString = StringUtils.replace(tDataUrlEntity.getUrl(), "http://life.pingan.com/kehufuwu/fuwugongju/return_select.shtml?", "");
				System.out.println(pcString);
				String signatureSource = pcString + "&regionCode=&sex=&age=&currentTime=" + new Date().getTime() + "&roundRex=" + RandomStringUtils.random(5, "1234567890");
				String urlString = "http://life.pingan.com/binfenxiari/signOfAgent.do?" + signatureSource + "&_=" + new Date().getTime();
				// System.out.println(urlString);
				String aString = HttpClientUtils.get(urlString);
				if (StringUtils.isBlank(aString)) {
					continue;
				}
				// System.out.println(aString);
				JSONObject demoJson = new JSONObject(aString);
				String sign = getJsonName(demoJson, "sign");
				String signature = sign;
				// System.out.println(sign);
				int j = 0;
				while(pageSize > j) {
					j++;
					try {
						String contentString = extracted(signatureSource, signature, j);
						if (StringUtils.equals(contentString, "success_jsoncallback({\"RESFLAG\":\"N\",\"errMsg\":\"无效链接\"})")) {
							System.out.println("无效链接");
							continue;
						}
						if (StringUtils.equals(contentString, "success_jsoncallback({\"RESFLAG\":\"N\",\"errMsg\":\"链接超时\"})")) {
							System.out.println("链接超时");
							signatureSource = pcString + "&regionCode=&sex=&age=&currentTime=" + new Date().getTime() + "&roundRex=" + RandomStringUtils.random(5, "1234567890");
							urlString = "http://life.pingan.com/binfenxiari/signOfAgent.do?" + signatureSource + "&_=" + new Date().getTime();
							// System.out.println(urlString);
							aString = HttpClientUtils.get(urlString);
							if (StringUtils.isNotBlank(aString)) {
								continue;
							}
							// System.out.println(aString);
							demoJson = new JSONObject(aString);
							sign = getJsonName(demoJson, "sign");
							signature = sign;
							// System.out.println(sign);
							contentString = extracted(signatureSource, signature, j);
						}
						if (StringUtils.isNotBlank(contentString)) {
							// 解析保存到用户
							int start = contentString.indexOf("(");
							String newJson = contentString.substring(start + 1, contentString.lastIndexOf(")"));// 组装成新的Json数据

							//System.out.println("*******************************************新的数值***************************************************");
							//System.out.println(newJson);
							//System.out.println("*******************************************新的数值***************************************************");

							JSONObject jo = new JSONObject(newJson);
							JSONObject pageBean = jo.getJSONObject("pageBean");

							// System.out.println("\n将Json数据解析为Map:");
							System.out.println("*******************************************totalPageSize***************************************************");
							System.out.println("totalPageSize: " + pageBean.getInt("totalPageSize") + " totalResults: " + pageBean.getInt("totalResults"));
							System.out.println("*******************************************totalPageSize***************************************************");

							if (pageBean.getInt("totalPageSize") > 0) {
								pageSize = pageBean.getInt("totalPageSize");
							} else {
								pageSize = 0;
								continue;
							}

							JSONArray jsonStrArray = jo.getJSONArray("resultList");
							for (int k = 0; k < jsonStrArray.length(); k++) {
								JSONObject dataPinganerEntity = jsonStrArray.getJSONObject(k);
								DataPinganerEntity dataPinganerEntity2 = new DataPinganerEntity();
								dataPinganerEntity2.setDEPTNAME(dataPinganerEntity.get("DEPTNAME").toString());
								// dataPinganerEntity2.setSELFINTRODUCE(dataPinganerEntity.get("SELFINTRODUCE").toString());
								dataPinganerEntity2.setTEL(dataPinganerEntity.get("TEL").toString());
								dataPinganerEntity2.setSEX(dataPinganerEntity.get("SEX").toString());
								dataPinganerEntity2.setEMAIL(dataPinganerEntity.get("EMAIL").toString());
								// dataPinganerEntity2.setAGENTID(dataPinganerEntity.get("AGENTID").toString());
								dataPinganerEntity2.setNAME(dataPinganerEntity.get("NAME").toString());
								dataPinganerEntity2.setDESCRIPTION(dataPinganerEntity.get("DESCRIPTION").toString());
								dataPinganerEntity2.setHEADSHOT(dataPinganerEntity.get("HEADSHOT").toString());
								// dataPinganerEntity2.setHOMEALIAS(dataPinganerEntity.get("HOMEALIAS").toString());
								dataPinganerEntity2.setMOBILE(dataPinganerEntity.get("MOBILE").toString());
								dataPinganerEntity2.setHOMEADDR(dataPinganerEntity.get("HOMEADDR").toString());
								// System.out.println(dataPinganerEntity2.getNAME());
								int count = dataPinganerDao.countByMobile(dataPinganerEntity2.getMOBILE());
								if (count > 0) {
									System.out.println("重复了");
								} else {
									dataPinganerDao.save(dataPinganerEntity2);
									System.out.println("保存进度**********************" + i * 100 / urls.size() + "%*********************");
								}
							}

						}

					} catch (Exception e) {
						continue;
					}
				}
				System.out.println("保存进度**********************" + i * 100 / urls.size() + "%*********************");
			}
		}

	}

	private String extracted(String signatureSource, String signature, int j) throws Exception {
		String urlString;
		// var
		// urls="http://sales.pa18.com/life/toolbox.queryAgentsManualSelection.shtml?provinceCode="+province+"&cityCode="+citys+"&regionCode="+area+"&sex="+sex+"&age="+age+"&currentTime="+currentTime*1+"&roundRex="+sui_num*1+"&signature="+signature;
		urlString = "https://sales.pa18.com/life/toolbox.queryAgentsManualSelection.shtml?" + signatureSource + "&signature=" + signature + "&pageSize=100"
				+ "&jsoncallback=success_jsoncallback" + "&_=" + new Date().getTime() + "&currentPage=" + j;
		// // 获取内容
		System.out.println(urlString);
		String contentString = "";
		// HttpUtils.doGet(urlString);
		// System.out.println(contentString);
		// contentString = doGet(urlString);
		contentString = HttpClientUtils.get(urlString);
		System.out.println(contentString);
		// 获取内容
		if (StringUtils.isBlank(contentString)) {
			// contentString = doGet(urlString);
			contentString = HttpClientUtils.get(urlString);
			System.out.println(contentString);
			// contentString =
			// DownLoadPicService.getHTML(urlString);
			// contentString=URLEncoder.encode(contentString,
			// "UTF-8");
			// System.out.println(contentString);
		}
		return contentString;
	}

	private static String getJsonName(JSONObject demoJson, String tString) throws JSONException {
		return demoJson.getString(tString);
	}

	/** the connection connect time out in millionseconds */
	private static final int CONNECT_TIME_OUT = 60000;
	/** the connection read time out in millionseconds */
	private static final int READ_TIME_OUT = 60000;

	public static String doGet(String url) throws Exception {
		String result = "";
		BufferedReader in = null;
		try {
			URL realUrl = new URL(url.trim());
			if ("https".equalsIgnoreCase(realUrl.getProtocol())) {
				try {
					SslUtils.ignoreSsl();
				} catch (Exception e) {

				}
			}
			// open connection
			URLConnection connection = realUrl.openConnection();
			connection.setConnectTimeout(CONNECT_TIME_OUT);
			connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36");
			// connection.setRequestProperty("Content-Type",
			// "text/json;charset=UTF-8");
			connection.setReadTimeout(READ_TIME_OUT);
			// connect
			connection.connect();
			// define BufferedReader to read input content
			in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "GBK"));
			String line;
			while ((line = in.readLine()) != null) {
				result += line;
			}
			StringBuffer buffer = new StringBuffer();
			char[] buf = new char[64];
			int count = 0;
			while ((count = in.read(buf)) != -1) {
				buffer.append(buffer, 0, count);
			}
			System.out.println("**************************************************************************************************************");
			System.out.println(result);
			System.out.println("**************************************************************************************************************");
			System.out.println(buffer.toString());
			System.out.println("**************************************************************************************************************");
		} finally {
			if (in != null) {
				in.close();
			}
		}
		return result;
	}

}

© 著作权归作者所有

上一篇: centos
下一篇: json jsoup
林伟琨
粉丝 8
博文 108
码字总数 39035
作品 0
厦门
后端工程师
私信 提问
SpringMVC请求参数和响应结果全局加密和解密

前提 前段时间在做一个对外的网关项目,涉及到加密和解密模块,这里详细分析解决方案和适用的场景。为了模拟真实的交互场景,先定制一下整个交互流程。第三方传输(包括请求和响应)数据报文包...

throwable
2018/08/14
0
0
Android与Server端的传输加密

1、必须找一个在Android和JDK上通用的加密算法,后面发现了http://www.cnblogs.com/hjtdlx/p/3926141.html这篇文章,试了一下,是可以用的。 2、Android和Server端的传输采用JSON格式,除了加...

echola
2015/09/07
288
1
网络安全&加密方式的笔记&json序列化

1.网络安全:(1)网络中传输数据都会被监控到(2)本地存储也是不安全的 因为会被越狱破解 2.任何加密解密的操作就是对二进制进行操作 //加密-指定base64编码的方式0 //解密-忽略未知的字...

KevinEmily
2016/02/23
138
0
aes256 java 加密, IOS解密

@Nic_Sun 你好,想跟你请教个问题:我看了你的例子,自己写了一遍,Java可以加密,解密, ios也可以加密,解密,但是, java加密出来的byte[]类型的数据,怎么传到ios端,用json吗, 如果是j...

zhuguoqiang
2014/08/06
844
2
数据MD5+base64、AES+RSA加密原理

在服务器与终端设备进行HTTP通讯时,常常会被网络抓包、反编译(Android APK反编译工具)等技术得到HTTP通讯接口地址和参数。为了确保信息的安全,我们必须进行接口参数加密和解密。本文只讲...

朝雨晚风
2016/07/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

parseint和isNaN用法

本文转载于:专业的前端网站➭parseint和isNaN用法 <!doctype html><html><head><meta charset="utf-8"><title>无标题文档</title></head><body><script> var a='12'; alert......

前端老手
57分钟前
7
0
Kylin 精确去重在用户行为分析中的妙用

作者:史少锋,Apache Kylin committer & PMC,2019/10/11 在上次文章《如何在 1 秒内做到大数据精准去重》中,我们介绍了 Apache Kylin 为什么要支持大数据集上的精确去重,以及基于 Bitmap...

ApacheKylin
今天
5
0
学习记录(二) es6基本语法(rest参数,模板化,axios模块,拦截器)

日常学习记录 模块化:把一个大文件分成多个小文件,按照一定规范进行拼接 es5写法: 导出:module.exports = 数据 导入:require("路径") /路径未添加后缀名时 //默认添加.js //把路径作为文件名...

Pole丶逐
今天
4
0
以程序员的角度怎么购买一台「性价比高的电视」

前俩天有小伙伴在我的文章下留言,说能否把 【国内电视机都介绍一下】,今天我已在TV端开发多年的程序员的角度。谈谈已程序员的角度如何购买一台性价比高的电视。 国内大的电视机品牌介绍 长...

我们都很努力着
今天
5
0
PhotoShop 色调:理解直方图/RGB通道信息

一、直方图:图表的形式,展示图像像素分布的情况 1.平均值:表示平均亮度 2.标准偏差值:表示亮度值范围内的中间值 3.像素: 表示用于计算直方图的像素总数 4.色阶:显示指针下面的区域亮度...

东方墨天
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部