怎么爬虫不容易被对方反扒系统发现?

发布于 2017-04-09 17:26:56
最近公司要求爬虫一些数据回来,老是被封IP,请问怎么做到不被对方发现?

查看更多

关注者
0
被浏览
3.4k
13 个回答
BUG终结者
BUG终结者 2017-01-29

添加代理池,模拟登录等等

超级汪汪汪
超级汪汪汪 2017-03-30
人生就是一场大型交互游戏

爬虫进阶应该怎么做?通常所谓的进阶有以下几种:

分布式

通常会有一些教材告诉你,为了爬取效率,需要把爬虫分布式部署到多台机器上。这完全是骗人的。分布式唯一的作用是:防止对方封IP。封IP是终极手段,效果非常好,当然,误伤起用户也是非常爽的。

模拟JavaScript

有些教程会说,模拟javascript,抓取动态网页,是进阶技巧。但是其实这只是个很简单的功能。因为,如果对方没有反爬虫,你完全可以直接抓ajax本身,而无需关心js怎么处理的。如果对方有反爬虫,那么javascript必然十分复杂,重点在于分析,而不仅仅是简单的模拟。

换句话说:这应该是基本功。

PhantomJs

这个是一个极端的例子。这个东西本意是用来做自动测试的,结果因为效果很好,很多人拿来做爬虫。但是这个东西有个硬伤,就是:效率。

脚本小乒乓
脚本小乒乓 2017-03-18
暂时没什么可以说的

对于反爬虫我是比较阴的,通过行为判断出是爬虫来,我是不直接拒绝的,而是提供比较真实的伪数据和真数据混在一起,让他们抓几个月后才发现数据不是全部正确,白白浪费时间,让他们很难发现我的反扒规则。

liuwanqi_187
liuwanqi_187 2017-02-18
暂时没什么可以说的

相比其他程序猿来说,爬虫程序猿,或者做风控、欺诈的策略和开发是比较有意思的,毕竟与人斗其乐无穷

.不正经的程序媛
媛妙不可言

对一个网站定向抓取几十万张页面一般只用解决访问频率限制问题就好了。对机器内存,硬盘空间,URL去重,网络性能,抓取间隙时间调优一般都不会在意。如果要设计一个单台每天抓取上百万张网页,共有一亿张页面的网站时,访问频率限制问题就不是最棘手的问题了,上述每一项都要很好解决才行。硬盘存储,内存,网络性能等问题我们一项项来拆解。

java小丑
java小丑 2017-04-18
暂时没什么可以说的

“爬”,本身就是一种对抗行为。 要尽量隐匿自己的行为,方法论很多不细讲了,没有屠龙之技。 最重要的是不能影响对方运维的 KPI ,不能严重到对方研发介入。码农都是混口饭过日子的,都不容易,逼的对方加班升级加策略的最终码农和产品经理去PK 直接就把功能下线了。

世界这么大我想去看看
seeseesee

反爬虫的本质是找去真正人类用户和爬虫程序的区别,限制爬虫程序的访问,理论上只要爬虫程序可以模拟任何人上网的行为,就可以完美击败反爬虫机制。

现在市场上领先的采集器全都是内置浏览器的,比如八爪鱼采集器,内置浏览器几乎可以模拟用户的所有行为,包括移动鼠标,点击鼠标,翻页,点击链接,滚动鼠标滚轮,切换下拉菜单,输入文字,自动识别验证码(人工打码+机器识别),甚至看到不同的页面还能采取不同的处理流程,云采集还有成千上万的IP实时切换。

晴天小哥哥
晴天小哥哥 2017-07-18
啊 这天 啊 这水

应对反爬虫,先分析服务器是通过什么来反爬,通过ip就用代理,通过cookie就换cookie,针对性的构建request。

TaoZi
TaoZi 2017-07-18

Headers限制

这应该是最常见的,最基本的反爬虫手段,主要是初步判断你是否是真实的浏览器在操作。

这个一般很好解决,把浏览器中的Headers信息复制上去就OK了。

xxyy83
xxyy83 2017-02-18
暂时没什么可以说的

限制IP也是很多网站反爬虫的初衷,有些人随便写一个循环,就开始暴力爬取 ,确实会给网站服务器带来很大的负担,而这种频繁的访问,显然也不会是真实用户行为,索性果断把你封掉。这种情况,你可以遵守规则,把你爬取的速度变慢,每次爬取停个几秒就行了。如果爬取的数据量不大,其实也浪费不了多少时间,反正你也可以利用这段时间做做其他事情,或者好好思考一下人生。

啥的健康恢复卡接收到回复
于是洛灵感焉

其实有时候反爬虫是件很无奈的事情,谷歌的爬虫也是爬虫,但是为了 seo, 不能给封禁了吧,另外写个小爬虫做点高效的工具,其实也无可厚非。所以反爬虫其实反的是恶意爬虫,刚学个爬虫,暴力循环个 id 一顿猛爬,导致目标网站资源飙升,这不是给工程师找事么。

撰写答案

请登录后再发布答案,点击登录

分享
好友

手机
浏览

扫码手机浏览