常见的反爬方式与对策!

1.header: (1)User-Agent浏览器头, 在这里推荐fake—useragent创建UA池。 from fake-useragent import User-Agent ua = User-Agent(user_cache_server=False)user_cache_server=False 是禁用服务器缓存以免在网不好的时候出现问题 ua.random就随机生成一个UserAgent。 遗憾的是没有手机的U—A。 (2)Referer防盗链 比较基本的,没什么好说。 (3)cookie: 目标网站不需要登陆:用requests的session就可以搞定,每一次请求都会带上前一次的cookie。 目标网站需要登陆:用多个账号登陆,获取登陆后的cookie,可以组建成一个账号池! 在这里推荐一个插件:EditThisCookie,是一个cookie管理器

2.ajax请求: 也就是常说的动态页面,这个如果直接抓去页面的是抓不到的。然后需要抓取它的接口,抓到之后面临的问题就是参数。 反爬的话一般会在参数上做手脚: 一级恶心:最常见的就是加时间戳 ,看到155...的一长串数字,基本就是时间戳了,没啥难度。 二级恶心:参数加密。参数加密的话还好。想要破解一般没那个时间和技术。所以直接改用selenium,虽说效率低了一点能抓到还是不错的。 三级恶心:这种反爬措施就有点丧心病狂了!一般是在post请求中出现,他会设计几个用户不可见参数,正常用户的请求是不会发送这个参数的,写爬虫的时候 一不小心多写一个,直接给你封掉ip。 这种情况不止出现在ajax请求中。

3.用户行为: 统计ip访问的频率,如果爬取速度过快,超过了正常水平也会封掉ip,封多久得看人家心情了。 再往细了扣,他就会测你的访问间隔时间,所以说sleep还是随机时间好一点。

4.通过js: 这个类似ajax,但是木有接口。所以用selenium来解决。

5.字体编码: 当查看网页的时候显示的是乱码,不要慌,基本可以确定他是使用的特殊字体的编码,这时候可以使用一个第三方模块fonttools来解决!

6.验证码: 验证码这个研究起来就深了去了。 (1)最简单的数字加字母,使用tesseract就可以搞定。但是首先要对验证码图片进行处理,首先转为灰度化,然后二值化,最后将图片转化为RGB模式进行识别,这 样成功率会高一些。 (2)常见的极验验证:就是那种拖动滑块的。和第一种比起来也难不到哪里去。优势就是大部分打码平台不支持。 可以使用selenium来做,首先获取滑块和阴影之间的距离然后,模拟拖动就ok啦 验证码还有很多种类型,常用的方法有以下几种: (1)打码平台。 (2)orc库,orc得用的很溜才行,话又说回来了,orc这么溜还做什么爬虫! (3)机器学习。同上~ (4)神箭手库。这个就听说过还没用过,听说是挺牛的! 本人比较菜对验证码没有深入研究过,就不多说啦! 常见的反爬方式基本上就这些啦!

转载于:https://my.oschina.net/u/3845901/blog/2874351

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值