反爬虫兵法演绎 20 讲
DS Hunter
反爬虫专家,前某公司研发总监
4905 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 29 讲
特别放送 (1讲)
反爬虫兵法演绎 20 讲
15
15
1.0x
00:00/00:00
登录|注册

04 | 爬虫的首轮攻势:如何低调地拿到自己想要的数据?

你好啊,我是 DS Hunter。又见面了。
前面我和你聊了聊爬虫和反爬虫的历史,感觉这是一个内卷的死结。
开篇词里我提到过:内卷之下无胜者。也就是内卷一旦开始,你就只有两个结局:输,或者输得很惨。你的所有努力,都是让自己不要输得太惨,而不是考虑如何创造收益。有了这个基本方针之后,我们才能知道后续应该往哪个方向去努力,才好进一步制定对应的策略。
通过第一个模块的历史视角回顾,相信你已经对什么是爬虫有了更深刻的了解。而从这一讲开始,我们就正式进入爬虫、反爬虫的理论环节。接下来所有的讨论,就从发起攻势的爬虫方开始吧。

从“5W1H 分析法”到爬虫行动

我首先要问你一个问题:老板把任务给你了之后,爬虫要干什么?
根据 5W1H 原则(万恶的方法论啊),你可以看到,需要讨论的有:WHAT、WHERE、WHEN、WHO、WHY、HOW。那么迁移到爬虫身上呢?
老板把任务布置下来之后,这个 WHO 就没什么可讨论的了,肯定是你,爱干不干,不干走人。 至于 WHY?老板有需求,有什么可 WHY 的,还是不干就走人。而 WHERE,WHEN?当然是 Anywhere,Anytime,卷起来!只要对方站点扛得住,就日以继夜地死命干他。后面在 06 讨论分布式的时候,我会和你分享分享关于 WHERE 和 WHEN 的思考。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了爬虫技术在获取网络数据方面的重要意义,并强调了在实践中需要谨慎行事。通过“5W1H分析法”,探讨了爬虫的行动流程,并强调了保持低调的重要性。作者提到了使用对应的网络协议请求服务器的重要性,尤其强调了HTTP协议的应用。此外,建议读者练习TCP爬虫,以加深对细节的理解,并为进阶到App爬虫做准备。文章内容深入浅出,为读者提供了关于爬虫技术的重要知识和实践建议。 在确定抓取数据及抓取策略方面,文章强调了低调行事的重要性,指出了流量问题和爬虫的危险性。在执行抓取方面,文章提到了重点商品和热卖商品的不同抓取方式,以及在抓取过程中需要注意的细节,如抓取时间选择和数据范围的设置。总的来说,本文为读者提供了关于爬虫技术的实用指南,强调了保持低调和谨慎抓取的重要性。 此外,文章还介绍了解析和验证数据的重要性,提供了两种解析方式以及它们的选择方法。在验证数据方面,文章强调了机器验证和人工验证的注意事项,以及如何保持低调的方法。最后,文章提出了思考题,引发读者对爬虫技术的深入思考和探索。 总的来说,本文以简洁明了的语言,全面介绍了爬虫技术的重要性、实践建议以及对抓取数据、解析和验证的重点关注,为读者提供了全面的技术概览和思考引导。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《反爬虫兵法演绎 20 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(6)

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

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

    2022-01-26
    9
  • peter
    请教老师三个问题: 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,实时抓取指的是,用户在你站点点击了某商品,触发一个爬虫,去竞对看下对应商品。因为是用户触发的,这样,他就知道你这面用户在点哪些商品。这个信息是非常有用的。

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

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

    2022-01-26
    2
    2
  • 汤玉民
    看来是没怎么做过抓取,主要做反爬了

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

    2022-02-15
  • leslie
    第一个问题:是量上的取舍;第二个问题:我会选择低调;第三个问题:锁死版本不合适现状,虽然不少开发习惯性锁死版本甚至浏览器。
    2022-01-26
  • leslie
    第一个问题:是量上的取舍;第二个问题:我会选择低调;第三个问题:锁死版本不合适现状,虽然不少开发习惯性锁死版本甚至浏览器。
    2022-01-26
    1
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部