怎么可以防止网页被抓取 - 技术问答

怎么可以防止网页被抓取 - 技术问答,第1张

看你的需求了,可以搞得很复杂,也可以搞得很low。之前是做采集的,算不上大神级别。不过可以说80%以上的H5、网页、app可以搞定。单击和分布式爬虫都弄过。日采集上千万数据的不少。覆盖也比较广,视频、电商、新闻、舆论分析类等等。总结起来,每个网站的难度都不一样,99%数据是可以抓取到的。百度就是国内最大的爬虫,所以想要完全禁止的,除非服务器关了,数据删了。否则要采集的手段太多了,无外乎就是出于成本上的考虑。
反爬虫也是需要付出成本的,包括了体验差导致用户流失,内部用的走内网。给用户用的只能做到减少,如果你的数据很有价值,建议是请一个有实力的技术做一些防护。百度上能回答的基本是有解的。
总结一下:反爬只能防君子,防不了小人,可以加大难度,方法也有很多。不过也只是加大采集成本

1、根据UA机制识别爬虫。
UA的全称是UserAgent,它是请求浏览器的身份标志,很多网站使用它来是识别爬虫的标志,如果访问请求的头部中没有带UA那么就会被判定为爬虫,但由于这种要针对这种反爬虫机制十分容易,即随机UA,所以这种反爬机制使用的很少。
2、根据访问频率识别爬虫。
爬虫为了保证效率,往往会在很短的时间内多次访问目标网站,所以可以根据单个IP访问的频率来判断是否为爬虫。并且,这种反爬方式比较难以被反反爬机制反制,只有通过更换代理IP来保证效率,IPIDEA提供高匿稳定的IP同时更注重用户隐私的保护,保障用户的信息安全。
3、通过Cookie和验证码识别爬虫。
Cookie就是指会员制的账号密码登陆验证,这就可以根据限制单账号抓取频率来限制爬虫抓取,而验证码完全是随机的,爬虫脚本无法正确识别,同样可以限制爬虫程序。

有。
爬虫就是我们利用某种程序代替人工批量读取、获取网站上的资料信息。而反爬则是跟爬虫的对立面,是竭尽全力阻止非人为的采集网站信息,二者相生相克,水火不容,到目前为止大部分的网站都还是可以轻易的爬取资料信息。爬虫想要绕过被反的策略就是尽可能的让服务器人你不是机器程序,所以在程序中就要把自己伪装成浏览器访问网站,这可以极大程度降低被反的概率。

分辨爬虫的善恶。
网络爬虫分为两种,一种是善意爬虫,例如百度、Google等搜索引擎的爬虫,另一种是恶意爬虫,它可能会利用网站漏洞,非法窃取网站数据,或者爬取网站内容,占用服务器资源。恶意爬虫的行为是我们所深恶痛觉的,必须想尽办法予以过滤和阻断。网站或者某一些网页不想被诸如百度、Googl等善意爬虫爬取时,我们也希望能采取一些措施。
如何防止网站被爬虫?
针对善意爬虫,几乎所有的搜索引擎爬虫,都会遵守robots协议,只要我们在网站的根目录下存放一个ASCII编码的文本文件,告诉搜索引擎哪些页面不能爬取,搜索引擎的蜘蛛便会遵照协议,不爬取指定页面的内容。
但是robots并不是一个规范,而是一种君子协议,它只对善意爬虫有效,并不能防止恶意爬虫。
针对恶意爬虫,我们可以采取以下措施来识别和阻断它。

总的来讲,网站的反爬虫的策略有:检测爬取频率、并发连接数目、>

其中最常见的就是判断你的请求频率和并发数量,如果你在短时间内发送了大量的请求,也就是你的爬取速度很快的话,那么他就直接判断你是爬虫,这时候先把你IP封了再说,免得给自己的网站带来负担。

那么这些策略我们都如何应对呢?这几个方法都不同,

1、爬虫伪装浏览器点击

我们先理解一下网站的代码执行,首先我们向服务器发送请求,这时服务器的后台php、java都会执行,然后网站代码被发送到本地,在本地时js、ajax会在浏览器内核中执行。所以这时候我们就知道,爬虫不仅要欺骗phpjava代码、还要欺骗js和ajax代码。

