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

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

  •  
  •   tianxiacangshen · 125 天前 · 1578 次点击
    这是一个创建于 125 天前的主题,其中的信息可能已经有所发展或是发生改变。
    查看了一下对方的方式:

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

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

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

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

    还有啥办法?
    26 回复  |  直到 2017-10-02 21:35:38 +08:00
        1
    ho121   125 天前 via Android
    用机器学习的方式判断爬虫 (逃
        2
    est   125 天前
    > 但是,尼玛,看对方模拟发送的 url 配置的参数,总量在一百万以上

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

    而且,就这一条,感知后分分钟就能破了。
        12
    chengxiao   124 天前
    我很好奇楼主真么侦察到对方的??
        13
    whatsmyip   124 天前
    有人愿意找这么多代理爬,看来不是小站而且数据应该还比较有价值?

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

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

    目前来看,比较容易上的一个措施就是在 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#反反爬虫)
        14
    tianxiacangshen   124 天前
    @chengxiao 我将每个访客的 ip 地址都临时加入一个表了,包括访问时间,来源页面和要访问的页面,一看就知道什么目的了
        15
    whatsmyip   124 天前
    哦,对了。

    googlebot 也是爬虫,不要误伤。
        16
    zycode277   124 天前 via iPhone
    做状态管理吧,爬虫基本都是线性访问, 用户都是峰访问的。
        17
    aqqwiyth   124 天前
    如果需要登录的话,写入一个 cookie,対这个 cookie 做频率判断,统计每日 TOP,封号 多弄几次他就对你没兴趣了
    没有 cookie 的直接返回假数据 >逃
        18
    duan602728596   124 天前 via iPhone
    233333333,哪个网站
        19
    sunwei0325   124 天前
    @aqqwiyth 真实用户也有浏览器禁用 cookie 的
        20
    johnnie502   124 天前   ♥ 1
    其实最有效的反爬虫策略不是见一个封一个,而是识别以后喂假数据,在对方未察觉的情况下污染对方的结果集,等发觉以后也晚了,早晚就会放弃。
        21
    johnnie502   124 天前   ♥ 1
    补充一下,假数据也不能 100%喂,这样也容易被对方识别出来,半真半假就行了。
        22
    15015613   124 天前
    @sunwei0325 @aqqwiyth
    NoScript、Cookie Monster、RequestPolicy Continued 的走起。
        23
    gam2046   124 天前
    尝试在页面中加入一个随机的长宽为 0 的 image,如果服务端发现客户端没有请求这个钓鱼 image,就基本可以断定对方没有使用浏览器访问,那么除了爬虫 应该也只有 Google Spider 了
        24
    cyrh   124 天前
    好拼啊,几百个 ip 每小时爬取 5000 数据,这个频率都被楼主发现了
        25
    glogger   124 天前
    并且和正常用户没差别;
    就凭这一条,根本不用管。。
        26
    ericgui   47 天前
    你开放 API,收费。
    说真的,对大家都合适。他也省劲,你也赚点钱。
    DigitalOcean
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   1769 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.0 · 70ms · UTC 12:06 · PVG 20:06 · LAX 04:06 · JFK 07:06
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1