网络爬虫反反爬策略

您所在的位置:网站首页 爬虫更新策略 网络爬虫反反爬策略

网络爬虫反反爬策略

#网络爬虫反反爬策略| 来源: 网络整理| 查看: 265

前言: 网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。爬虫与反爬虫,这相爱相杀的一对,简直可以写出一部壮观的斗争史。而在大数据时代,数据就是金钱,很多企业都为自己的网站运用了反爬虫机制,防止网页上的数据被爬虫爬走。然而,如果反爬机制过于严格,可能会误伤到真正的用户请求;如果既要和爬虫死磕,又要保证很低的误伤率,那么又会加大研发的成本。简单低级的爬虫速度快,伪装度低,如果没有反爬机制,它们可以很快的抓取大量数据,甚至因为请求过多,造成服务器不能正常工作。而伪装度高的爬虫爬取速度慢,对服务器造成的负担也相对较小。所以,网站反爬的重点也是那种简单粗暴的爬虫,反爬机制也会允许伪装度高的爬虫,获得数据。毕竟伪装度很高的爬虫与真实用户也就没有太大差别了。

此文章主要介绍多种不同的方式来应对反爬机制。 

1. headers伪装

import requests url = 'http://www.baidu.com' # 目标网站(此文章以百度为例) headers = { 'User-Agent': 'Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; BLA-AL00 Build/HUAWEIBLA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/8.9 Mobile Safari/537.36', } response = requests.get(url, headers=headers) response.encoding = 'utf8' html = response.text print(html)

解惑): 有很多同学,这里会有疑问,这个User-Agent是如何产生的,从哪里来?这里的话拓展一个User-Agent的知识,  从下面代码可以得到一个真实有效的User-Agent。

from fake_useragent import FakeUserAgent ua = FakeUserAgent() user_agent = ua.random print(user_agent) # Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11

2. 浏览器伪装

import requests url = 'http://www.baidu.com' # 目标网站(此文章以百度为例) headers = { 'User-Agent': 'Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; BLA-AL00 Build/HUAWEIBLA-AL00) AppleWebKit/537.36' ' (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/8.9 Mobile Safari/537.36', 'Cookie': 'yjs_js_security_passport=4e27dd22d71efd17af71d444c1518cfcc6a9924d_1585131578_js; delPer=0;' } response = requests.get(url, headers=headers) response.encoding = 'utf8' html = response.text print(html)

 解惑): 这一段代码,很多同学应该很多疑问吧?代码都差不多,为什么要把他们分开划分呢?其实这里的话有个小细节,那就是在headers里存在一个Cookie,那这个参数有什么用?Cookie的作用就是用于鉴别有没有登陆目标网站,大部分网站都需要通过这个来决定是否给你进行数据的抓取或采集,这一部分也是非常重要的反反爬措施(划重点,要考)。

3. IP限制  

 

import requests url = 'http://www.baidu.com' # 目标网站(此文章以百度为例) headers = { 'User-Agent': 'Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; BLA-AL00 Build/HUAWEIBLA-AL00) AppleWebKit/537.36' ' (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/8.9 Mobile Safari/537.36', 'Cookie': 'yjs_js_security_passport=4e27dd22d71efd17af71d444c1518cfcc6a9924d_1585131578_js; delPer=0;' } proxies = { 'http': 'http://127.0.0.1:80', 'https': 'https://127.0.0.1:80', } response = requests.get(url, headers=headers, proxies=proxies) response.encoding = 'utf8' html = response.text print(html)

解惑): 为什么要加入IP这个呢?加入IP的作用是防止网站对你的限制,网站无法限制你了,那我们就可以进行数据采集啦,上面代码中的127.0.0.1和80要结合实际使用哦,可以通过抓取免费的代理IP来进行我们的数据抓取。

4. 验证码策略

 解惑): 常见的验证码有以下3种!

1) 简单的数字验证码

此类验证码的直接对接第三方的打码平台即可。

2) 滑动验证码

 

此类验证码的话,可以使用selenium来进行识别拖动。

3) 点选验证码

 

此类验证码处理会相对复杂很多,后续会更新验证码的破解详细代码。

创作不易,请同学们支持原创,你们的喜欢才是我创作的动力 。

喜欢博主的可以关注,收藏下,持续更新更多Python相关技术。 持续更新中...



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3