2、使用代理

爬的太快会被封,是一定的。爬的太慢又非常耗时间。所以很多人都会说可以使用代理,所谓代理就是介于用户与网站之间的第三者:用户先将请求发到代理,然后代理再发到服务器,这样看起来就像是代理在访问那个网站了,实现一个不断的切换IP的假象。网上免费代理很多,但是能用的没几个,如果不想购买付费的代理,大家可以学习一下

3、降低访问频率

如果一直找不到好用的免费代理,又不想付费,最好的办法就是降低访问频率了。这样做可以达到与用代理一样的效果——防止被对方从访问量上看出来。比如:每抓取一个页面就休息随机几秒、限制每天抓取的页面数量。当然,在抓取效率上会差很多,因为数据量大的话,时间就会很长。

1基于程序本身去防止爬取:作为爬虫程序,爬取行为是对页面的源文件爬取,如爬取静态页面的html代码,可以用jquery去模仿写html,这种方法伪装的页面就很难被爬取了,不过这种方法对程序员的要求很高。
2基于iptables和shell脚本:可以对nginx的accesslog进行策略定义,例如定义在1分钟内并发连接数超过30个ip为非法,如ip不在白名单内,则加入iptables策略封掉,当然这种的缺点是会有“误伤”,策略细粒度越小就会有更多的“误伤”,细粒度大就会使效果变差,另外还有类似的第三方工具fail2ban,利用做filter和actor对一些有危害的 *** 作记录或是封ip。但是对于某个特定的爬虫地址(例如网易、有道)的爬取行为拒绝也很难准确做到,因为你无法准确知道这些特定的爬虫ip地址(例如网易、有道),以下是我的定位方式,不过发现由于ip库不准确造成错误的屏蔽。注意:建议不要用封ip条目的方式,iptables列表长度是65535时就会封满,服务器也就会死机。

找代理解决问题。出现这个现象的原因是因为网站采取了一些反爬中措施,如:服务器检测IP在单位时间内请求次数超过某个阀值导致,称为封IP。为了解决此类问题,代理就派上了用场,如:代理软件、付费代理、ADSL拨号代理,以帮助爬虫脱离封IP的苦海。

使用爬虫时ip限制问题的六种方法。

方法1

1、IP必须需要,如果有条件,建议一定要使用代理IP。 

2、在有外网IP的机器上,部署爬虫代理服务器。

3、你的程序,使用轮训替换代理服务器来访问想要采集的网站。

好处:

1、程序逻辑变化小,只需要代理功能。

2、根据对方网站屏蔽规则不同,你只需要添加更多的代理就行了。

3、就算具体IP被屏蔽了,你可以直接把代理服务器下线就OK,程序逻辑不需要变化。

方法2

1、ADSL+脚本,监测是否被封,然后不断切换ip。

2、设置查询频率限制正统的做法是调用该网站提供的服务接口。

方法3

1、useragent伪装和轮换。

2、使用雷电ip代理。

3、cookies的处理,有的网站对登陆用户政策宽松些。

方法4

尽可能的模拟用户行为:

1、UserAgent经常换一换。

2、访问时间间隔设长一点,访问时间设置为随机数。 

3、访问页面的顺序也可以随机着来。

方法5

网站封的依据一般是单位时间内特定IP的访问次数。将采集的任务按目标站点的IP进行分组通过控制每个IP在单位时间内发出任务的个数,来避免被封。当然,这个前题采集很多网站。如果只是采集一个网站,那么只能通过多外部IP的方式来实现了。

方法6

对爬虫抓取进行压力控制;可以考虑使用代理的方式访问目标站点。 

1、降低抓取频率,时间设置长一些,访问时间采用随机数。

2、频繁切换UserAgent(模拟浏览器访问)。

3、多页面数据,随机访问然后抓取数据。

4、更换用户IP,这是最直接有效的方法。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13486910.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-16
下一篇 2023-08-16

发表评论

登录后才能评论

评论列表(0条)

保存