00-开篇——课程介绍_其它

这一篇呢,是我们的第零篇,主要给大家介绍一下这个课程的大致情况。

目录

  1. 为什么要写这门系列课程?
  2. 这门课的主要目的是什么?
  3. 这门课的主要内容有哪些?
  4. 学完之后我能收获什么东西呢?

1. 为什么要写这门系列课程?

先来解答两个很多人都会问的问题,第一个:“为什么要写这门系列课程?”

  • 市面上的相关内容质量低
  • 市面上的相关内容不成体系
  • 很多收智商税的培训班

1.1 市面上的相关内容质量低

其实,原因很简单。第一点呢,是市面上的相关内容质量比较低。怎么说呢,有关注一些公众号或者专栏的朋友们应该会发现,现在市面上的大部分爬虫的文章千篇一律。也就是像:自动化测试工具来做某个网站的登录或者是采集一些所谓的动态页面,又或者是那种其实,只需要:全局搜索、打个断点就能秒杀掉的那种网页。那么这些内容对于纯粹的新手而言可能还好,因为能够了解一些之前不知道的东西。但是,对于一些有经验的人而言,这些内容都毫无价值。

因为,它们反反复复的就只有自动化测试工具的使用和简单的一些搜索、断点之类的东西。对于实际工作中你会碰到的各种骚操作,以及各大厂的人机验证而言,只会这些东西(自动化测试工具的使用和简单的一些搜索、断点等等)是远远不够的。而且,这些内容也是很多机构平台经常拿来讲的,打着各种招牌(某某大学团队、某某机构等等)来水课的。

而我本系列课程呢,会带你做一些**工作中真正会碰到的、有难度的东西并且会告诉你它们的原理,他们为什么会这么做。**所以放心,这个内容的质量是很ok的,你花的钱也绝对值。

1.2 市面上的相关内容不成体系

那么我所要讲的第二点是:市面上的相关内容不成体系。这一点的话,如果你是有仔细观察过自媒体行业的朋友,应该不难发现——很多不是真正在某个行业里做事的人,搞了一个自媒体就开始水文章做课程,各种互推、引流,然后就想着捞钱了。他们通常是这样的,每天要么引流、要么转载一些别人的文章或者是伪原创的一些水文。那这种人,他们其实懂的也并不多。文章内容通常不起考证、错漏百出,而且搞来搞去其实都是那些内容。(也就是前面说的:自动化测试、全局搜索、打个断点之类的,这种很简单的东西。)

那么,这时候同学们会问——那些大牛们呢?

他们要么是在大厂做安全,接触到的东西很多不方便分享。要么就是做灰黑产的,要是把东西分享出来的话,自己可能就没得做了——毕竟闷声发大财嘛。不过,以后这个情况就会有所改善了。因为,我所写的这们课程将会从浅到深地给你讲解 JavaScript 逆向相关的知识点。你不用担心不成体系,因为内容非常地全面,学完之后,你即使没有学会,也会对整个 JavaScript 逆向方面的知识,有一个清晰的了解。

1.3 很多收智商税的培训班

接下来,我们来讲第三点,现在有很多收智商税的培训班。我们能在朋友圈、公众号之类的地方,看到这些培训班的广告。他们通常是以大数据或者是人工智能之类的热门方向作为营销点。然后,也有一些单纯教 Python 或者是爬虫方向的。不过呢,不管他们怎么搞花样——最终他们的内容都是比较简单、初级的。基本上都是那种…就我自己来说吧,都是一些看书、搜索引擎搜一搜就能学会的东西。那么,我这里主要来说一下爬虫方面的。

爬虫方面的话,他们培训班的课程一般内容都很简单,基本上就是:正则表达式、XPath、Requests、Scrapy、BeautifulSoup,然后可能就先这样子的基础爬个静态页面。顶多还有一些抓包或者是 **Puppeteer、Selenium 之类的东西。**然后就没有了,仅此而已。

课程价格可能还定个…五六千、七八千甚至上万的也有。然后我这个系列课程就不一样了,内容实际有广度有深度,价格相对于那些收智商税的而言,真的很低了。我觉得有些说我们定价贵的,可能是看盗版或者看白嫖的看多了。没有那种知识付费的意识了,一个学完之后,你哪怕接个外包都能赚回来的成本的课程,不值这个价格么?

好了,我们现在把话题扯回来。前面说了三个因素,那么这三个因素会导致出现什么问题呢?

很简单,招爬虫的(公司)会招不到合适的人。好几个之前招人的朋友都会吐槽,为什么招个靠谱、技术过得去的人这么难。这个问题呢,在我买过的课程和其他事情上也遇到过,还做了个统计。

大概是这样的:

在这些朋友收到的简历中呢,有 90% 的人只会一些简单的东西,他们通常是只会:正则、XPath、Requests、Scrapy、Selenium 之类的很基础的东西——这些就是市面上那些培训班你能看到的那些东西,以及各种营销号发的水文里面所会包含的这些东西。然后还有 95% 的人对逆向几乎没有了解,只会自动化测试工具 + 代理池怼爆一切。甚至有一小撮人会搞简历造假。这其实实一件很恐怖的事情,这说明了现在做爬虫的人有很大一部分,可能是看了一些网上的简单文章,或者是刚从培训班出来,然后他们标个两三年工作经验就开始找工作了。

