爬虫之加密JS原理

一. 什么是JS加密?

  ①加密JS:对JS源码进行加密

<script type="text/javascript">
	window.onload=function(){
	var _$cP=document.getElementById(_$xg('KkA6KOpFiYE'));
	_$eM(_$cP.name,_$n0(_$cP,_$tq('eavul')));
};
</script>

   JS是运行在浏览器里面的语言,也就是我们所理解的前端语言。JS可以对一些前端参数进行加密,以便服务器后台便于验证。如对用户名和密码进行加密,后端可以判断是否是正确的请求还是恶意的攻击。加密可以是一种常见的算法,如MD5等方法,如果前端浏览器可以看到未经加密的JS,那么模仿其加密过程或者逆向解密也是不难的。所以,此时的JS加密之后就可以预防这些了。

二. 爬虫里面的JS加密?

   为了防止别人爬取网站里面的内容,使用JS加密cookie就可以区别你是浏览器正确的请求还是使用诸如Httpclient等框架在爬取网页内容了,毕竟现在的普通的爬虫框架只是负责拿着你给的URL传递一些参数获取网页源码的工具,它们不能运行JS,也就无法对服务器需要验证的参数进行加密,从而导致服务器会拒绝你的请求,给你返回一个不是你所期望的网页内容的页面。
加密JS请求过程

三. 如何解决加密JS?

 上面只是普通的爬虫框架不能解决的问题,但是既然有盾,那么也就会有矛的。下面介绍几款比较好用的矛。

  ①.Selenium:该框架可以基于真实的浏览器测试框架,可以运行JS。该框架会打开我们本地的谷歌或者火狐等浏览器进行操作,所以可以说这是一个自动化的测试框架,但是作为爬虫却是较慢了。毕竟你要是开几十个谷歌浏览器窗口去获取网页源码怕是有点慢。加密的JS只是起到了混淆的作用,浏览器可以运行,那么该框架也可以运行这些被加密过的JS从而得到你所需要的参数。
  ②.PhantomJS:这是一个没有页面的浏览器内核,它可以像真实的浏览器一样进行网页的一些操作,只是没有界面。

posted @ 2019-01-20 15:10  李子君啊  阅读(449)  评论(0编辑  收藏  举报