博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
阅读量:6291 次
发布时间:2019-06-22

本文共 787 字,大约阅读时间需要 2 分钟。

1 前言

近期,有些朋友问我一些关于如何应对反爬虫的问题。由于好多朋友都在问,因此决定写一篇此类的博客。把我知道的一些方法,分享给大家。博主属于小菜级别,玩爬虫也完全是处于兴趣爱好,如有不足之处,还望指正。

在互联网上进行自动数据采集(抓取)这件事和互联网存在的时间差不多一样长。今天大众好像更倾向于用“网络数据采集”,有时会把网络数据采集程序称为网络机器人(bots)。最常用的方法是写一个自动化程序向网络服务器请求数据(通常是用 HTML 表单或其他网页文件),然后对数据进行解析,提取需要的信息。

说句实在话,如果我的网站总是让人爬来爬取的,经常被虚拟访问者骚扰,我也是蛮烦的,而且如果遇到“霸道”一点的爬虫,都能直接把服务器卡死。因此,我们在爬取别人网站的时候,也多为对方考虑考虑。不过话说回来,我却没有这个烦恼,为什么呢?因为我根本就没有自己的网站。=.=

2 黑科技

网站防采集的前提就是要正确地区分人类访问用户和网络机器人。现在网站有很多技术来防止爬虫,比如验证码,对于一些简单的数字验证码,可以使用训练好的caffemodel诸如此类的模型去识别,准确率还是可以的。当然,也可以在Github搜一搜关于验证码识别的东西,看一看大牛们是怎么玩的。除了这些高大上的,还有一些十分简单的方法可以让你的网络机器人看起来更像人类访问用户。

2.1 构造合理的HTTP请求头

除了处理网站表单,requests 模块还是一个设置请求头的利器。HTTP 的请求头是在你每次向网络服务器发送请求时,传递的一组属性和配置信息。HTTP 定义了十几种古怪的请求头类型,不过大多数都不常用。

每个网站都有不同的请求头,如何获取这个请求头呢?可以用我从前提到过的Fiddler或者审查元素的方法,我们可以根据实际情况进行配置。例如,GET百度根目录的时候,需要添加的请求头信息如下:

转载地址:http://nekta.baihongyu.com/

你可能感兴趣的文章
HTML5 Web Workers 简单例子
查看>>
谈谈Mono开发的一些想法 ^_^
查看>>
数据结构 第6章 图 单元小结
查看>>
extern "C"
查看>>
JAVA构造方法
查看>>
Java中的关键字
查看>>
基础算法 ---> 二分法
查看>>
Java内部类
查看>>
数据结构和算法:队列和栈
查看>>
用户登录保存数据实例(慕课笔记 使用SharedPreferences保存用户名)
查看>>
如何判断一条sql(update,delete)语句是否执行成功
查看>>
JSONObject.parseObject(jsonStr);和JSONObject.fromObject(jsonStr);
查看>>
【集训队作业2018】小Z的礼物
查看>>
ClientScriptManager与ScriptManager向客户端注册脚本的区别
查看>>
js和php中几种生成验证码的方式
查看>>
android UI进阶之仿iphone的tab效果1
查看>>
这是我的第1个C#程序(向控制台输出一句话)
查看>>
html
查看>>
Xqk.Data数据框架开发指南:丰富的、灵活的查询方法(第三部分:SqlField)
查看>>
Java基本语法
查看>>