所以呀,害…

我们再来看一下,常见的简历。

简历一:

序号 个人能力
1 熟练使用 Python 爬虫常用模块
2 熟练使用 Scrapy 框架
3 熟练使用 Scrapy-redis 分布式
4 熟练使用 Selenium + Chrome 模拟浏览器获取动态 html
5 掌握常见的反爬机制
6 熟练使用 正则、xpath、bs4、解析 html
7 熟练使用 mongodb 与 redis 数据库
8 熟悉 Linux 系统使用

简历二:

Scrapy:爬虫最熟悉 Scrapy,其他框架略会不常用,熟悉 Scrapy 爬虫流程,熟练自定义中间件设置代理,浏览器和 cookies 等,熟悉 Scrapy 和 django 的对接共享数据库,最熟悉的解析 html 方式是 Xpath 和正则表达式,其他解析方式不常用。

简历三:

  1. 具备爬虫开发经验
  2. 熟练掌握网络爬虫框架 scrapy
  3. 熟练掌握 HTML、CSS、JavaScript 等页面技术
  4. 熟练使用正则表达式、xpath、css 选择器等页面提取方式,能够从结构化和非结构话的数据中提取信息。
  5. 熟悉 MySql,MongoDB、redis 等数据库,熟悉 SQL 语言

简历四:

技能栈:

熟悉 Python,了解面向对象,大致了解过主要的 Python 库,也喜欢 Pythonic 的 代码(还在努力)

熟悉 Django

熟悉 HTML、CSS、JS

了解 Bootstrap (在自己开发网站使用过)

了解爬虫,使用 Requests 写过几个小爬虫(爬取 Instagram 球星照片)

对网络组成和 HTTP 协议有大致了解。

上面是三年经验、市场均价招爬虫会碰到的大多数情况,是不是发现内容都挺简单的?跟我前面说的差不多,比如说 Scrapy、Selenium、正则表达式、Xpath、BS4,然后还有数据库的基本使用。基本上就是这些东西。其他的像 Django 种跟爬虫没关系的,其实就可以忽略。然后,只会这些的话,说真的没啥用。现在不管是 Web 还是App 都是越做越安全的,而企业如果要招垂直爬虫的话,肯定也都不是爬一些简单的静态页面,对逆向水平有要求是必然的事情。不会逆向就跟咸鱼一样,很可能连工作都招不到。所以,建议大家认真好好学学逆向

2. 这门课的主要目的是什么?

我做这个课程其实主要有三个目的:传播优质知识、打击收智商税的、打破固有观念

传播优质知识

毕竟现在市面上的水文、智商税实在是太多了。像前面说的,招人都不好招。

打击收智商税的

我要用没有水分的价格和知识碾压他们。

打破固有观念

现在有个很奇怪的事情就是,很多人觉得搞公众号的是营销的,卖课的就是收智商税的(当然,还有一些被收智商税而不自知)。然后对正常的内容爱答不理,如果混 V2EX 的朋友应该会知道,现在很常见这种事情。这样会导致整个市场的恶性循环,因为大家都发现,其他人就不爱看这些东西。反而那些新手会对营销话的东西很感兴趣,非常喜欢看,甚至还愿意交钱。既然能赚钱,为什么不做呢?

这样大家就开始都变成那种讨人厌的样子了,毕竟那样讨人厌,但是能赚钱呀。谁不希望自己的付出能有一点回报呢?所以 ,我希望我的这个课程呢,能改变一下这个观念,也能然这种情况有所好转,哪怕只是一点点,所以希望大家能多多支持优质内容。

3. 这门课的主要内容有哪些?

我们现在来看一下这个课程的主要内容,内容我分为了两大块:基础部分、JavaScript 逆向核心

