爬虫和反爬

反爬就是区别人类行为和机器行为


  • 通过访问频率来判断是人还是机器,他们会通过监测你的访问频率来判断,比如一分钟之内的访问次数,但是这个有一个弊端就是局域网,因为同一个局域网对外是一个IP,假设局域网内的人都在访问同一个页面,这就非常容易触发警戒线。解决方法就是降低任务频率,加入几个sleep

  • 通过登陆限制来拒绝一些访问,非公开网站的常规操作,加个cookie就行了

  • 因为机器访问是没有header的,所以有些网站会通过header来做限制,加header就行了

  • IP限制,这个类似访问频率,但是可能会面临IP永久封杀,但是有代理池,还有高匿代理

  • 还有内容反爬,让内容只有人类才可以看到,比如把内容用图片之类的展示出来或者是直接给附件,但是有OCR

  • 验证码真的是判断人和机器的
    Google的reCAPTCHA是一种非常高级的验证码,但是通过模拟浏览器也是可以破解的,还有就是现在有第三方的爬虫插件也是有解决验证码。毕竟现在人工智能真的超火

  • JavaScript脚本动态获取网站数据
    有一些网站(尤其是单页面网站)的内容并不是通过服务器直接返回的,而是服务器只返回一个客户端JavaScript程序,然后JavaScript获取内容。更高级的是,JavaScript在本地计算一个token,然后拿这个token来进行AJAX获取内容。而本地的JavaScript又是经过代码混淆和加密的,这样我们做爬虫的通过看源代码几乎不可能模拟出来这个请求(主要是token不可能破解),但是我们可以从另一个角度:headless的浏览器,也就是我们直接运行这个客户端程序,这可以100%地模拟真实用户!
    这样的我没遇到过,这是大佬写的
    我遇到的是js去重新请求了一个新的页面,真实的数据隐藏在一个json中

  • 分次加载,分成几次请求原始文件,base64编码的字符流每次请求文件的一部分,然后在客户端组装起来!当然在客户端的代码也是经过加密,这样会避免误伤用户也会过滤一些反爬,但是这个应用范围有限

反爬方式还有很多,毕竟博弈永远都是在不断进步
未完待续。。。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,253评论 19 139
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,655评论 1 92
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,029评论 3 119
  • 6. When Breath Becomes Air 即眼看就要火一波的《当呼吸化为空气》,一位神经外科医生被诊断...
    一条污蚣阅读 290评论 0 0
  • 今天开始学移动端布局啦美滋滋...(就想把一些想法记录下来岂不是sixsixsix) 1、进行移动端页面编程第一步...
    谁家智障阅读 133评论 0 0