目录

充电学习中...

标签: 爬虫 (9)

神器CefSharp在爬虫方面的应用

神器CefSharp在爬虫方面的应用 一、前言概述 提起Web端的自动化,模拟渲染,相信虫子们都能想到一些比较流行的框架,例如Selenium,Puppeteer等。其中Selenium利用的是WebDriver,支持Python,Java,.Net等多种语言,而Puppeteer出自谷歌之手,基于nodejs。两者的底层都是通过DevTools Protocol来操控Chrome的。诚然,这两个框架在Web自动化领域的应用非常强大,其中Puppeteer更是可以对网络请求进行拦截,但是用在爬虫上,hhhhhh,先放张图撑撑场面: 你可能不服,别急,继续往下看就知道了。 自动化测试框架为开发者(这里只针对爬虫而言)带来了很多方便,例如处理ajax请求的动态加载,前端JS混淆加密,人机验证,请求拦截等,但是却有个致命的缺点,就是拥有很多和正常浏览器不同的特征,而这些特征一旦被侦测到,爬虫就无法再进行下去,而目前的大厂们,几乎都或多或少的会进行检测,例如瑞数加密的JS,淘宝Web端页面等,均有检测代码。下面给出几个检测及绕过检测点的例子: 反爬虫中chrome无头浏览器的几种检测与绕过方.....

Q音和网易云音乐歌单互相导入实现

Q音和网易云音乐歌单互相导入实现 虽然官方已经支持这个功能了,但是还是心血来潮想去自己实现一遍,为了避免引起一些不必要的麻烦,项目中的一些关键参数的计算方法的实现隐去了。但是具体的分析过程可以看如下文章: 1.网易云音乐web端加密解析 2.QQ音乐sign签名字段解 项目地址 使用示例 除了基础的歌单互相导入功能以外,还做了一个导出歌单为excel的功能,使用效果如下: 导出的字段包含歌曲名,时长,专辑,歌手,播放链接及歌曲在该平台的状态信息等。

QQ音乐sign签名字段解析

QQ音乐sign签名字段解析 字段描述 出现在歌单详情等接口,请求url后面会跟一个sign字段,例如"zzap4rd5hjs5zkv626bc180091010583fc33cd2e160eca2",经过验证发现这个参数无法缺省,必须携带。 分析过程 1.找到加密位置 搜索对应的js中的sign关键词,如下图 这边可以看到sign来自于g参数赋值,那么向上找到g参数赋值位置:"z.getSecuritySign(m.data)",下断点调试。 可以发现传入的参数即为Post请求的body部分 2.g_tk字段解析 请求体中会带上这个字段,生成位置如下图: 生成逻辑比较简单,可以用自己的语言重写。 3.调用验证 通过静态分析js发现,加密的一系列方法,最终都在一个全局对象"M"中,那么我们传入加密参数进行验证 将加密值代入请求中,成功获得数据 sign字段构成分析 测试中发现sign由3端字符串拼接而成:"zzaj|51ny550yk|626bc180091010583fc33cd2e160eca2"(示例用|分割) 其中 第一部分固定 都为"zza",第二部分是一串随机字符....

网易云音乐web端加密解析

网易云音乐web端加密解析 API加密部分 即params和encSecKey字段,其中params字段通过两次aes cbc模式加密得到,密钥和偏移量都是固定的。encSecKey由rsa加密得到,最后输出的是byte数组转换成的16进制字符串。这块内容网上一搜一大把,本文不再赘述,如有需要可以参考这篇文章,讲的很详细。 内容加密部分 这部分加密出现在歌单等页面,即主要内容是 textarea 标签中的一段加密字符串,例如下图: 而在渲染完成的页面(审查元素)中,这部分代码则变成了正确的数据: 接下来就是分析js了(PS:又臭又长的JS) 首先搜索这串加密字符串相关的字符,在某段js中找到了下图的js代码: 尝试下断点调试,但是断点始终无法命中。(后来才知道这是网易云音乐原先的数据解析方式)。说明这部分代码应该是被废弃了,不过结合网上的一些过时代码可以看到这部分数据可能最终是转化为json来使用的。那么,是否能在json上下文章呢?马上想到了一个思路,将JSON.parse方法进行hook,然后加上debugger断点,再通过调用栈堆来找到关键位置。 hook代码如下(hoo....

裁判文书网瑞数解决方案

裁判文书网瑞数加密解决方案 本文研究对象:裁判文书网 话不多说,直奔主题 1. 反调试突破 在裁判文书网页面,打开浏览器控制台,会自动命中断点。如下图 突破方案在另一篇文章里有详细介绍,如果只是单纯地调试,在断点处启用"Nerver pause here"即可 2. 加密分析 瑞数的加密一般都是重写了XMLHttpRequest对象的open方法,这里也不例外,先找到加密位置: 这边可以看到加密的位置,加密的参数为发起请求的url地址。 尝试在控制台直接调用加密方法,由于加密部分代码是通过匿名函数注入的,调用失败 只在命中断点的时候才能成功调用 2. 请求拦截篡改 直接调用走不通,只能走拦截这条路了(解密是不可能解密的,这辈子都不可能解密的) 先上个流程图: 简单来说,就是通过代理服务阻断浏览器的请求,以获得加密有后的url和cookie值,保存起来以供使用,由于请求并未真正到达后端,依靠这种方式能够无限量地产出加密值以供使用 3. 结果展示

爬虫应对IP封禁的一般性处理方法

原先发布在CSDN的文章:# 爬虫应对IP封禁的一般性处理方法

突破前端debugger反调试

我原先在CSDN上发布的文章:突破前端debugger反调试

天眼查字体反爬应对

反爬场景 某些网站为了保护数据不被爬虫获取,会使用字体反爬来阻碍爬虫。具体的现象是用户肉眼看到的内容和接口返回是不同的。下面以一张GIF图展示天眼查的字体反爬: 可以看到,当取消了字体渲染的样式之后,页面的内容变了,而直接复制网页上的文本,得到的文字也是错误的。 搜索了一下,这个反爬技术还是有专利的: CN105812366A_服务器、反爬虫系统和反爬虫验证方法 分析过程 首先观察发现当取消字体渲染时,只有注册资本,成立时间,经营范围这三个字段的数据产生了变化,审查元素后可以看到,只有使用了"tyc-num lh24"类标签的元素才会应用字体渲染。知道是字体反爬后,目标页很明确了。抓包并过滤数据包,只显示字体文件,可以找到关键的字体。如下图: 从Chrome控制台的预览处可以看到,至少数字部分已经打乱。为了直观体现,这里找一张正常的字体进行对比。下面这张图是淘宝登录页面的字体预览: 下面借助百度的字体编辑工具,查看中文部分,工具地址 从之前的gif中我们可以看到,肉眼见到的"技"字是通过"商"字转换而来的,我们在工具中找到"技",注意这里要看图片框呈现出来的字体轮廓,不要直接去对.......

模拟浏览器采集的几种方式比较

该文章已经加密。