首先说一下爬虫是什么: > 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。 这里借用了百度百科的专业描述,如果你把浏览器每次渲染后的页面保存到本地,你也可以称之为爬虫或采集器, 常见的爬虫: 1. 简单粗暴,直接for url page++ [file or sql],当然了 所有的爬虫大多是这个结构,复杂就是细分了呈树形 一般来说普通网站是不可能搞反爬后面再分析,先看看简单网站爬取
爬取方式{
分析url接口:{
分析规律然后模拟或者根据上级页面得到下级的接口数据
可以递归处理 {
cookie:{
cookie的话有两种一种是服务端返回的set-cookie 另一种是浏览器依靠js生成的
服务器返回的cooki可以通过访问主页获取一般网站是这样,
说到这里说一下服务端和客户端交互的原理{
1:依靠cookie 通过处理cookie 来交互 常见的你可以看到网站提交一大堆cookie 确认身份,权限之类的
2:依靠Session Session 简单来说就是服务器存放的一个 哈希表 ,客户端请求会生成唯一Session值 对应客户身份 可以在同一域名下起作用 ,生命周期就是客户端开连接也就是你关闭浏览器 或者页面,常见就是 只有一个cookie 这个呢 就算你后端什么也不写 服务器会自动生成的 所有完全靠后台判断处理
一般无需登录的网站只需要你模拟访问他的主页 会返回一个带有Session的唯一值的cookie 这个可有可无 有些web框架会自动处理请求 如果不带这个cookie的Session
他会认为请求非法 ,框架一般会根据Session和协议头来判断你是否请求合法
3:两者混合
}
一般来说我碰到的第一种居多,只要是本地js生成cookie的网站 不用说 是一丢丢小反爬{
这里也涉及到混淆js 加密js
{
加密js:{
这个常见一般都是使用js工具加密之后 ,处理的话 很简单 都是开源的 找一找加密的特征去谷歌80%都能找到
或者自己逐句分析下断从栈把还原算法 抠出来
}
混淆js{
公司内部都有自写的混淆算法 ,除非你要和他硬磕,一般都是无头浏览器 这里我推荐selenium
无头浏览器只是封装了一个渲染引擎 用selenium的话可以直接操作浏览器
我推荐操作火狐,如果多开的话 只有火狐可以禁止css渲染 提高采集效率
或者头铁 就是要提取他的算法 也可以 从头到尾把所有都看一遍 就八九不离十了,
之前百度有个在线字体处理库 我发现把他的所有文件都下载 本地也可以处理 然后花了两天把他的字体处理库提取出来
怎么样分析js这个需要js基础,会点皮毛就可以分析皮肤 理解越多分析复杂度越高,所以以后有这类问题 不如直接去学js 说不定哪天可以去干前端
}
}
}
}
加密参数{
服务器返回的参数
本地生成的密匙签名
这里的话也不多说同上 无非就是js问题
加密的话比较常见的{
rsa
aes
des
md5
{
每种算法都有各自特征
比如md5 你看签名参数的位数大体可以判断出来
aes-des 这个都是base64编码 可以看出来 不排除丧心病狂的用十六进制或者别的方式
而且大部分后端程序员功力没那么深 改不了算法 所以知道怎么加密的 直接用你熟悉的语言写 没必要非要扣他的算法得不偿失
如果真要扣的话,学js 就行了
}
}
}
}
}
} 后面会谈谈验证码处理 还有反爬虫 和 怎么爬反爬虫的处理方式 发这个仅仅是为了爬虫入门的理解 授之以渔