爬虫:对网站加密请求的分析

爬虫:对网站加密请求的分析

引语:

最近由于有一些需求,须要对某些网站的数据进行抓取而后分析用户的行为之类的.因此对遇到的一些问题进行一个记录,第一次处理这种加密的请求, 也花费了本身很多时间,作一个处理过程的记录.给有相似需求的朋友也增长一个可参考的资料.java

分析步骤:

1.首先是要看请求的url大体样子是 chrome

这里是一个get请求, uri的组成是:网站域名+api地址+analysis参数.
加密的部分其实就是这个analysis,这个网站有get和post的请求,可是都会在参数里面加一个analysis参数,用来区分是 内部调用仍是其余人的请求.因此我们只要破解了这个参数的生成规则,就能够拿到这个网站的数据了. 2.所以咱们找找看能不能从网站的js文件或者哪里找出这个拼接参数加密的规则,就从第一个的请求参数开始,咱们处于开发者模式下,点击Network,而后选择第一个接口,点击Initiator. 会跳转到对应的js中.这时候发现js是压缩的,点击chrome开发者工具自带的格式化代码
格式代码后,咱们就方便查看加密规则是从哪里来的了.
3.这时候咱们能够在Network右边的侧边栏加入XHR breakPoint,
将咱们前面的url中的关键字添加进来,而后刷新页面,当再次请求到这个url的时候,就回进入到这个断点中
左边就是代码中各类参数的变量,值等,右边就是调用栈,咱们能够一步步从中去找寻参数是从哪里加密的.
4.这个网站的js里面的函数对于我一个后端来讲讲道理,有些难读懂,我是从参考了网上一些大神的资料,而后从最初的一个调用栈一个个网上查看传递的参数是什么,来查看究竟是哪一步进行的加密.
这个过程很花时间,js文件中有不少不少匿名函数,调试的时候无法一步步所有看完,主要是要找传参的问题,对比发现图中两个调用栈中的参数中有一个没有analysis参数,说明加密是在另外一个调用栈中完成的.因而乎定位到了是在get这个调用中加密的, 知道了在哪一个文件中加密的就好办了.
5.咱们在刚才的get调用这个里面打上断点一步步调试看看参数值
这里其实可读性也挺差的,咱们能够将鼠标选中本身要查看的参数一步步推出来大体的加密过程 这里也是要花很多时间,推算出来

结果:

最后翻译为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

相关文章
相关标签/搜索