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

关于如何阻止网络爬虫

  •  
  •   1023400273 · 2015-03-17 09:36:56 +08:00 · 9939 次点击
    这是一个创建于 3530 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近我一个网站被别人扒了,未避免广告嫌疑url就不贴了,不知道有什么有效的方法可以防止爬虫呢?

    我想到的几个方法:
    1、限制IP访问频率(无效,后台看不到有异常ip访问,我猜想爬虫大约五六分钟来一次)
    2、用js动态加载数据内容(无效,爬虫支持js,且网站不利于seo)
    3、抛出js异常,部分爬虫会无法解析(仅仅只是部分)

    感觉爬虫和正常访问没啥区别,不知道有没有有效防止爬虫的方法

    做爬虫的法律风险都有啥?感觉好像不太容易举证,求解答
    52 条回复    2015-03-18 09:32:54 +08:00
    kslr
        1
    kslr  
       2015-03-17 09:40:44 +08:00   ❤️ 1
    没有完美的防守,只能提高爬虫的成本。

    往文本里面随机版权信息,但是白色字体试试?
    falcon05
        2
    falcon05  
       2015-03-17 09:46:24 +08:00 via iPhone   ❤️ 1
    斗智斗勇呗,哈哈
    1023400273
        3
    1023400273  
    OP
       2015-03-17 09:47:37 +08:00
    @kslr
    @falcon05 难道就这么跟他耗么
    mgc
        4
    mgc  
       2015-03-17 09:49:56 +08:00
    筛选搜索引擎IP,加入白名单
    其他IP一律只能访问5个页面,超过2个页面需要登录
    lingo233
        5
    lingo233  
       2015-03-17 09:54:05 +08:00 via iPhone   ❤️ 1
    你把12306的验证码系统搬来吧,访问一次输一次验证吗😜
    lujiajing1126
        6
    lujiajing1126  
       2015-03-17 09:56:16 +08:00   ❤️ 1
    做一套token系统
    不过不能从根本上限制,因为爬虫可以尽可量模仿人的行为
    1023400273
        7
    1023400273  
    OP
       2015-03-17 10:03:03 +08:00
    @mgc 不是搜索引擎,是一个竞争对手来扒的,他用的也不是固定ip,只允许访问5个页面的话可能会损失一部分流量,应该上面不会采纳这个意见的

    @lingo233 这样估计就没流量了


    @lujiajing1126 爬虫都可以模仿登录,token也应该无法根本解决
    mgc
        8
    mgc  
       2015-03-17 10:05:18 +08:00   ❤️ 1
    @1023400273 我自己就是做爬虫的,基本上是防不住的,办法已经告诉你了
    1023400273
        9
    1023400273  
    OP
       2015-03-17 10:10:25 +08:00
    @mgc 感谢
    lingo233
        10
    lingo233  
       2015-03-17 10:12:52 +08:00 via iPhone   ❤️ 2
    @1023400273 上面都说模仿人类行为了,不反人类怎么防:D
    lujiajing1126
        11
    lujiajing1126  
       2015-03-17 10:14:14 +08:00   ❤️ 1
    @1023400273 可以模仿登陆
    但是有Token可以做限制,比如说某个接口一分钟请求次数,类似于令牌桶
    增加爬虫的成本,如果爬虫爬的效率和人差不多。。那也没人会用了
    1023400273
        12
    1023400273  
    OP
       2015-03-17 10:22:50 +08:00
    @lujiajing1126 如果我做一个爬虫更新自己网站的数据,我肯定模仿人类的点击呀,因为这个效率是可以接受,比如五分钟访问一次,如果太频繁访问肯定被墙的
    lujiajing1126
        13
    lujiajing1126  
       2015-03-17 10:24:36 +08:00   ❤️ 1
    @1023400273
    那你还不如请个搬砖的帮你点呢
    爬虫就是为了快速高效收集海量数据吧
    1023400273
        14
    1023400273  
    OP
       2015-03-17 10:25:21 +08:00
    @mgc 不过话又说回来,你不担心会有法律风险吗,比如文字里面有版权,图片里面有水印啥的,哈哈
    1023400273
        15
    1023400273  
    OP
       2015-03-17 10:27:21 +08:00
    @lujiajing1126 是高效,但是为了避免被墙,我还是会模拟人类行为的,如果觉得短时间内的数据不够,你可以同时爬多个同类型的网站
    JamesR
        16
    JamesR  
       2015-03-17 10:30:00 +08:00   ❤️ 1
    加个验证码就行了,验证码过不了的IP自动进黑名单几天。
    lujiajing1126
        17
    lujiajing1126  
       2015-03-17 10:31:19 +08:00   ❤️ 1
    @1023400273
    那当然可以,如果你有足够的钱买很多机器和IP,你甚至可以把它整个网站弄崩,就ddos
    一般网络底层防ddos会考虑ip的数目来做网络包过滤
    但是首先你得考虑你爬数据的成本和你自己制造这些数据哪个低一些。。
    有钱,这些都不是事
    xiaogui
        18
    xiaogui  
       2015-03-17 11:07:36 +08:00   ❤️ 1
    上黄色反动内容,只对他的 ip 有效,然后被抓取以后,举报他。
    哈哈,开玩笑啦。
    fate
        19
    fate  
       2015-03-17 11:11:19 +08:00   ❤️ 1
    最重要的是要提高爬虫成本
    cszhiyue
        20
    cszhiyue  
       2015-03-17 11:30:56 +08:00   ❤️ 1
    提高爬虫成本
    oott123
        21
    oott123  
       2015-03-17 11:33:47 +08:00 via Android   ❤️ 2
    做陷阱…藏普通用户看不到的链接,一点就封 ip 或者开始返回垃圾内容…
    文字随机翻转然后用 css 转回来…
    JoeShu
        22
    JoeShu  
       2015-03-17 11:39:12 +08:00   ❤️ 1
    爬虫技术上的难点主要有:
    1. ip限制,不过你的网站没有那么多的页面或者页面更新频率不多的话,这个可以用代理池来解决。
    2. 登录验证码识别,目前的验证码识别率不高,这个目前只能通过图片识别、验证码库以及人肉来解决,不过这个会影响正常用户的访问。

    其实搜索引擎本身就是通过爬虫来收录你的网站,楼主不希望影响seo,又不想影响流量,如果网站内容是原创的,不如试着收集证据直接给对方发律师函更有用。
    sohoer
        23
    sohoer  
       2015-03-17 11:41:49 +08:00
    如果你的网站有海量数据,并且别人需要实时性较高的抓取你的数据,你可以考虑些策略对爬虫做限制
    em70
        24
    em70  
       2015-03-17 11:42:19 +08:00   ❤️ 1
    写一段脚本每个小时分析一下日志,如果某个IP访问页面的数量超过一定值,就加入防火墙,每天凌晨解封全部IP
    randyzhao
        25
    randyzhao  
       2015-03-17 11:44:22 +08:00   ❤️ 1
    模拟browser行为的爬虫 怎么防
    验证码都能破
    anguskwan
        26
    anguskwan  
       2015-03-17 11:45:43 +08:00   ❤️ 1
    我跟你说,只要能看得见,我就能怕得到。
    1023400273
        27
    1023400273  
    OP
       2015-03-17 11:49:18 +08:00
    @JoeShu 我也认为走法律途径比较有效
    1023400273
        28
    1023400273  
    OP
       2015-03-17 11:50:25 +08:00
    zhicheng
        29
    zhicheng  
       2015-03-17 12:35:45 +08:00
    加一个隐藏的 flash 。
    FrankFang128
        30
    FrankFang128  
       2015-03-17 12:37:02 +08:00
    图灵机测试
    imlonghao
        31
    imlonghao  
       2015-03-17 12:42:07 +08:00 via Android   ❤️ 2
    陷阱url,点中自动iptables见
    Anybfans
        32
    Anybfans  
       2015-03-17 13:05:10 +08:00
    @imlonghao 那搜索引擎的爬虫不就完蛋了。。。
    est
        33
    est  
       2015-03-17 13:13:52 +08:00
    @zhicheng 再写点AS检测鼠标轨迹。。。
    ryd994
        34
    ryd994  
       2015-03-17 13:49:54 +08:00
    主要是搜索引擎本质上也就是个爬虫啊……
    你要封爬虫,还想不影响SEO……
    qdwang
        35
    qdwang  
       2015-03-17 14:30:02 +08:00   ❤️ 1
    针对搜索引擎返回文本文字,其他用户一律返回转曲的文字。
    invite
        36
    invite  
       2015-03-17 16:18:35 +08:00   ❤️ 1
    1、限制IP访问频率(无效,后台看不到有异常ip访问,我猜想爬虫大约五六分钟来一次)
    2、用js动态加载数据内容(无效,爬虫支持js,且网站不利于seo)
    3、抛出js异常,部分爬虫会无法解析(仅仅只是部分)

    一个爬虫做到了以上几个,跟人在浏览不是一个样了?

    或者你跟踪鼠标吧,一般人鼠标都会动来动去的。
    YonionY
        37
    YonionY  
       2015-03-17 16:47:38 +08:00   ❤️ 6
    爬虫是自动化的,有个思路。

    在页面插入隐藏url,还有url规则随机插入钓鱼页。

    准备一些轮子资料给他,访问到钓鱼页就送上轮子资料让他爬,如果这个爬虫是自动输出到网站的,然后马上举报他传播不良信息,他就有麻烦了。
    northisland
        38
    northisland  
       2015-03-17 17:30:11 +08:00
    37楼目前领先!!
    我们公司有批人就是做爬虫的,手机端都能通过协议给你爬数据=_=
    ioschen
        39
    ioschen  
       2015-03-17 17:33:33 +08:00
    @YonionY 真坏
    c3538378
        40
    c3538378  
       2015-03-17 17:46:30 +08:00   ❤️ 1
    各位号称爬虫技术牛逼的大侠们,你们不如来采集一下alibaba试试?小弟才疏学浅,反正我是搞不定啦。

    sample: http://szhlxkjyxgs.1688.com/page/creditdetail.htm
    imlonghao
        41
    imlonghao  
       2015-03-17 17:48:46 +08:00 via Android
    @Anybfans a链接nofollow
    imlonghao
        42
    imlonghao  
       2015-03-17 17:49:51 +08:00 via Android   ❤️ 1
    @northisland 手机端走http协议的可以抓的
    京东手机端有个接口就可以很好的爬......
    1023400273
        43
    1023400273  
    OP
       2015-03-17 17:55:11 +08:00   ❤️ 1
    @c3538378 这个很难爬么?乍一看感觉不难啊,看源代码都能看到数据
    c3538378
        44
    c3538378  
       2015-03-17 18:14:08 +08:00


    工商注册信息那部分用的图片,当然如果用手机版可能可以看到源码。
    crab
        45
    crab  
       2015-03-17 18:22:53 +08:00
    @c3538378
    POST地址: http://mapi.1688.com/openapi/json2/1/ali.mobile/company.getCompany/71045
    POST参数:_data_={"request":{},"memberId":"szhlxkjyxgs"}
    返回的筛选下。
    Daniel65536
        46
    Daniel65536  
       2015-03-17 20:57:45 +08:00 via iPad
    @Anybfans 爬虫作者一般不会考虑网站的robots协议,搜索引擎会。
    zpvip
        47
    zpvip  
       2015-03-17 22:47:04 +08:00   ❤️ 1
    挑一两百个高频文字生成图片代替,比如 “我, 的,就,是,要。。。”

    图片名用 md5 或 随机数,这种关系存在缓存,文章显示前替换一下,

    每一小时把所有图片全部换名字,图片防盗链。
    ynyounuo
        48
    ynyounuo  
       2015-03-17 22:56:19 +08:00
    SmiteChow
        49
    SmiteChow  
       2015-03-17 23:03:05 +08:00
    道高一尺,魔高一丈,真要爬你,怎么都拦不住,反图灵测试只要是技术生成的,破解都是必然的。

    现实一点,就是权限验证,任何资源都必须验证权限,频次验证,单位时间内访问次数限制
    lshero
        50
    lshero  
       2015-03-17 23:30:41 +08:00
    如果真针对PC浏览的话不搞手机自适应,我觉得只要他不上图片OCR的话,你可以把一些常用字做成图片,输出的时候把一些常用字图片混入文本之中,这样他采集的内容就是断断续续的这样可读性就会差不少
    ericls
        51
    ericls  
       2015-03-18 04:22:52 +08:00
    用无边框的table动态生成排版
    m939594960
        52
    m939594960  
       2015-03-18 09:32:54 +08:00
    @lshero 电脑字体不一样 会很蛋疼的。。 高低参差不齐!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1042 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:15 · PVG 05:15 · LAX 13:15 · JFK 16:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.