爬虫与反爬之-爬虫

首先说一下爬虫是什么: > 网络爬虫(又被称为网页蜘蛛,网络机器人,在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 就行了 
				}
			}
		}
	}
}

} 后面会谈谈验证码处理 还有反爬虫 和 怎么爬反爬虫的处理方式 发这个仅仅是为了爬虫入门的理解 授之以渔

猜你喜欢

转载自my.oschina.net/KFS/blog/1621947
今日推荐