网络爬虫攻防的一些小技巧

由于互联网大数据的火热,各种大小企业、创业公司出于各种各样的原因都争先恐后的往大数据企业去发展,爬虫技术也由于其易学、效果显著而成为了大家追捧的对象。

什么是爬虫?

通俗来讲,我们平时浏览的页面大都是HTML页面,包括我们平时浏览的新闻,门户网站等都是将文字内容镶嵌在HTML代码中,而爬虫要做的可以简单理解为利 用程序来获取我们需要的网络上的内容,包括文字,视频,图片等信息。

未知攻,如何防?

最简单的爬虫 - curl

使用 curl 爬取内容,保存到文件中

使用 curl 获取网页、接口的内容,再利用 ‘>’, ‘|’ , ‘awk’ 等命令过滤获取需要的内容,从而获取数据保存到文件中

最广泛流行的爬虫 - Python

使用 Python 编写脚本爬取内容

创建 test.py 文件,写入上述内容,获取http响应状态码

phantomjs, puppeteer

无头浏览器通过模拟真实浏览器请求,并提供执行第三方代码的接口才使用数据的爬取。

这里由于演示代码较长,本文只做简单说明,就不贴演示的,后面有空单独写个文章的,如有需要也可自行网上查找相关资料^_^

攻已知,防如何?

最简单的防御 - User-Agent

无论是 Python 还是 Curl 或者 无头浏览器 亦或是 真实浏览器 再发起请求的时候都会将自身的一些信息通过 User-Agent 传递到服务端

通过 nginx 的请求日志我们可以清楚的看到各种请求所带的 User-Agent 是不同的,所以你懂得^_^

在 nginx 的配置中过滤不正确的 User-Agent, 这个时候再通过 curl 、 Python 等方式的爬取,就会返回 403 的错误状态码了

核弹 - iptables

很多时候,单纯使用 User-Agent 进行请求的过滤是没有效的,因为攻击者往往会通过修改 User-Agent 就可以轻易的绕过防御规则了的,这时候就可以考虑使用 iptables 了

以上命令即可禁止 192.168.31.12 这个IP访问了

前端防御

使用 iptables 这一大杀器进行IP封禁固然有效,但其带来的危害也是巨大的,特别是在现今IP池随手可得的时代,往往问题得不到解决,反而会导致正常用户无法访问的。所以对IP进行封禁只有在你有100%把握的情况下才有效的!

我们知道,一个数据要显示到前端,不仅仅是后端输出而已,前端是要做各种渲染的。那么这个时候就有很多种套路让爬虫难受了。(嘿嘿嘿)

1. 错误HTML标签

简单实用,利用一些无关痛痒的html标签让页面dom结构错乱不闭合,而又不影响页面浏览,让爬虫不好识别节点,爬取错误数据(嘿嘿)

2. js支持

利用爬虫不支持的某些浏览器接口方法进行判断,不支持就不加载,当然也可以反其道而行哟,往往有意想不到的效果的

总结

总的来说,爬虫的攻防斗智斗勇,各种套路都层出不穷,大家玩玩就好,毕竟爬虫与反爬虫,是一个很不阳光的行业。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181105G141FL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券