过程
突然接了个需求,爬一个网站的经销商数据
http://www.huishoushang.com/market/gongchengjixie-0/
问题
网站比较简单,其中有一个手机号获取是js渲染出来的。
正常展示是这样的:
而代码源码是这样的:
可以看到,手机号并没有在 span 标签里,而这个标签里面有个和很可疑的属性 decrypt,值是一串可疑字符串。断定手机号是这个字符串经过一定编码后反解析出来的。
解决
按正向开发的思想,定义了这个属性,肯定他有什么特别的功能,那我通过加载出来的资源,全局搜索一下看看。
Chrome浏览器,ctrl+shift+f搜索 decrypt 这个参数发现:
双击点开js文件
这里就相当的明显了
这里逻辑就是,0-9数字分别被分配了几个特殊字符串,反过来,通过 decrypt 属性里的字符串,更他们一一对应就可以拿到手机号了
比如:
c03%b04%b01%a04%c00%b08%f02%c07%c00%c00%b08
这个通过%分隔,对应的数字就是
13048795887
完事