大家好,我是哥飞。
这是上周,哥飞在社群里的一次分享,这次分享的知识属于特别基础,但又不是每个人都了解清楚的,所以今天哥飞在公众号里也分享一下全文。
HTTP 协议、互联网、爬虫、外链。
看起来几个不相关的东西,其实对我们做网站很重要。
总有朋友问,为什么在Ahrefs看到了的外链,在GSC上看不到,其实原因就是因为爬虫还没爬到。
要解释为什么还没爬到,就需要解释互联网到底是个啥玩意儿。
所以今天的小课堂,是科普性质的,我尽量用我的语言讲得通俗易懂一点。
互联网,互联网,顾名思义,就是一张互联连接起来的网。
这里的网,既可以认为是网线,也可以认为是链接。
一个是实体,一个是虚拟。
世界上所有的计算机,通过网线、光纤、光缆链接起来了,这是实体的链接。
哥飞备注:图片由Claude生成,能够理解意思即可,细节不用深究
而互联网,正是建立在这个实体网络上的。
每一个网站,都部署在某一台或者某几台服务器上,通过网线连入整个互联网。
而一个网站,少则一个网页,多个几十个,几百个,几万个,几千万个网页。
这些网页之间,通过链接来互相连接。
正是因为有了这些链接,整个互联网,才能称之为真正的互通互联。
服务器,其实也是计算机,只不过是一般不关机,持久长期运行的计算机。
专门用于处理网络请求。
你甚至可以把你自己的电脑通过一些工具,连入互联网,让别人能够通过网络来请求你的电脑。
不过这里我们不展开。
什么是网络请求?
你用浏览器打开一个网页,其实就是由你的浏览器作为客户端,向这个网页所在的服务器,发起一个网络请求,来获取网页HTML源码。
这是获取数据,所以是GET形式的请求。
你打开推特网页,使用网页里的输入框,发布了一条推文,其实也是一次网络请求。
这是提交数据,所以一般用POST形式的请求。
你在你的服务器里调用某个API,其实也是发起一个网络请求,这次的请求虽然是服务器到服务器,但其实也分客户端和服务端,你的服务器作为请求的发起方,就是客户端,提供API服务的那台服务器,就是服务端。
而请求的具体格式,就是由HTTP协议规定的。
所有客户端发出的请求,都遵循HTTP协议,所有的服务端响应请求时,也遵循HTTP协议。
HTTP全称 超文本传输协议 ,是明文纯文本协议,也就是发出的数据,返回的数据,其实都是文本格式。
即使我们上传的是图片等二进制数据,其实也是通过 Base64 等编码方式转换为文本格式来传输的。
即使是HTTPS,也只是在客户端和服务端进行了加解密,加密后传输的依然还是纯文本内容。
HTTP协议的具体格式,我们今天不展开,感兴趣的朋友可以去自学。
我们只需要知道,网站,其实是由一个一个网页构成的,而每一个网页,返回给客户端的,其实都是 HTML 代码,也是纯文本的,肉眼可以读取和解析的。
浏览器去解析 HTML 文本,之后渲染为丰富多彩的,可以互动操作的网页。
我们常说的后端渲染,就是浏览器发起一个请求后,返回的网页是完整的内容,所有最终渲染出来的,都由后端在 html 里一一返回。
而前端渲染,通常分成两步,第一步浏览器请求时,返回一个 HTML 网页基本内容以及一段js代码。
第二步,浏览器解析并且执行JS代码,按需再发起新的请求,获取数据之后,在JS里组装好HTML内容,由浏览器在前端插入到网页的合适位置,最后渲染出来。
互联网,并没有一个统一的数据库。
所有网站和网页都是分散在整个互联网上的各个不同的服务器里的。
没有谁能够清楚的说出全世界总共有多少个网站,有多少网页。
如果有一家公司,想要知道整个互联网上到底有多少网页,就需要派出爬虫,一个一个网页去爬。
这里的爬,其实就是发起一个网络请求,获取网页HTML代码。
之后解析 HTML 代码,提取里边的链接,查看是否已经抓取,如果是已经抓取过的网页,就去看是否需要再次抓取,如果是没抓取过的,就需要判断是否需要去抓取。
对于需要抓取的,就放到待爬列表里去。
之后,不断的从待爬列表,拿任务,不断的爬。
爬网页,刚说了,其实是发出请求,下载HTML代码。
这就需要消耗资源,所以如果想要爬完整个互联网,需要花特别多的资源,资源就是钱,也就是说,需要花很多钱。
所以这里会有一些判断规则,各家的策略都不一样,目的都是找出值得去爬的网页,尽可能的减少成本。
对于谷歌的爬虫来说,分配给每一个网站的爬虫预算都是不一样的,有些新网站,爬虫预算少,有些高权重网站,爬虫预算就高。
如果你的网站,在大量生成质量低的页面,谷歌一开始爬了之后,发现你的网页都拿不到排名,之后就会调低你的预算,不再爬新的网页。
对于已经爬了的网页,也可能不索引。
对于已经索引了的网页,也可能删除索引。
这时候,你的GSC里的网页索引里,就会看到未索引页面在不断增长。
如果你无视这些信号,还在持续不断的生成同样的低质量页面,谷歌就会对你的网站进行惩罚,不给你曝光了,目的也是提醒你,要有点自觉,别再生成垃圾页面了。
刚才说了,各家的爬虫都是独立运行的。
所以谷歌的爬虫爬到了的网页,Ahrefs 家的爬虫不一定爬到了。
同样的,Ahrefs 家爬虫爬到了的网页,谷歌的爬虫不一定爬到了。
另外,谷歌GSC里显示的外链(反向链接),是有延迟的,并不是爬虫抓取到了,就立马显示出来了。
而 Ahrefs 等 SEO 数据平台的反链,会更实时的放出来。
基于以上两个原因,一、爬虫独立运行;2、数据显示时间不一致,就会导致大家在各个平台看到的数据不一致。
举例,你在ABC三个网站给你的D网站加了外链,过两天,你去Ahrefs查,可能看到了BC出来了,A还没出来,而去GSC查,可能一个都看到,或者只看到了A,或者只看到了B,都是有可能的。
为什么现在大家做AI搜索,不会想着去自建一个爬虫?
原因就是上面说的,如果想要建一个把全网所有网页都爬完的爬虫系统,需要的费用会是天价的。
所以ChatGPT会选择用Bing的搜索接口,有些别的AI搜索可能会选择Google的接口,或者别的搜索引擎的接口。
但是OpenAI是有爬虫的,他的目的不是爬完全网的所有网页,而是去爬一些指定的,有着高质量内容的网页,用于构建训练模型所需要的数据集。
以及,当我们提出让GPT去搜索总结一些网页时,实时的去抓取网页内容。
以上就是今天的小课堂内容,主要是给大家科普一下,网站到底是个什么东西,互联网到底是怎么互联的。
理解了这些基础概念,对于大家做好SEO,是有帮助的。
而且程序员学好了SEO,就有了不依赖平台而独自生存的能力。
哥飞祝愿每一位程序员,都能得偿所愿。
没有评论:
发表评论