如何控制多 IP 低频率的采集 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tianxiacangshen
V2EX    PHP

如何控制多 IP 低频率的采集

  •  
  •   tianxiacangshen 2017-07-17 18:55:26 +08:00 3910 次点击
    这是一个创建于 3063 天前的主题,其中的信息可能已经有所发展或是发生改变。
    查看了一下对方的方式:

    几百个 ip,ip 之间基本上很少有三段相同(难以实施屏蔽 IP 和 IP 段);

    一个 IP 一小时访问 15 次左右,躲过验证码,并且和正常用户没差别;

    几百个 ip 一小时也就采集 5000-6000 次,目前不影响网站速度等性能;

    但是,尼玛,看对方模拟发送的 url 配置的参数,总量在一百万以上,这就必须得管管了,不然流量费也要耗掉不少,目前分析对方是模拟 curl 模拟 post 提交的,各项参数齐全,我设置的检测$_SERVER['HTTP_REFERER']已经被他绕过。

    26 条回复    2017-10-02 21:35:38 +08:00
    ho121
        1
    ho121  
       2017-07-17 19:04:59 +08:00 via Android
    用机器学习的方式判断爬虫 (逃
    est
        2
    est  
       2017-07-17 19:07:25 +08:00
    > 但是,尼玛,看对方模拟发送的 url 配置的参数,总量在一百万以上

    特征都有了还找不到办法管么。。
    tianxiacangshen
        3
    tianxiacangshen  
    OP
       2017-07-17 19:15:23 +08:00
    @est 是知道,对方是一直变换某一个参数以获取不同的内容,但是这里又不能改掉,毕竟也有真实用户访问
    sunwei0325
        4
    sunwei0325  
       2017-07-17 19:16:02 +08:00
    差不多就行了, 不可能把所有爬虫都干掉的, 误杀用户就不太好了
    tianxiacangshen
        5
    tianxiacangshen  
    OP
       2017-07-17 19:42:31 +08:00
    @sunwei0325 是啊 ,真心一个真实用户都舍不得放弃
    lzhr
        6
    lzhr  
       2017-07-17 19:52:10 +08:00
    内容页面登陆可见?
    bravecarrot
        7
    bravecarrot  
       2017-07-17 19:58:04 +08:00 via iPhone
    @lzhr 那也没啥用吧,带个 cookie 完事儿了..
    bravecarrot
        8
    bravecarrot  
       2017-07-17 20:03:10 +08:00 via iPhone
    参数顺序
    每次登陆加一个和时间戳相关的 hash
    或者在编码问题上搞事情
    tianxiacangshen
        9
    tianxiacangshen  
    OP
       2017-07-17 20:25:24 +08:00
    @lzhr 是,再严格的话就是会员才能浏览了
    gidot
        10
    gidot  
       2017-07-17 20:28:14 +08:00
    如果是 nginx,加这个到配置里:
    #禁止 Scrapy 等工具的抓取
    if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
    return 403;
    }
    whatsmyip
        11
    whatsmyip  
       2017-07-17 20:57:09 +08:00
    @gidot 感觉这个反爬措施应该是最弱的吧,再入门的爬虫课程都会提到要改 UA。。。

    而且,就这一条,感知后分分钟就能破了。
    chengxiao
        12
    chengxiao  
       2017-07-17 21:10:14 +08:00
    我很好奇楼主真么侦察到对方的??
    whatsmyip
        13
    whatsmyip  
       2017-07-17 21:20:07 +08:00
    有人愿意找这么多代理爬,看来不是小站而且数据应该还比较有价值?

    先说结论吧,爬虫、反爬虫、反反爬虫。。。。。就是一个生生不息的过程,__具体能进行到哪一步就看双方能力和性价比了__(恩,还有最重要的代理数目,不过这是终极对决了)。要是公开数据,而且对方的爬虫行为没有影响系统运行的话,还是睁一只眼、避一只眼吧。。。

    不过,攻防的过程确实是挺有意思的,能学到不少知识^_^

    目前来看,比较容易上的一个措施就是在 js/css/img 文件上动手脚,找一个站点一定会加载的 js 文件。该 IP 请求 js 资源时做个标记,如果超过两次访问没有带标记则封杀。可能会有误伤

    再进一步的话,可以是频率限制,周期长一点,具体的限制根据网站用户来决定,这样对方再多的 IP 也会被限制在一定的范围内。不过这样会消耗一定的资源,看具体日 IP 了,用 redis。

    补一句,免费的代理数量是有上限的,而且可用性非常差,要是对方为了爬你的数据买了什么高大上的收费服务的话,不如沟通下,把数据打包卖给他**


    之前写爬虫的时候总结的
    [http://blog.newnius.com/stream-spider-several-strategies.html#反反爬虫]( http://blog.newnius.com/stream-spider-several-strategies.html#反反爬虫)
    tianxiacangshen
        14
    tianxiacangshen  
    OP
       2017-07-17 21:21:13 +08:00
    @chengxiao 我将每个访客的 ip 地址都临时加入一个表了,包括访问时间,来源页面和要访问的页面,一看就知道什么目的了
    whatsmyip
        15
    whatsmyip  
       2017-07-17 21:21:39 +08:00
    哦,对了。

    googlebot 也是爬虫,不要误伤。
    zycode277
        16
    zycode277  
       2017-07-17 21:21:51 +08:00 via iPhone
    做状态管理吧,爬虫基本都是线性访问, 用户都是峰访问的。
    aqqwiyth
        17
    aqqwiyth  
       2017-07-17 22:14:44 +08:00
    如果需要登录的话,写入一个 cookie,这个 cookie 做频率判断,统计每日 TOP,封号 多弄几次他就对你没兴趣了
    没有 cookie 的直接返回假数据 >逃
    duan602728596
        18
    duan602728596  
       2017-07-17 23:05:56 +08:00 via iPhone
    233333333,哪个网站
    sunwei0325
        19
    sunwei0325  
       2017-07-17 23:34:46 +08:00
    @aqqwiyth 真实用户也有浏览器禁用 cookie 的
    johnnie502
        20
    johnnie502  
       2017-07-18 01:34:33 +08:00   1
    其实最有效的反爬虫策略不是见一个封一个,而是识别以后喂假数据,在对方未察觉的情况下污染对方的结果集,等发觉以后也晚了,早晚就会放弃。
    johnnie502
        21
    johnnie502  
       2017-07-18 01:37:57 +08:00   1
    补充一下,假数据也不能 100%喂,这样也容易被对方识别出来,半真半假就行了。
    15015613
        22
    15015613  
       2017-07-18 07:59:37 +08:00
    @sunwei0325 @aqqwiyth
    NoScript、Cookie Monster、RequestPolicy Continued 的走起。
    gam2046
        23
    gam2046  
       2017-07-18 08:48:46 +08:00
    尝试在页面中加入一个随机的长宽为 0 的 image,如果服务端发现客户端没有请求这个钓鱼 image,就基本可以断定对方没有使用浏览器访问,那么除了爬虫 应该也只有 Google Spider 了
    cyrh
        24
    cyrh  
       2017-07-18 11:49:45 +08:00
    好拼啊,几百个 ip 每小时爬取 5000 数据,这个频率都被楼主发现了
    glogger
        25
    glogger  
       2017-07-18 18:27:29 +08:00
    并且和正常用户没差别;
    就凭这一条,根本不用管。。
    ericgui
        26
    ericgui  
       2017-10-02 21:35:38 +08:00
    你开放 API,收费。
    说真的,对大家都合适。他也省劲,你也赚点钱。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2784 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 02:33 PVG 10:33 LAX 18:33 JFK 21:33
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86