我们都知道Python用来爬数据,为了不让自家的数据被别人随意的爬走,你知道怎么反爬吗?今天播妞带着大家一起见识见识常见的反爬技术。

首先我们来看一下爬虫程序和反爬虫之间的一张逻辑图:

以下说4种网站反爬虫方式。

1.通过User-Agent来控制访问

无论是浏览器还是爬虫程序,在向服务器发起网络请求的时候,都会发过去一个头文件:headers, 表明身份。

对于爬虫程序来说,最需要注意的字段就是:User-Agent

很多网站都会建立 user-agent白名单,只有属于正常范围的user-agent才能够正常访问。

解决方法:

可以自己设置一下user-agent,或者更好的是,可以从一系列的user-agent里随机挑出一个符合标准的使用。

2.通过JS脚本来防止爬虫

举个例子:如果想爬取某个网站,在请求之前,它会有一个验证页面来验证你是否机器。

它是怎么实现的呢:

他会通过js代码生成一大段随机的数字,然后要求浏览器通过js的运算得出这一串数字的和,再返回给服务器。

解决方法:

使用PhantomJS

  • PhantomJS是一个Python包,他可以在没有图形界面的情况下,完全模拟一个”浏览器“,js脚本验证什么的再也不是问题了。

3.通过IP限制来反爬虫

如果一个固定的ip在短暂的时间内,快速大量的访问一个网站,那自然会引起注意,管理员可以通过一些手段把这个ip给封了,爬虫程序自然也就做不了什么了。

解决方法:

比较成熟的方式是:IP代理池

简单的说,就是通过IP代理,从不同的IP进行访问,这样就不会被封掉IP了。

可是IP代理的获取本身就是一个很麻烦的事情,网上有免费和付费的,但是质量都层次不齐。如果是企业里需要的话,可以通过自己购买集群云服务来自建代理池。

def get_ip_poll():
‘’’
模拟代理池
返回一个字典类型的键值对,
‘’’
ip_poll = [“http://xx.xxx.xxx.xxx:8000”,
“http://xx.xxx.xxx.xxx:8111”,
“http://xx.xxx.xxx.xxx:802”,
“http://xx.xxx.xxx.xxx:9922”,
“http://xx.xxx.xxx.xxx:801”]
addresses = {}
addresses[‘http’] = ip_poll[random.randint(0, len(ip_poll))]
return addresses

4.通过robots.txt来限制爬虫

世界上做爬虫最大最好的就是Google了,搜索引擎本身就是一个超级大的爬虫,Google开发出来爬虫24h不间断的在网上爬取着新的信息,并返回给数据库,但是这些搜索引擎的爬虫都遵守着一个协议:robots.txt

robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛)。此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。因为一些系统中的URL是大小写敏感的,所以robots.txt的文件名应统一为小写。robots.txt应放置于网站的根目录下。如果想单独定义搜索引擎的漫游器访问子目录时的行为,那么可以将自定的设置合并到根目录下的robots.txt,或者使用robots元数据(Metadata,又称元数据)。robots.txt协议并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私。注意robots.txt是用字符串比较来确定是否获取URL,所以目录末尾有与没有斜杠“/”表示的是不同的URL。robots.txt允许使用类似"Disallow: *.gif"这样的通配符[1][2]。

当然在特定情况下,比如说我们爬虫的获取网页的速度,和人类浏览网页是差不多的,这并不会给服务器造成太大的性能损失,在这种情况下,我们是可以不用恪守 robots协议的。

以上4种反爬方式,你学会了吗?

