从功能上讲,爬虫就是采集数据,加工数据,存储数据的过程。
一般,网站会从几个方面制定反爬虫策略:用户请求、用户行为和数据加载方式。今天我们就来谈谈爬虫和反爬虫。
user-agent
这是最简单的反爬虫机制了,浏览器在发请求的时候,会附带一部分参数,这个就是http请求的header部分。如下图是谷歌浏览器的请求头,标出的是user-agent域。
网站会检查user-agent域从而限制python爬虫,所以你需要手动设置headers的user-agent域,这样就能绕过对python爬虫的限制。
IP限制
网站是通过检测用户行为,例如同一IP短时间内多次访问同一页面,或者同一账户短时间内多次进行相同操作。
针对一些可疑的IP访问,网站会禁用这个IP的爬虫。所以,一中策略是,可以通过python爬虫获得更多的公开代理IP地址,然后用这些IP地址去访问网站,每发送几个请求之后就更换新的IP地址,这样就能解决IP限制的反爬虫策略。
设置IP代理很简单,只需要设置proxies的值就好了。
访问频率限制
一些网站设置了访问时间,不能快速浏览进入下一页,这个时候我们需要修改他的访问时间,在它访问下一页的时候,通过 POST 方式,修改 read_time,正常访问的话,这个值一般会大于10如果我们修改成 60。既可以轻轻松松的通过了它的反爬虫策略。
验证码限制
针对频繁的访问或者可疑的访问请求,网站会弹出输入验证码提示框,这是比较烦人的设计。
解决的办法:识别验证码,然后在python爬虫代码中进行模拟输入。
蜜罐技术
网站会给你布下陷阱,这个陷阱是用户访问看不到的,只有爬虫才能访问到,因为这些陷阱一般隐藏在源代码之中。只要网站发现你访问了这个隐藏的陷阱,那么你就会被封禁各种能识别你身份信息的数据。那么,我们在编写爬虫的时候,就要小心蜜罐了,我们只使用python爬虫我们需要的就好了,不要贪婪的什么都要爬虫。
动态加载
很多时候我们不能直接通过url获取页面,这时就应该考虑一个工具selenium了。我们通过selenium模拟用户行为,等待网页动态加载完成后,在爬虫我们需要的数据。
cookie
网站可以通过cookie区分出浏览器的访问和爬虫的访问。在第一次访问的时候,网站返回并往cookie中写入一个数据,然后浏览器第二次尝试访问的时候,会带着cookie去访问,而网站验证了这个cookie的有效性之后,才会允许访问。这样一来,如果在python爬虫代码中,不能解析cookie的值,就无法正确访问网站。
领取专属 10元无门槛券
私享最新 技术干货