网页视频抓取工具 知乎(一下反爬虫策略及其应对方法,你值得拥有!!)
优采云 发布时间: 2022-01-05 18:05网页视频抓取工具 知乎(一下反爬虫策略及其应对方法,你值得拥有!!)
随着大数据的普及,互联网上各种网络爬虫/爬虫工具蜂拥而至。因此,网络数据成为大家竞争和掠夺的资源,但网站运营商必须开始保护自己的数据资源。避免竞争对手获取您自己的数据,防止更大的业务损失。下面总结一下反爬虫策略及其对策。
来看看我用的代理IP。质量非常好。如果需要,您可以对其进行测试:
专属资源适合长期爬虫业务,IP并发量大,API调用频率不限,海量抽取,产品安全稳定,支持http、https、sk5三种协议,适合爬虫(舆论、e-电商、短视频)、抢购、seo等多种业务
个人电脑:
移动
一、什么是爬虫和反爬虫
一张图说明一切:
爬虫和反爬虫是致命的对手,无论爬虫多么强大,都可以通过复杂的反爬虫机制被发现。同样,无论爬行动物多么强大
系统多么细致,先进的网络爬虫都能破解。胜负的关键取决于双方投入了多少资源。为了更好的了解爬虫和反
爬虫机制,下面有一些定义:
爬虫:利用任何技术手段批量获取网站信息。关键是批量大小。
反爬虫:使用任何技术手段防止他人批量获取自己的网站信息。关键也是批次。
误伤:在反爬虫过程中,普通用户被误认为是爬虫。误伤率高的反爬虫策略再有效也无法使用。
拦截:成功阻止爬虫访问。会有拦截率的概念。一般来说,反爬虫策略的拦截率越高,意外伤害的可能性就越大。所以有一个权衡。
因此,我们可以知道爬虫最基本的特性之一就是批处理,反爬虫机制也是根据这个特性做出判断的,但是反爬虫
仍然是权衡利弊的选择。它既要求低误伤率,又要求高拦截率。这也是它的漏洞。关于网站为什么以及如何制作
确定反爬虫策略,可以看反爬虫经验总结。
二、反爬虫方法及响应
一般来说,网站从三个方面进行反爬虫:请求网站访问时的header、用户行为、目标网站目录和数据加载方式。向前
两个方面可以说是反爬虫策略中最常见的,第三个是使用ajax(异步加载)来加载页面目录或内容。
增加爬虫在形成对目标网站的访问后获取数据的难度。
但是仅仅检查请求头或者做一些ip限制显然不能满足运营商对反垃圾邮件的要求,所以进一步的对策
也有很多付出。最重要的大概是:Cookie限制、验证码反爬虫、Noscript。
2.1 个通过 Headers 的反爬虫
从用户请求的Headers反爬取是最常见的反爬取策略。由于普通用户通过浏览器访问网站,目标网络
站点在收到请求时通常会检查Headers 中的User-Agent 字段。如果不是携带正常User-Agent信息的请求,则无法进行通信。
通过请求。还有一部分网站为了防止盗链,也会校验请求头中的Referer字段。如果遇到这种反爬虫机制,可以
为了直接给自己写的爬虫添加Headers,将浏览器的User-Agent复制到爬虫的Headers中;此外,通过捕获请求
包分析,修改Referer值到目标网站域名,可以很好的绕过。
2.2 基于用户行为的反爬虫
有些网站会通过用户行为来检测网站的访问者是否是爬虫。例如,同一个IP在短时间内多次访问同一个页面,或者同一个
在短时间内对一个帐户执行多次相同的操作。大多数 网站 都是前一种情况。针对这种情况有两种策略:
1)使用代理ip。比如可以写一个专门的脚本去抓取网上可用的代理ip,然后将抓取到的代理ip维护到代理池中进行爬取
蠕虫使用,当然,其实不管抓到的ip是免费的还是付费的,平时的使用效果都是很一般的。如果您需要捕获高价值数据
如果愿意,也可以考虑购买宽带adsl拨号VPS。如果ip被目标网站屏蔽了,再拨一下就行了。
2) 降低请求频率。例如,每个时间段请求一次或多次请求后休眠一段时间。由于网站得到的ip是一个
局域网的ip,该ip是区域内所有人共享的,所以间隔不需要特别长
在第二种情况下,您可以在每次请求后以几秒钟的随机间隔发出下一个请求。对于有逻辑漏洞的网站,可以请求多个
二、注销,重新登录,继续请求,绕过同一账号短时间内不能多次发出同一个请求的限制。如果有多个账户,
切换使用,效果更佳。
2.3 动态页面反爬虫
以上情况大部分出现在静态页面上,但是对于动态网页,我们需要爬取的数据是通过ajax请求获取的,或者通过
通过 JavaScript 生成。首先使用 Firebug 或 HttpFox 来分析网络请求。如果能找到ajax请求,也可以具体分析一下
参数和响应的具体含义,我们可以使用上面的方法,直接用requests或者urllib2来模拟ajax请求,响应json
执行分析以获得所需的数据。
能够直接模拟ajax请求获取数据是很棒的,但是有的网站加密了ajax请求的所有参数。我们什么也做不了
为您需要的数据构建一个请求。还有一些被严格保护的网站,除了对ajax参数进行加密外,还封装了一些基础功能,
都是在调用自己的接口,接口参数都是加密的。
遇到这样的网站,就不能用上面的方法了。使用selenium+phantomJS框架调用浏览器内核使用
phantomJS 执行 js 来模拟人工操作并触发页面中的 js 脚本。从填表到点击按钮到滚动页面,一切都可以建模
计划是,不管具体的请求和响应过程,只是完全模拟人们浏览页面获取数据的过程。使用这个框架几乎环绕
大多数反爬虫,因为它不是冒充浏览器获取数据(上面提到的通过添加
headers 是在一定程度上伪装成浏览器),它本身就是一个浏览器,phantomJS 是一个没有界面的浏览器,只有
控制这个浏览器的不是人。
2.4 Cookie 限制
类似于Headers验证的反爬虫机制,当用户向目标网站发送请求时,请求数据会再次携带Cookie,网站会通过验证
请求信息中是否有cookie,通过cookie的值判断请求是真实用户还是爬虫,第一次打开
该网页将生成一个随机 cookie。如果再次打开网页时cookie不存在,您可以重新设置。第三次打开它,它仍然不存在。
爬虫很可能正在工作。
Cookie Check 和 Headers 的区别在于用户发送的 Headers 的内容格式是固定的,很容易被伪造。饼干不是。
当然。原因是我们在分析浏览器请求网站访问的过程中分析的cookies,往往是通过相关的js等进程处理的。
如果更改了域的cookie,如果直接手动修改爬虫携带的cookie来访问相应的网页,则携带的cookie已经是访问者。
在询问域之后,而不是访问之前的域,是不可能成功模拟整个过程的。这种情况必然会导致爬虫访问页面
失败。分析cookies,它可能携带大量随机hash字符串,或者不同时间戳的字符串,并且会根据每次访问进行更新。
新域名的价值。对于这个限制,你必须在捕获和分析目标网站时先清除浏览器的cookies,然后在第一次访问
在完成访问的过程中观察浏览器的请求细节(这个过程中通常会发生几次301/302跳转,每次跳转网站返回
向浏览器返回不同的cookie,最后跳转请求成功)。抓包完成对请求细节的分析后,对爬虫进行建模
规划好这个过渡过程,然后将cookie作为爬虫本身携带的cookie进行拦截,这样就可以绕过cookie的限制完成目标网站
参观过。
2.5 验证码限制
这是一个相当古老但有效的反爬虫策略。早些时候,这种验证码可以通过OCR技术进行简单的图像识别。
不要破解,但目前验证码的干扰线噪声太大,肉眼无法轻易识别。所以现在,由于 OCR
在技术发展薄弱的情况下,验证码技术已经成为许多网站最有效的方法之一。
除了识别问题,验证码还有一个值得注意的问题。许多网站现在都在使用第三方验证码服务。当用户点击
打开目标网站的登录页面时,登录页面显示的验证码是从第三方(如阿里云)提供的链接中加载的。此时,我们正在模拟
登录时,您需要多一步从网页提供的第三方链接中获取验证码,而这一步往往意味着一个陷阱。由阿里云提供
以验证码服务为例,登录页面的源码中会显示阿里云提供的第三方链接,但是匹配到这个链接就可以抓取验证码了
稍后我们会发现验证码无效。仔细分析抓包的请求数据,发现普通浏览器在请求验证码时会带一个额外的ts。
参数,该参数是由当前时间戳生成的,但它不是完整的时间戳,而是将时间戳四舍五入保留字后九位
Fustring,对付这种第三方服务只能小心翼翼,运气好,三分之一的日子注定是猜不透的。还有一种特殊的第三方检验
证书代码,也就是所谓的拖拽验证,只能说互联网创业有3种模式:2b、2c、2vc。