反爬虫机制(一)

爬虫用久了,总是会被封的。——鲁迅

有些网站,特别是一些陈年老站,没有做过反爬虫机制的,我们可以尽情地爬,愉快地爬,把它们的底裤。。数据全都爬下来。最多出于情怀考虑,我们爬慢一点,不给它的服务器太大压力。但是对于有反爬虫机制的网站,我们不能这样。

U-A校验

最简单的反爬虫机制应该是U-A校验了。浏览器在发送请求的时候,会附带一部分浏览器及当前系统环境的参数给服务器,这部分数据放在HTTP请求的header部分。

我们要做的就是通过requests库设置我们的爬虫U-A。一般来说第三方库发送请求会有一个默认的U-A,如果我们直接用这个U-A,就等于直接告诉别人,我就是爬虫,快来禁我!有些网站如果不设置U-A是上不去的。requests库设置U-A也很简单。

def download_page(url):
    headers={
        ‘User-Agent‘: ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36‘
    }
    data = requests.get(url,headers=headers)
    return data

当然我们如果反复访问同一个网站,却一直使用同一个U-A,也是不行的。可以弄一个U-A池,然后每次访问时都从中随机抽取一个U-A。

访问频率限制

一般来说,真人浏览网页的速度相对程序是很慢的,但是爬虫不一样。如果有人一秒钟访问了100次同一个网站,那几乎毫无疑问,这就是爬虫。一般来说,面对这种情况,我们有两种办法来解决。

第一种办法很简单。既然访问太快会被禁,那我访问慢点就好了啊。我们可以在每次访问完网站之后就设置一个time.sleep,限制访问速度。最好是用一台机器从慢到快访问,找到被封的阈值,然后以稍微低一点的速度进行访问。

第二种方法就是换ip。网站一般是通过ip来识别访问者的身份的,所以我们只要不停地更换ip,就可以伪装成不同的人。同一个ip一秒钟访问了100次很不正常,但是100个ip一秒钟访问100次就很正常了。那么我们如何更换ip呢?其实也不用真正更换我们的ip,而是通过代理ip转发我们的请求。不少网站提供了很多免费的代理ip,我们只要把它们爬下来,以备不时之需。不过很多代理ip寿命都不长,所以需要时常进行检测。requests设置代理ip也很简单。

proxies = {"http": "http://42.228.3.155:8080",}
requests.get(url, proxies=proxies)

验证码

有些网站,不管你做什么,登录还是访问页面,都需要输入验证码进行验证。在这种情况下,我们必须识别出验证码,才能爬取网站内容。有些简单的字母加数字的验证码可以用ocr进行识别,其他一些滑动验证之类的就需要其他的技巧来破解,这里就不详谈了。

登录验证

登录很多时候是服务于网站功能的,反爬虫不过是顺带的目的。我们可以通过按F12检查开发者工具来看网站在登录时会发送什么数据,然后通过requests的相关函数模拟登陆。如果以后有时间会专门写一篇文章来详细说说。

原文地址:https://www.cnblogs.com/rain-poi/p/11516116.html

时间: 2024-07-31 18:37:46

反爬虫机制(一)的相关文章

【爬虫】关于企业信用信息公示系统-加速乐最新反爬虫机制

( ̄▽ ̄)~*又得半夜修仙了,作为一个爬虫小白,花了3天时间写好的程序,才跑了一个月目标网站就更新了,是有点悲催,还是要只有一天的时间重构. 升级后网站的层次结构并没有太多变化,表面上是国家企业信用信息公示系统 的验证码又升级了.之前是 点按后滑动拼图方式: 现在的验证码主要是按顺序点击图片汉字验证码,但也不排除会出现以前的点按拖动验证码: 验证码的破解这里就不详细介绍了,需要的可以私信我们一起讨论研究下,详细可参考极验验证码破解-源码+破解手册,极验二代和三代验证码破解的方式基本都是一个套路的

反爬虫机制方法API

