V2EX 首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  PHP

大家都怎么防采集的?哪一种性能最高?

  •  
  •   tianxiacangshen · 6 天前 · 2757 次点击
    有不少站都有防采集,一般是 IP 和 cookie,还有 session (会员)

    1、从 IP 入手一般限制某个时间段内访问的最多次数,超过则出现验证码,弊端是每次访问都要检测该 ip 的访问次数和执行判断

    2、从 cookie 入手,较为简单,但是显然防守能力很差

    3、从会员入手,页面只有会员才能访问(或者超过多少页面就必须会员才能访问),一个会员一天只能访问多少次,弊端也很明显

    有没有更佳的方法?
    44 回复  |  直到 2017-05-22 14:28:27 +08:00
        1
    metowolf   6 天前
    对特征明显的、频度高的请求返回脏数据(删字改字添字)
        2
    dsg001   6 天前
    会员限制,超过阀值则每次访问都需要验证码
        3
    gouchaoer   6 天前 via Android   ♥ 2
    验证码不是一个好的方案,反爬虫最重要的是不能让爬虫知道你已经知道它是爬虫了
        4
    humxman   6 天前 via Android
    先载入一部分然后监听事件,如果没有动作(滚屏、鼠标动作)的话不请求后续内容。
        5
    karia   6 天前   ♥ 9
    刚写完爬虫的我用极其幽怨的眼神看着楼主。
        6
    ivmm   6 天前
    @karia 哈哈哈哈哈哈哈哈,笑出声
        7
    elfsong   6 天前
    讲道理 除了 Plan 3 其他两种代理池都可以搞定
        8
    olOwOlo   6 天前
    之前爬过的某站上面三种都有
    反爬虫一般都是独立出来的,类似 fail2ban 这种扫描日志(或者做个流量分析系统_(:з)∠)_?
    个人感觉从会员入手是效果最好的,频率过高直接封号_(:з)∠)_
    不过爬虫是挡不住的,只要是浏览器能访问的爬虫都能想办法获取到,除非像一些网站一样只显示前 X 页的内容
        9
    yidinghe   6 天前 via Android
    传输内容加密,加密解密的代码混淆,解密出来的文字用 canvas 画出来。
        10
    Reign   6 天前 via iPhone
    反爬做的足够好把用户和搜索引擎都干跑了,你能想到的反爬我们这些写爬虫的早就想到了,“弊端是每次访问都要检测该 ip 的访问次数和执行判断”,根本不是这个弊端,你还太年轻
        11
    ioriwong   6 天前
    我觉得动态加载是个不错的方案,一般爬虫不会模拟鼠标滚轮动作或键盘 Pagedown 动作
        12
    mokeyjay   6 天前
    用小说站的反采集方案吧。小说入库时,随机挑选一些字生成图片,将图片链接插入原文,删掉被图片替换的字。显示时用户无感知但爬出来的内容全是乱的
        13
    Akkuman   6 天前 via Android   ♥ 1
    直接提供接口😂
        14
    yangqi   6 天前
    要想 100%防是不可能的,只能防止一些比较初级的爬虫。现在的框架都是模拟浏览器访问,基本看不出来是爬虫
        15
    t6attack   6 天前
    自己设计了一套缺德的繁琐的机制。简单的说,判断出采集行为后随机穿插错误数据、重复数据。
        16
    crayygy   6 天前 via iPhone
    display:none
        17
    bjlbeyond   5 天前 via iPhone
    只能说是用一些手段去限制初级爬虫选手
        18
    tinyproxy   5 天前 via iPhone
    人家真要爬你,也就看谁更耗不起了。
        19
    dong3580   5 天前
    @yidinghe
    没用,全是 canvas 的话 jquery 直接提出 txt 来得了.
        20
    zpvip   5 天前
    把最常用的几百个汉字每小时生成图片,相同汉字每小时的图片名称不一样,程序内部有对应 hash,图片过一小时就自动删除,PHP 处理这个过程非常快,不到一秒。

    用 dns 检查是否为 Google 和百度爬虫,对爬虫不用图片替换。

    如果高手用 OCR,并且把所有图片都保存下来,也够他忙的,不可能绝对防住,只能恶心他们。
        21
    actto   5 天前 via Android
    还不如加个 api 接口提供给爬虫们,然后收费,每月 5 元。
        22
    AllenHai   5 天前
    1:网页中用框架,比如 QQ 空间;
    2:写一套流弊的 JS 加密程序,比如网易云音乐;
    3:每分钟请求超过一个阈值就弹验证码,检测到爬虫后返回 404 或者弹验证码或者给掺假的数据(半真半假那种);
    4:必须用手机号注册账号,检测到异地登录必须输手机验证码,cookies 有效期短一点;
    5:换字体,以前去哪儿用过;
    6:把阿里云的 IP 段禁掉;
    7:自己爬一下网上的免费代理,禁掉 IP ;
    8:提取浏览器特征,来反 webdriver ;
    9:UA 里做一些排查
        23
    silva   5 天前
    @AllenHai
    你好,问两个问题,换字体来防御爬虫是个什么原理?
    UA 是什么?
        24
    ty89   5 天前
    @AllenHai
    qq 空间的例子就算了,我刚爬完一批文章
        25
    lepture   5 天前 via iPhone
    @silva 改字体对应关系,字符是 A 显示为 B。
        26
    AllenHai   5 天前
    @silva UA 是指 user-agent,你去看下 requests,scrapy 的请求头,封它就对了;
    字体那个就像凯撒密码那样,把字体里数字换一下,通常数字顺序是 0~9,而自定义的字体里做个转换,比如 0 和 5 对应,1 和 9 对应。这个是挺有意思,但是也容易破解
        27
    Reign   5 天前
    @ioriwong 我写爬虫最喜欢你这种动态加载的方式了,一个 ajax 返回数据,连 HTML 解析都省去了
        28
    sampeng   5 天前
    特别反感爬虫,特别反感反爬虫

    这是一个矛盾的话题,做内容的,自然要去爬数据。如果有公开的接口信息,没人愿意去爬数据。可现实是没有。
    如果豆瓣,时光网有非常好的 api 直接提供,我相信没人愿意花费大量的时间精力去爬数据。
    这是国内环境造成的,看看国外的,基本有权威的影音数据库,直接公开查询接口。

    有些公共信息真的非常反感反爬虫机制,比如影音类的。。新闻类的。做个自定义 rss 都麻烦。。如果有收费的 api。我会直接购买。当然这是个遥不可及的想法。。。因为没有网站希望用户压根不上自己的平台。。国内现在大部分做内容的还是靠广告收费。任重而道远啊。。。。
        29
    coolcoffee   5 天前
    看来为了爬虫为了防止垃圾数据产生,还要对爬取的数据进行更换 IP 以及其它特征进行二次校验。
        30
    chairuosen   5 天前
    css:before 随机替换文章中的字
        31
    tianxiacangshen   5 天前
    @Reign 那还有啥更大的弊端?我以为只是占资源
        32
    tianxiacangshen   5 天前
    @mokeyjay 这个很好,抓到的内容不完整了,但是如果写个软件模拟浏览器将网页保存为图片的功能,将该网页保存为图片,然后将图片转换成 word..........
        33
    annielong   5 天前
    @mokeyjay 这个已经有破解了,直接建立图片库,采集后自动换成文字,记得无错小说网就是这样防采集的
        34
    wildcat007   5 天前
    上次在 V 站看到有个 网站 文字是一部分放到 div 里面,一部分放到 css 里面···看的我头都大了··
        35
    phrack   5 天前 via Android
    提个稍微偏题的

    要注意逻辑越多,代码就会越多,漏洞可能也越多
        36
    jccg90   5 天前
    反爬虫、用户体验、SEO 这几个要综合考虑吧。。。光考虑反爬虫了,用户体验和 SEO 都搞得一塌糊涂了,没有意义啊。。。
        37
    sunsulei   5 天前
    相爱相杀一百年...你们是没有未来的,放弃吧.
        38
    vus520   5 天前
    一句话,用户能看见的,都能采,叼不叼
        39
    tianxiacangshen   5 天前
    @phrack 支持你,我看有些人就顾着玩弄技术了,应该各方面均衡,用户体验、网站安全、网站性能等
        40
    wizardforcel   5 天前 via Android
    不算绩效就不防
        41
    8355   4 天前
    其实我觉得爬虫只要对你的服务器的正常浏览没有大的影响就用太过于关注它。除非它让你浏览猛增 你用你提的第一点限制一下就可以了。
        42
    akira   3 天前
    限制 ip 频次就足够了。 主要是防止有些低级爬虫爬的太凶,影响到正常用户使用。

    至于说完全不允许采集,这个基本上是不可能的了,别想了。
        43
    silva   2 天前
    @lepture
    @AllenHai
    谢谢,明白了
        44
    kcer   2 天前
    @karia 哈哈哈哈哈
    DigitalOcean
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   679 人在线   最高记录 2466   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.7.5 · 69ms · UTC 17:50 · PVG 01:50 · LAX 10:50 · JFK 13:50
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1