本文小编为大家详细介绍“python网站常见的反扒方式有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“python网站常见的反扒方式有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
网站反爬虫方式:
一、通过 User-Agent 来控制访问:
无论是浏览器还是爬虫程序,在向服务器发起网络请求的时候,都会发过去一个头文件:headers, 表明身份,对于爬虫程序来说,最需要注意的字段就是:User-Agent 很多网站都会建立 User-Agent 白名单,只有属于正常范围的 User-Agent 才能够正常访问。
解决方法:可以自己设置一下 User-Agent,或者更好的是,可以从一系列的 User-Agent 里随机挑出一个符合标准的使用 。
二、通过 JS 脚本来防止爬虫:
举个例子:如果想爬取某个网站,在请求之前,它会有一个验证页面来验证你是否为爬虫程序。它是怎么实现的呢?他会通过 JS 代码生成一大段随机的数字,然后要求浏览器通过 js 的运算得出这一串数字的和,再返回给服务器。
解决方法: 使用 PhantomJS !PhantomJS 是一个 Python 包,他可以在没有图形界面的情况下,完全模拟一个浏览器“,JS 脚本验证什么的再也不是问题了。
三、通过IP限制来反爬虫:
如果一个固定的 ip 在短暂的时间内,快速大量的访问一个网站,那自然会引起注意,管理员可以通过一些手段把这个 ip 给封了,爬虫程序自然也就做不了什么了。
解决方法:比较成熟的方式是:IP 代理池 简单的说,就是通过 ip 代理,从不同的 ip 进行访问,这样就不会被封掉 ip 了。可是ip代理的获取本身就是一个很麻烦的事情,网上有免费和付费的,但是质量都层次不齐。
如果是企业里需要的话,可以通过自己购买集群云服务来自建代理池。
实现方式如下:
def get_ip_poll():
'''
模拟代理池 返回一个字典类型的键值对,
'''
ip_poll = ["http://xx.xxx.xxx.xxx:9999",
"http://xx.xxx.xxx.xxx:8000",
"http://xx.xxx.xxx.xxx:8080",
"http://xx.xxx.xxx.xxx:9922",
"http://xx.xxx.xxx.xxx:8090"]
addresses = {}
addresses['http'] = ip_poll[random.randint(0, len(ip_poll))]
return addresses
四、通过 robots.txt 来限制爬虫:
世界上做爬虫最大最好的就是 Google 了,搜索引擎本身就是一个超级大的爬虫,Google 开发出来爬虫 24h 不间断的在网上爬取着新的信息,并返回给数据库,但是这些搜索引擎的爬虫都遵守着一个协议:robots.txt robots.txt(统一小写)是一种存放于网站根目录下的 ASCII 编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。robots.txt协议并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私。
注意robots.txt是用字符串比较来确定是否获取URL,所以目录末尾有与没有斜杠“/”表示的是不同的URL。
robots.txt 允许使用类似"Disallow: *.gif"这样的通配符[1][2]。因为一些系统中的 URL 是大小写敏感的,所以 robots.txt 的文件名应统一为小写。robots.txt 应放置于网站的根目录下。如果想单独定义搜索引擎的漫游器访问子目录时的行为,那么可以将自定的设置合并到根目录下的 robots.txt,或者使用 robots 元数据(Metadata,又称元数据)。
当然在特定情况下,比如说我们爬虫的获取网页的速度,和人类浏览网页是差不多的,这并不会给服务器造成太大的性能损失,在这种情况下,我们是可以不用恪守 robots 协议的。
读到这里,这篇“python网站常见的反扒方式有哪些”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。