• 程序员二师兄
    2022-01-26
    第一个问题: 100qps: 百万级pv 1000qps: 千万级pv 第二个问题: 爬虫的时候,我不会模拟发送埋点,嫌麻烦。 但是说回来,个人认为:同步发送更低调。 个人经历,曾经根据调用链排查线上问题,理论上调用了A接口后,一定会调用B接口渲染前端页面,才能够调用C接口。 但是外部爬虫刷单时,开抢前的两三分钟,疯狂调用A接口,请求通过后,直接调用C接口。 中间跳过了B接口,排查下来,这个用户使用外挂刷单! 如果在中间调用了B接口,爬虫会显得更低调一些,更贴近真实的操作。 埋点接口同理,一直在调用解析数据的接口,而没有发送埋点,一排查,很容易暴露。 所以,个人认为,同步发送埋点更低调。 第三个问题: 不会锁死浏览器版本。 理由同问题二,很容易暴露,爬虫的请求频率及数量是很高的,正常用户的浏览器版本也比较零散。 锁死版本,容易导致这一个浏览器版本请求接口的数量特别高。 针对畸形HTML标签的解析方式,可以考虑建立几个浏览器版本池,随机从版本池里取一条进行请求并解析。

    作者回复: 赞,看来是有经验的。

    
    8
  • peter
    2022-01-26
    请教老师三个问题: Q1:安卓APP不用HTTP吗? 本篇中有这样两句话: 1、 “关于使用对应的网络协议请求服务器,Web 一定是 HTTP,App 大部分是 TCP”。 2、“因为基本上没有哪家 App 还在使用 HTTP 协议了,都是自有的定制协议。这类协议要用 TCP 抓包,然后猜测每个字节的用处”。 老师认为APP是用TCP,不用HTTP。不过,我懂一点安卓APP开发,我都是用HTTP与服务端通信的啊。 Q2:不能与服务器建立TCP连接吧。 “最早我们是使用 TCP 协议直接发起请求的,写爬虫的人需要创建一个 TCP 链接,按照 HTTP 协议的格式逐字节去写入数据,分析返回数据,来实现数据的抓取。”这句话中,提出客户端需要与服务器建立TCP链接,但是,现在的网站,客户端不能直接与服务器建立TCP链接吧。 Q3:实时抓取怎么会是通过用户点击?而且暴露爬虫方呢? 这句话:“实时抓取相对来讲不易被抓,但是因为是通过用户点击商品实时触发,所以我方的热卖产品信息,很容易泄露。”这句话我有两个地方不明白:A “实时抓取通过用户点击触发”,我不太理解。我的理解是“爬虫自己冒充用户发起请求,不是通过真实用户点击”。B 怎么会暴露爬虫方的热卖产品信息呢?
    展开

    作者回复: 这个是这样的,由于tcp的高效,所以大规模下一般会用tcp,当然初期也可以用http,最后一般会转成 tcp的。当然本课也不讲app爬虫所以就带一下,说明下tcp也是有用的。 Q2,http是基于tcp的,所以写http就是写tcp,只是库帮你做掉了。想自己撸tcp,理论上也是没问题的。 Q3,实时抓取指的是,用户在你站点点击了某商品,触发一个爬虫,去竞对看下对应商品。因为是用户触发的,这样,他就知道你这面用户在点哪些商品。这个信息是非常有用的。

    共 2 条评论
    3
  • webmin
    2022-01-26
    1. 100QPS单机可能就能搞定,但是到了1000QPS就要上集群或者流水线多机协同了; 2. 如果是单机搞定整个流程那么可以发送,如果是要抓取和解析是不同的机器,那么选择不发送,如果要让解析机去发送一可能时间已经晚了利用时间差信息也能看出问题,二是要用同样的IP回去访问好像不利于代理池的使用; 3. 前面的同学回答的已经很好,只是补充一点浏览器的版本可以使用一些公开的版本统计数据的比率来配比。

    作者回复: 基本差不多,补充一下,不止可以用公开的版本数据,也可以用自己网站的统计数据,更准确。

    共 2 条评论
    2
  • 汤玉民
    2022-02-15
    看来是没怎么做过抓取,主要做反爬了

    作者回复: 没做过抓取的人是没法做好反爬的,一般做反爬的人至少会去爬虫组做几个月😂😂😂

    
    
  • leslie
    2022-01-26
    第一个问题:是量上的取舍;第二个问题:我会选择低调;第三个问题:锁死版本不合适现状,虽然不少开发习惯性锁死版本甚至浏览器。
    
    
  • leslie
    2022-01-26
    第一个问题:是量上的取舍;第二个问题:我会选择低调;第三个问题:锁死版本不合适现状,虽然不少开发习惯性锁死版本甚至浏览器。
    共 1 条评论
    