3.1 基础部分

  • 基础 JS 知识:

    在看这系列教程的朋友,应该已经是学会了某一门编程语言了吧,那么你在看 JS 的时候,应该能看得懂个大概吧。看 JS 很简单,但你看得懂一些骚操作会用到的语法吗?如果,你不知道一些 JS 特有的语法或者是他们的特性的话,你看到那种很骚的代码的时候,很有可能看不懂。所以了解一下基础的 JS 知识还是很有必要的。哦对了,我们并不是去学 JS 怎么写,所以这个部分的内容不会太多,了解个大概就差不多了。主要内容会方在实战上面,毕竟实战才是最根本的东西。

  • 养成逆向思维:

    我一直都在说,逆向思维是一个很关键的东西,新手和老手最大的区别其实就在于:新手没有逆向思维,而老手有。举个很简单的例子:比如说我写了一篇文章,搞某个网站的。然后新手在看完这篇文章之后,模仿着去搞那个网站,然后发现这个网站有点更新了。可能代码混淆的方式变了一点,然后他就可能看不懂了。但是,老手在搞这个网站的时候呢,他可能只需要看一下文章的核心思路。然后,对照着网站现在的代码去搞一下,然后就搞通了。所以,我们不要只知道怎么搞某个网站,这是没有用的。我们需要有那种思维方式——也就是:“逆向思维”。这样才不会,只会破解某几个特定类型的东西或者是你看到过教程的东西。而对那些新出现的骚操作却束手无策。

  • 介绍各种逆向神器:

    (你还在慢慢地翻代码?你知道别人都是怎么做的吗?)

    很多人即使会 JS 逆向,也只是会一些简单的东西。比如说:浏览器开发者工具,打个断点、单步运行跟一下。最多可能还会一个 Fiddler 修改请求,但你真正搞起来复杂的东西的时候,只会用这些东西的话,其实效率就并不高了。因为,很多东西要手动来做,而我们需要更高效的东西,我们需要自动化。所以,如果你还在用那些低效的方式进行逆向的话,可以着重看一下这个部分。

  • 反爬虫、反逆向的原理:

    (逆向别人的东西,需要思考一下这么做的意图,这样才能攻无不克!)

    这个其实道理很简单,你逆向别人的东西,如果能知道别人为什么要这么做,那么你自然可以更好地理解那些混淆过的代码。那别人故意埋下的陷阱,你也会更快的出来或者是根本不踩上去。

那么以上四块,都是基本操作。请还未掌握的朋友务必好好了解一下。

3.2 JavaScript 逆向核心

接下来是第二部分,是这门课的核心部分,JavaScript 逆向的各种操作,这一块和上面一样有四个小块。分别是简单、中等、困难。三个难度的 JavaScript 逆向及原理,以及逆向结束后如何给爬虫使用。

名称 内容
简单难度的 JS 逆向及原理 有简单的混淆,但直接搜代码就可以破的。
中等难度的 JS 逆向及原理 有一定程度的高度混淆,且结合了陷阱或一些骚操作,动态调试一段时间可以解决,用一些更骚的操作可以秒杀的。
困难难度的 JS 逆向及原理 完全高度混淆结合各种陷阱和骚操作,传说中的给前端看的时候,他们都觉得自己在吃shi的代码,没有方法和技巧很难通过动态调试解决,需要配合一些别的骚操作才能解决的。
逆向结束后,如何给爬虫使用? 那么多种操作方式你真的了解吗?它们有哪些坑?它们的性能如何?什么时候该用哪种方式?

简单来说,简单难度的 JS 就是,代码有简单的命名混淆,然后搜索一下关键词之类就可以破掉了,这种难度的 JS 逆向文章是网上最多,也是那些营销号们最爱转的。这门课里会简单的提一下,然后快速进入中等难度的部分。

中等难度的话,网上的文章就稍微少了一些,没有那么多。基本上就是一些有一定程度的高度混淆代码(通常是核心部分这么做的),然后他们会结合一些陷阱或者是骚操作。这种的话动态调试一下、花一点时间还是能解决的。不过用一些比他们更骚的办法通常是可以秒杀掉。

最后是困难难度,也就是代码高度混淆并且结合了各种陷阱和操作。也就是那种阿里、腾讯、百度这些大厂会用到的。那么这种代码你给前端开发看,他们都会觉得自己在吃shi。没有掌握一定的方法和技巧,你很难通过动态调试的那种简单方式去解决。这时候就需要配合一些骚操作、打一套组合拳,层层破解,这样才可以解决。

然后我们逆向结束之后总得给爬虫使用吧,很多人可能都知道有:PyV8、PyExecJS 这些东西可以调用 JS,没错!但是,你还知道别的方法吗?如果说你用的这种方式,在调用 JS 的时候,不适合业务场景。比如说:你业务场景是非常高并发,你用这些东西性能不够,那你怎么办呢?而且,那么多操作方式你真的了解吗?你知道它们有哪些坑吗?它们的性能具体又如何呢?什么场景又适合哪一种呢?是不是发现需要了解一下?

好了,以上就是这门课的大部分内容。还有一些小的内容由于不如这些重要,这里就不提了 ,我们继续往下。

接下来这些可能会有一些新手朋友不太能理解,可能会想问这样一个问题。学完之后我能收获什么东西呢?

4. 学完之后我能收获什么东西呢?

预估大家学习之后可能得到的收获:

序号 内容 重要程度
1 深入理解 JavaScript 反爬虫的根本原因 A+
2 了解工作中常用的 JavaScript 语法和知识 B
3 掌握浏览器开发者工具的使用(掌握各种逆向神器的基本使用和骚操作) A
4 深入理解 JavaScript 代码混淆的原理 A+
5 掌握 JavaScript 中常⻅的编码和加密方法 A
6 一些市面上见不到的骚操作(这种东西别人一般不写文章发出来,很少见) A
7 掌握做爬虫、做逆向必须有的逆向思维 A+
8 拥有快速定位加密代码位置的能力 A
9 轻松面对各种各样的加密字符串 A

 

00-开篇——课程介绍_其它_02