爬虫与反爬虫 AI时代的数字生存战
你好,我是DS Hunter。
最近大多数人都在讨论AI时代工具的使用,但我想和你聊聊另一个重要的问题:AI时代的数据。
为什么说数据在AI时代变得更加重要?
爬虫与反爬虫的战争本质是争夺数据。而数据是AI的主粮。从这个角度来说,AI时代的爬虫与反爬虫会更加猖狂(内卷)。
粮食!粮食有多重要!
长大以后,再也没有挨过饿,每天就想着去多赚点钱吃好吃的。慢慢地,似乎已经忘记了粮食是一个国家的根本。更是一个人生存的保障。这一切,慢慢成了大家聊天的笑谈,或者写文章的素材。大家实际上并不是真的关心粮食危机。
然而,现实很快给我们上了一课。去年的四月份,我们的城市瞬间停摆,食物,一下子成了所有人一睁眼要关心的第一件事。衣食住行,我们第一次意识到食是这么地重要。
这和AI有什么关系呢?
对于AI来说,数据,就像粮食一样重要。
如果你在大厂,数据多到用不完,你可能感受不到一个AI从业人员的渴望。因为你没有被卡脖子。但是如果你在一个AI创业公司,每天苦于没有数据的时候,你就如同失去了魔法的血精灵,会深刻意识到这是生命中不可缺少的一部分。
正如那几个月我们渴望食物一样。
保质期与储备
食物是有保质期的,数据也是一样。大体上,我们可以把数据分为两类:静态数据和动态数据。
当然,一个哲学问题就是,运动总是相对的。所以动态和静态也是一个相对概念。
静态数据指的是那些不变的数据。这并不意味着数据永远不变,但是如果它变化的频率低于你的期望,那就可以认为不变。例如,国家的行政划分,省市直辖市自治区的结构,就是一个静态数据。它的变化频率并不高,所以在一定的业务场景下就是静态数据。
而动态数据则指的是变化频率很高的数据。例如五一期间的酒店价格,某汽车公司上周的销量,等等。这种数据虽然一旦确定了就不再变化,但是五月份的时候你自然会期待拿到五月份的数据。这个“不变的数据”在业务形态上经常就是动态数据。
所以变与不变,实际上是个业务概念,而不是死板的const。
数据的保质期并不意味着过期了数据就不正确了不可用了,它指的是一旦过了这个时效,它的业务价值就会大大缩水,甚至变得无用。 或者说得更直白点——没有利用价值了。
静态数据相对来说保质期久一些,动态数据相对来说保质期短一些,这是业务决定的,不是数据本身的属性——毕竟数据并不会真的说话,数据的意义都是人类赋予给它的。
做个不挑食的孩子有多难
如果你真的做过爬虫,那么你就会知道,业务方对爬虫是非常苛刻的,或者说十分挑食。他们通常要求你爬到所有的数据,而你明显知道这并不现实。反过来说, 数据真拿到之后,业务方通常不知道这些数据能用来干什么,只是当时单纯地想要。 这就像一个挑食的孩子一样——别看孩子挑食,买的时候他可是啥都要的!买回来才这也不吃那也不吃!养过孩子的人都懂。
并且,业务方的数据分析人员经常会提一个词:洗数据。“洗”这个词其实是非常二极管的一个思路,它直接给数据定性了,要么干净,要么脏。实际上大部分情况下,数据是有一个“干净程度”的。或者说可信度。并不是简单的可信不可信两种状态。如果碰到这种情况,建议给数据增加一个评分值。如何评分并不重要,重要的是,可以通过这种办法让业务方明白,数据并不是只有干净和脏两个状态。有些看起来似乎是有些脏的东西,没准其实是另一种营养成分。
谁在生产数据?
做AI的人,对数据的渴望是深入骨髓的。甚至他们并不在乎数据来源,先拿到再说。拿到之后再嫌弃也来得及嘛。这就是人性。那么,根据生产者消费者模型,我们是不是要搞清楚:谁在生产数据?
一定是互联网公司才有数据吗?
一定是互联网公司才有数据吗?答案很显然是否定的。实际上,任何地方都有可能产生数据,互联网只是玩数据玩得6,最终导致了数据在互联网公司里来回流动,而流动方式就是各个公司的爬虫团队互相抓取。这就像,金融公司总是看起来最有钱。但是,生产价值都是金融公司创造的吗?不是,他们只是流通媒介而已。
任何一家公司都会产生数据。有些是Online的,有些是Offline的。 数据自古就伴随着人类的生产生活。传统企业的数据量有时候超乎我们的想象,但是他们并不Online,因此并不能用爬虫抓取到。你抓不到,你就觉得不存在。这是一种典型的幸存者偏差。
你的大数据是否真的有价值?还是只是很“大”?
人们自古就对“大”有一种迷之崇拜。军事上也有很多唯口径论的爱好者。
我们并不能说这种“唯大至上”的想法就是错误的。因为虽然我们知道,数量与质量同等重要,也就是说,数量乘以质量等于有效数据的总和。但是, 质量这个东西,我们还是没有一个合适的量化标准,或者说没有统一的标准。
但是大就不同,大就是大,1G就是比1M大,这个是没有任何争议的。所以我们会发现,很多公司在标榜自己的大数据的时候,总是只提数量不提质量。除了上面说的原因之外,还有一个基于PR的理由:数据质量可能会被质疑,但是数据数量本身是没有办法被质疑的。
所以大家在生产数据的时候,总是抱着“宁可浪费,不要错过”的思路去生产、存储。尤其是存储设备越来越便宜,大家越来越浪费得起的情况下,大家其实并不在乎浪费。在数据库时代,我们通过各种范式来消除冗余数据,而大数据时代却很少有人提这些了。
但是这就给爬虫带来了一个困扰:你的数据量如果是量大质低,那么爬虫就只能通过大量的数据来抓取。这对爬虫的压力是很大的。当然,对于数据生产方的网络带宽也很浪费。
谁在消耗数据?
数据生产出来之后,第一个消费者就是公司自己。但是奇怪的是,你去观察一圈,就会发现每个公司都对自己生产出来的数据比较轻视,但是对外面抓取的数据却宝贝得不行,用各种办法去分析。这也是可以理解的,有句古话叫“书非借不能读也”。属于自己的东西,大家往往会觉得“反正是我的了,我不急”。
自家的数据够用吗?
回答这个问题的时候,我们首先要明确一下:什么叫够用?
人的欲望是无止境的,我们不如把这个问题转换一下,变成:
你的工资够用吗?如果不够用,你觉得多少够用?
回答完这个问题之后,你可以再试着回答一下另一个问题:
十年前(也就是2013年),你的工资够用吗?如果不够用,你当时觉得多少够用?
最后一个问题:
现在你的工资达到了十年前认为够用的线了吗?
如果达到了,那么,你现在觉得你的工资够用吗?
在这些常用问题上问了自己一圈之后,你就会发现, 当一个“够用不够用”的问题被提出之后,唯一的答案就是“不够用”。 有了这个答案之后,你会找出各种各样的理由来证明自己的观点。
其实数据也是一样的。自家产的数据,你永远会觉得不够用。这并不是数据本身太少导致的,而是人的欲望就是超越自己所拥有的财富的。我们还会找出各种理由去证明不够用:产品覆盖不够,竞对有我们的死角数据,我们曾经丢失了有用的数据等等。
但是本质上,当数据超出你的分析能力,这个时候的数据就是够用的。它满足了你的需求,但是还没有满足你的欲望。所以,在你们组建爬虫团队,打算爬取竞对数据的时候,不妨先扪心自问一下:真的有这个必要吗?还是只是出于贪心?
毕竟,养一个爬虫团队,是十分费钱的。
别家的数据是不是更香?
还是从人性来看,别人家的数据就是天生比自己家的数据香。这不是一个逻辑问题或者技术问题, 单纯就是贪心不足的问题。
比如AB两家公司,分别抓取、分析对方的数据,最终两家都把对手的数据分析的透透的,反倒是对自己的数据不屑一顾。收购合并之后发现最熟悉自己的竟然是当年的竞争对手,他们甚至有专门的组来分析自己。
而且,更可怕的是,分析竞对的人,更容易获取升职加薪的机会。而潜心分析自己数据的人,往往得出一些让人觉得稀松平常的结论,最终给人一种划水的错觉。慢慢地优胜劣汰,愿意分析自己数据的人也就越来越少,算法的质量也就越来越差。
很多公司都有这样一种尴尬的处境:外部把大数据团队吹得神乎其神,说它们如何精准地杀熟。而内部则一天到晚吐槽,大数据团队甚至连个报表都要出好几周。这鲜明的对比,也不知道是在夸大数据团队,还是在讽刺贬低。
谁在窃取数据?
也许你已经发现了,有爬虫团队在不断爬取你的数据。那么,是谁冒着危险,要和你进行这样的对决呢?
你在创业吗?
很多创业团队是爬虫团队的主力军。尤其越是创业期的公司,对爬虫的渴望越大。越成熟的公司,爬虫组地位越低,甚至可能在划水。
一般而言,公司会想办法将爬虫团队注册到境外公司,降低法务风险。初始创业团队往往操作起来得心应手,因为公司本身就存在各种问题(也不差这一个两个),也不太容易被盯上。而成熟公司因为被众多眼睛盯着,很多擦边操作不能乱做,所以处处受到限制。所以爬虫团队还是以创业团队居多。
而且, 创业公司的爬虫团队,水平相当两极分化。 渣的是真渣,猛的是真让你受不了。原因就在于,创业公司的战斗力不取决于公司制度,也不取决于技术积累,纯就是靠员工自己本身的战斗力。所以这个随机性非常强。
这一点对反爬虫团队的干扰就非常大。因为反爬虫团队的大部分精力应该放在竞对的爬虫团队上,这种小创业团队一般是睁只眼闭只眼过去的,不浪费精力。但是,碰到那种比较猛的创业团队,死命搞你,可能服务器压力就顶不住了。你劳心劳力搞他们吧,第一是资源消耗太大,得不偿失。第二是,你还真不一定搞得过!这就比较丢人了。
如果老板不知道这一切,那就太好了。
你的竞对是不是在偷你的数据(正如你偷它的数据一样)
括号里的内容,你应该是懂的,我就不解释了……
你的竞争对手,一般来说是一个成熟公司(这里我假设你也是一个成熟公司,因为如果你是创业公司,可能你并不在乎反爬虫)。原因很简单,如果是一个创业公司,你们可能未必把他们列到竞对名单。而我们前面提到过,成熟公司其实有优点也有缺点。
优点,就是技术实力比较稳定。也就是不至于很渣,当然也不可能忽然大爆发让你顶不住。缺点,自然也是稳定,划水的概率很高。你给他一口饭吃,他就不往死里搞你。所以面对这样的对手,你们其实是非常容易形成一种默契的。
你要明白,他需要什么?他需要稳定的数据,让老板能够定时看到他们的工作业绩,能出来一个稳定的报表。 这个报表数据是否真实,有时候,其实爬虫团队自己都不在乎。你给他一个半真半假又比较稳定的数据源,他们靠这个数据源养活一个很庞大的爬虫团队,还要养活一个很庞大的数据分析团队,这是很大一笔钱。对手浪费钱,对你来说并不是什么坏事。
当然了,你的团队,理论上说也要花费好大一笔钱……
窃取数据的收益
窃取数据之所以一直无法被消灭,自然是存在收益。但是他真的有用吗?还是只是满足了老板偷窥的欲望呢?
机器资源:真的是一本万利吗?
在爬虫和反爬虫团队形成了一个博弈的均衡状态的时候,爬虫团队其实是要消耗大量的机器资源的。
反爬虫消耗的资源大多数是算法,人力成本。而爬虫团队除了付出这些成本之外,往往还需要更多的成本:例如实体的机器(pc或者手机),IP资源,甚至购买的一些模拟数据等等。
反爬虫团队如果想打破这种均衡,很可能轻松地通过一个新的策略或者算法,就让爬虫团队付出巨大的真实硬件成本。
当然,反爬虫团队也要付出一些隐形成本的。例如误伤用户,导致的公司经营受损。这个很可能非常隐性,难以察觉。更不用说反爬虫团队天生有忽略这个成本的动力,极大的概率下他会直接假装不知道。
因此,我们讨论这些资源是否一本万利的时候,一定要注意:隐性成本到底在哪里?是不是我们漏算了成本,多算了收益?
研发资源:内卷真的值得吗?
研发资源的过度消耗则是反爬虫内卷的必然形态。大家都讨厌内卷,但是真的在工作中,一个比一个卷得飞起。
爬虫反爬也是一样的。只要有公司营业压力,公司领导层就会把压力传递给技术团队。技术团队只能夜以继日地不断卷对方,宁可卷死别人,也不能被别人卷死。
一些老油条会和对手形成一种默契,大家彼此各退一步。当然也有一些是恶意欺骗老板。因为,随着躺平文化的流行,大家会越来越不愿意拼命抢那点辛苦钱。这也就是为什么国外的创业公司,爬虫与反爬虫没那么盛行的原因。
法务风险
我们的课程里用了整整一章来讲述爬虫和反爬虫的法务风险,足见法务在反爬虫中的重要性。事实上,99%的爬虫团队是存在法务问题的,这甚至是他们自己都明白的事实。剩余的1%则是合法的搜索引擎。而,100%与反爬虫对抗的爬虫团队,是有法务问题的,因为反爬虫就意味着对方不愿意被抓取,无论如何,强行抓取都是存在问题的。
我们可以理解,部分公司出于生存需要,可能要做一些身不由己的事情。但,违法就是违法,我们的世界从来不会因为一个人多么可怜,出于怜悯而免除一个人的违法事实。
AI能帮忙窃取数据吗?
说了这么多,我们似乎证明了一件事情:我们不应该养一个爬虫团队。因为这毫无意义,这不创造价值,这甚至还违法。但是,我们知道,依然有大量的需求,引诱着很多人去做不该做的事情。
这时候也许你会想到一个旁门左道的事情:
既然“AI时代 is coming”,那么,我们可以用AI来帮助自己去抓取数据吗?
很遗憾,答案是不行。
虽然ChatGPT火到不行,但是实际上他对你的用处十分有限,甚至可以说几乎为0。毫不夸张地说,它只会回复你:“很抱歉,作为一个AI语言模型,我不能提供任何破解加密的方法和建议,这种行为是违法的,也不道德。我们应该尊重网站的隐私和安全措施这种没用的话。
如果你试着把代码给他看,它也不可能看懂,因为类似的代码没有被人类讨论过,所以它没有学习样本。而如果你把代码思路一个一个讲给它听,也许,它是有可能听懂的。然后你再慢慢忽悠它,可能它会说出破解办法,这已经是最理想的状况了。
但是!如果你能讲给它听,那是不是意味着你已经读懂了加密的代码?那么,你为什么不顺手破解了呢?破解的难度主要在于读懂啊!
那么,AI能帮忙防止别人窃取数据吗?
这个问题的结论与上面截然不同,AI虽然不能帮你窃取数据,但是要是说阻止别人窃取数据,那还真的可以。
如果你玩过ChatGPT,你会发现,虽然很多时候它挺傻的,但是有时候它还真的容易在一些死角的地方给你一些奇怪的思路。也许这些你本来也知道,但是你可能思维进入了极限,开始钻牛角尖,往往答案就在你眼前,而你却忽视了它。但是, ChatGPT不一样,它没有感情可言,可以毫无心理负担地进行常规思考,往往你和它聊着聊着就恍然大悟,知道了自己该怎么做(甚至小黄鸭也可以,但是小黄鸭明显没有ChatGPT更好用)。
此外,抛开GPT这类玩法,我们单独说下以往的机器学习,也是可以帮你找出异常流量的。异常流量不见得有问题,但是它们往往拥有较高的嫌疑。加上你可以和ChatGPT聊一聊,没准GPT就给你解释明白了,它们异常在哪里。所以你可以把ChatGPT当成一个小助手,来帮你做一些苦力活,以及充当让柯南灵光一闪的路人。
关键是,ChatGPT比实习生还便宜。
新世界的新道德观
新世界必然有新的道德观。而这个道德观必然从旧世界一脉相承,但是有所变更。
前面提到了AI没办法帮你抓取数据。但是,主要的限制其实还在于ChatGPT本身的道德规范限制。如果未来成本下降,你能够拥有自己的ChatGPT,它没有道德限制了,是不是就可能帮你去抓取数据了呢?这个我们很难说。
此外,如果是ChatGPT抓取的数据,主人不知情,这个法务上如何处理呢?如果说法务上不对主人定罪,那么如何证明主人真的不知情呢?万一是主人有意给ChatGPT训练出了bug,然后假装不知道,却使用这个bug呢?
这类的问题可能会让后续的法律人士头疼一段时间。不过我们现在暂时还可以不考虑这么长远吧。
我们只要保证自己的初心,按照已有的道德规范来约束自己的行为就可以了。爬虫反爬虫,本来就是一个高度内卷毫无意义而又擦边的行为。
原本这里有你和技术,你们两个相依为命。现在又多了个AI,变成了三个人的关系。你们会怎么办呢?
还能怎么办?那你们仨就好好过呗。