今天来总结下爬虫常见的反反爬取手段的方法,以后直接复制调用即可--^o^ 1.设置User-Agent(随机获取) 结合scrapy框架 (1) 配置setting.py USER_AGNET_LIST = [    "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; DigExt) ",    "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; TUCOWS) &qu

网站常见的反爬虫和应对方法

这几天在爬一个网站,网站做了很多反爬虫工作,爬起来有些艰难,花了一些时间才绕过反爬虫.在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下. 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分.这里我们只讨论数据采集部分. 一般网站从三个方面反爬虫:用户请求的Headers,用户行为,网站目录和数据加载方式.前两种比较容易遇到,大多数网站都从这些角度来反爬虫.第三种一些应用ajax的网站会采用,这样增大了爬取的难度. 通过Headers反爬虫  从用户请求的Headers反爬虫是最常

python解决网站的反爬虫策略

网站的反爬虫策略: 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分.这里我们只讨论数据采集部分. 一般网站从三个方面反爬虫:用户请求的Headers,用户行为,网站目录和数据加载方式.前两种比较容易遇到,大多数网站都从这些角度来反爬虫.第三种一些应用ajax的网站会采用,这样增大了爬取的难度(防止静态爬虫使用ajax技术动态加载页面). 1.从用户请求的Headers反爬虫是最常见的反爬虫策略. 伪装header.很多网站都会对Headers的User-Agent进行检测,还有一部分网站

常见的反爬虫和应对方法

0x01 常见的反爬虫 这几天在爬一个网站,网站做了很多反爬虫工作,爬起来有些艰难,花了一些时间才绕过反爬虫.在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下. 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分.这里我们只讨论数据采集部分. 一般网站从三个方面反爬虫:用户请求的Headers,用户行为,网站目录和数据加载方式.前两种比较容易遇到,大多数网站都从这些角度来反爬虫.第三种一些应用ajax的网站会采用,这样增大了爬取的难度. 0x02 通过Headers反爬虫 从用户

网站常见的反爬虫和应对方法(转)

在我们的对2016年大数据行业的预测文章<2016年大数据将走下神坛拥抱生活 资本青睐创业机会多>里,我们曾经提到“在2016年,防止网站数据爬取将变成一种生意.”.今天我找到了来自”BSDR“的一篇文章,文章里主要介绍了常见的反爬虫应对方法,下面是正文. 常见的反爬虫 这几天在爬一个网站,网站做了很多反爬虫工作,爬起来有些艰难,花了一些时间才绕过反爬虫.在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下. 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分.这里我们只讨论数据采

反击“猫眼电影”网站的反爬虫策略

0×01 前言 前两天在百家号上看到一篇名为<反击爬虫,前端工程师的脑洞可以有多大?>的文章,文章从多方面结合实际情况列举了包括猫眼电影.美团.去哪儿等大型电商网站的反爬虫机制.的确,如文章所说,对于一张网页,我们往往希望它是结构良好,内容清晰的,这样搜索引擎才能准确地认知它:而反过来,又有一些情景,我们不希望内容能被轻易获取,比方说电商网站的交易额,高等学校网站的题目等.因为这些内容,往往是一个产品的生命线,必须做到有效地保护.这就是爬虫与反爬虫这一话题的由来.本文就以做的较好的"

【转载】网站常见的反爬虫和应对方法

http://www.36dsj.com/archives/40809 在我们的对2016年大数据行业的预测文章<2016年大数据将走下神坛拥抱生活 资本青睐创业机会多>里,我们曾经提到“在2016年,防止网站数据爬取将变成一种生意.”.今天我找到了来自”BSDR“的一篇文章,文章里主要介绍了常见的反爬虫应对方法,下面是正文. 常见的反爬虫 这几天在爬一个网站,网站做了很多反爬虫工作,爬起来有些艰难,花了一些时间才绕过反爬虫.在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下. 从功

反-反爬虫:用几行代码写出和人类一样的动态爬虫

欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:李大伟 Phantomjs简介 什么是Phantomjs Phantomjs官网介绍是:不需要浏览器的完整web协议栈(Full web stack No browser required),也就是常说的无头浏览器--或者好听点叫做:无界面的web解析器. Phantomjs的特点 由于"无头"--免去了渲染可视化的网页界面,她的速度要比一般的浏览器快不少,又因为她是完整的web协议栈,所以不仅仅提供了JavaScri