常见的反爬措施
(1)问题分析
面试官主要考察面试者有没有反爬经验。
(2)核心问题讲解
下面列举一些常用的反爬策略。
1)通过设置headers字段来反爬
通过headers中的User-Agent字段来反爬。最好的反爬方式是使用User-Agent池,我们可以收集一些User-Agent,或者随机生成User-Agent。
通过添加referer字段或者是其他字段来反爬。
通过cookie来反爬。若目标网站无需登录,则每次请求带上上次返回的cookie,比如requests模块的session;若目标网站需要登录,则准备多个账号,通过一个程序获取账号对应的cookie,组成cookie池,其他程序使用这些cookie。
2)通过js来反爬
通过js实现跳转来反爬。在请求目录网站时,我们虽然只看到了成功请求的目标网站,但是在请求目标网站之前可能有通过js实现的跳转,此时可通过点击perserve log按钮观察页面的跳转情况。在这些请求中,如果请求数量很多,一般来讲,只有那些response中带cookie字段的请求是有用的,也就是说通过这个请求,对方服务器有设置cookie到本地。
通过js生成了请求参数。对应的需要分析js,观察加密的实现过程,可以使用selenium模块解决。
通过js实现了数据的加密。对应的需要分析js,观察加密的实现过程,可以使用selenium模块实现。
3)通过验证码来反爬。通过打码平台或者是机器学习的方法识别验证码,其中打码平台廉价易用,建议使用。
4)通过IP地址来反爬。同一个IP大量请求了对方服务器,有更大的可能性会被识别为爬虫,对应的通过购买高质量的IP的方式能够解决。
5)通过自定义字体来反爬。可以尝试切换到手机版试试。
6)通过css来反爬,比如通过css掩盖真实数据。
(3)问题扩展
网络爬虫,是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。
几乎是和爬虫技术诞生的同一时刻,反爬虫技术也诞生了。在90年代开始有搜索引擎网站利用爬虫技术抓取网站时,一些搜索引擎从业者和网站站长通过邮件讨论定下了一项“君子协议”—— robots.txt。即网站有权规定网站中哪些内容可以被爬虫抓取,哪些内容不可以被爬虫抓取。这样既可以保护隐私和敏感信息,又可以被搜索引擎收录、增加流量。
爬虫技术刚刚诞生时,大多数从业者都会默守这一协定,但是当网络爬虫被滥用后,互联网上就出现太多同质的东西,原创得不到保护,违反了“君子协议”。
当君子协议失效,很多网站开始反网络爬虫,想方设法保护自己的内容,它们根据IP访问频率、浏览网页速率、账户登录、输入验证码、flash封装、ajax混淆、js加密、图片、css混淆等五花八门的技术来反网络爬虫。
(4)结合项目中使用
无