最近由于有一些需求,须要对某些网站的数据进行抓取而后分析用户的行为之类的.因此对遇到的一些问题进行一个记录,第一次处理这种加密的请求, 也花费了本身很多时间,作一个处理过程的记录.给有相似需求的朋友也增长一个可参考的资料.java
1.首先是要看请求的url大体样子是 chrome
最后翻译为java代码大概是这样后端
private static String generatorAnalysis() {
final String FLAG = "@#";
// @#/rank/indexPlus/brand_id/1@#52217050198@#1
// 时间戳的差值
Long time = System.currentTimeMillis() - 1515125653845L;
// 请求的api
String baseUrl = "/rank/indexPlus/brand_id/1";
StringBuilder builder = new StringBuilder(FLAG);
// 拼接字符串的规则 api + @# + 时间戳差值 + @#1
builder.append(baseUrl).append(FLAG).append(time).append(FLAG).append(1);
// 自定义的加密 这里加密函数不就给出了 能够本身根据断点里面的值推算出来哦
String encodeStr = diyEncode(builder.toString());
// 最后base64编码下
return new String(Base64.getEncoder().encode(encodeStr.getBytes()));
}
复制代码
1.先根据当前13位的时间戳和固定的一个时间戳生成一个差值
2.第二个参数是请求的api
3.再根据js中的拼接规则给拼接出来一个具体的字符串 其中有一个@#是拼接的分隔符
4.在对这个字符串进行加密操做
5.最后对这个字符串进行base64编码就完成了api
之后遇到遇到加密参数先不要慌,若是是网站不是app的加密参数,仍是有很大的几率能够弄出来的.分析好url的结构,而后根据引用到的js文件反推加密的过程,这个过程可能会用到fidder或者Charles这样的工具, 替换掉网站的js(用来窥探一些参数的值,文中没有给出,打算下次再写一篇专门介绍下).最后在将加密规则翻译为代码就能够了.主要花时间的点就在于从js文件中寻找加密的代码和翻译加密代码的过程,要细心有可能加密的部分就是一行,可是倒是最关键的点. 再次作个记录,也帮助其余朋友破解相似网站来抓取数据,可是不要用来做违反的事情.bash