Python常见的反爬及解决方法,值得收藏相关推荐

  1. Python | 常见的反爬及解决方法,值得收藏

    我们都知道Python用来爬数据,为了不让自家的数据被别人随意的爬走,你知道怎么反爬吗?今天播妞带着大家一起见识见识常见的反爬技术. 很多人学习python,不知道从何学起. 很多人学习python, ...

  2. Python 常见的反爬手段和解决思路

    学习目标: 1.了解 服务器反爬的原因: 2.了解 服务器常反什么样的爬虫: 3.了解 反爬虫领域常见的一些概念: 4.了解 反爬的三个方向: 5.了解 常见基于身份识别进行反爬: 6.了解 常见基于 ...

  3. python网络爬虫系列(八)——常见的反爬手段和解决方法

    常见的反爬手段和解决思路 学习目标 了解 服务器反爬的原因 了解 服务器常反什么样的爬虫 了解 反爬虫领域常见的一些概念 了解 反爬的三个方向 了解 常见基于身份识别进行反爬 了解 常见基于爬虫行为进 ...

  4. 【爬虫进阶】常见的反爬手段和解决方法(建议收藏)

    爬虫进阶:常见的反爬手段和解决思路 1 服务器反爬的原因 2 服务器常反什么样的爬虫 3 反爬虫领域常见的一些概念 4 反爬的三个方向 5 常见基于身份识别进行反爬 5.1 通过headers字段来反 ...

  5. python爬虫常见反爬措施_爬虫常见的反爬措施有哪些

    爬虫常见的反爬措施有三种: 1.header头部信息 解决方法: 加User-Agent值: 如果不加header头,部分网站服务器判断不到用户的访问来源,所以会返回一个404错误来告知你是一个爬虫, ...

  6. Python爬虫:常见的反爬

    常见的反爬 爬虫流程 确定爬虫对象(爬哪个网页的数据) 找接口 有接口:直接对接口发送请求 成功(直接json解析) 失败就进入下一步 没有接口,直接进入下一步 用requests直接对网页地址发送请 ...

  7. 关于爬虫反爬机制处理方法(整合)

    常见得反爬机制及解决办法 1.针对请求头做出得反爬 简介:网站通过去检查headers中的User-Agent字段来反爬,如果我们没有设置请求头,那么headers默认是python这样就会出现访问失 ...

  8. mysql 死锁原因_Mysql并发时经典常见的死锁原因及解决方法

    1.mysql都有什么锁 MySQL有三种锁的级别:页级.表级.行级. 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低. 行级锁:开销大,加锁慢:会出现死锁:锁定粒 ...

  9. 松下a6伺服驱动连接光栅尺_FANUC常见伺服报警及故障解决方法

    FANUC常见伺服报警及故障解决方法 FANUC常见伺服报警及故障解决方法 偶尔SV0435:逆变器DC链路电压低报警 1.确认DCLINK母线接线端子螺丝是否锁紧; 2.如果发生全轴或多轴报警时,请 ...

最新文章

  1. 11.2 滑动窗口-机器学习笔记-斯坦福吴恩达教授
  2. Windows10下的AlphaPose配置,人体摔倒姿态识别
  3. Linux复习资料(一)、VM虚拟机安装教程
  4. [Vue.js] Vuex的使用
  5. 两个矩阵是否相交的算法_个性化推荐召回算法——Personal Rank
  6. mysql 分页_mysql大表分页查询翻页优化方案
  7. LTE下行DC子载波为0的原因解释
  8. 【微信小程序开发】 踩坑 抽奖幸运大转盘 完美实战
  9. 如何清理电脑C盘垃圾
  10. 制作U盘启动盘--win7系统
  11. java ftp 卡死_ftpclient卡死问题
  12. 如何创建 “抢占实例” 云服务器BCC?抢占式实例云服务器创建步骤
  13. CRM 学习笔记(一)
  14. MySQL模糊查询like优化,再也用不着 like+% 了
  15. L1-079 天梯赛的善良 (20 分) java
  16. 【微信小程序+echarts点亮中国地图】微信小程序echarts中国地图点亮功能
  17. 计算机科学与应用 期刊级别,智能计算机与应用是什么级别的刊物
  18. 吴恩达机器学习 EX7 第二部分 主成分分析(PCA)
  19. 双十一就要到啦,教你用Python制作抢购脚本,秒杀一切商品
  20. nokia 7 Android8,全面屏+原生安卓8.0:NOKIA 诺基亚 发布 Nokia 7 Plus 手机

热门文章

  1. 游戏开发unity打包相关系列:使用IL2CPP时打包windows程序出现Currently selected scripting backend (IL2CPP) is not installed
  2. C语言字符串转ASCII、ASCII转字符串、字符串转数组、sprintf、toascii、类型强转、strtol、atoi
  3. .netCore 解决跨域问题
  4. python翻译-用Python做一个简单的翻译工具
  5. Js拆分字符串split多出一个空字符
  6. ORA-01111 ORA-01110
  7. Linux redis集群重启
  8. 和铂医药与Mount Sinai合作研发抗肿瘤及抗新型冠状病毒创新药
  9. 从0-1带你手写代码生成器(Java版)
  10. android 仿iphone主题之主菜单