热点新闻网
每天更新最新资讯

我是爬虫 我给自己带盐!

作者 |轩辕之风O

袁泉|编程工艺宇宙

爬虫原理

我是一个爬虫,每天在网上走来走去,爬行寻找我需要的一切。

感谢HTTP协议,正因为如此,全世界的网站和浏览器都可以相邻交流,我也用HTTP协议来获取我想要的数据。

我只需要装成浏览器,向服务器发送HTTP请求,就可以得到网页的HTML文件。

然后根据HTML的模式规范,分析我关注的信息,比如图像img,链接A,表单表单等等。

我是一只爬虫,我为自己带盐! 科技资讯 第1张

拿到链接标签后,我可以进一步抓取链接后面的网页,这种情况比较频繁。用不了多久,我就能爬取一个网站上曝光的内容。

当然,我们做爬虫是有底线的。在我们的工作中,有一个既定的定义,那就是Robots协议

只要你把一个叫robots.txt的文件放在网站的根目录下,里面写着哪些目录来约束采访,我就会绕道而行,像这样:

用户代理: *

不允许: /a/

不允许: /b/

不允许: /c/

就像程序员经常看不起对方一样,我们爬虫圈也有一串低估。

最高的位置是搜索引擎的爬虫。他们居高临下,光明正大地攀登。每个网站见面都晚了。他们都想被纳入搜索引擎,给网站带来流量。这些爬虫都是圈内大佬,我们惹不起。

我是一只爬虫,我为自己带盐! 科技资讯 第2张

此外,还有一些爬行动物,有的不遵守机器人协议,随意爬行,有的则日复一日地知道了玉石登山者的照片,爬上自己的服务器逃跑。我们也瞧不起这些爬行动物。

作为一个像我这样的忠实爬虫,平时的事情就是抓取一些网站的数据,比如购物网站,评论网站等等。虽然我们很守纪律,但是这些网站还是不怎么喜欢我们。为了得到数据,我们展开了旷日持久的拉锯战。

我是一只爬虫,我为自己带盐! 科技资讯 第3张

反爬虫手艺

现在很多网站都在云上,云上的资源可以很贵。CPU、内存、存储都很贵,尤其是网络带宽。

我是一只爬虫,我为自己带盐! 科技资讯 第4张

那些网站不喜欢我们的爬虫,所以我们可以理解,不像搜索引擎爬虫,我们可以给他们带来好处。相反,我们也会消耗他们的服务器性能,花费他们昂贵的流量。人民币真漂亮。谁不难受?

因此,这些网站增加了一项措施:一旦在HTTP请求的user-agent字段中发现是爬虫,它们将忽略我们。

我是一只爬虫,我为自己带盐! 科技资讯 第5张

这个用户代理是一个在HTTP协议中指示客户端名称的字段。当时刚入行,没有简历,不懂伪装,容易被发现。

为了继续抓取数据,我不得不变脸,伪装成浏览器的名字。圈子里有些兄弟伪装成搜索引擎爬虫的名字。我没有像他们一样下线。

这一招没多久就奏效了,这些网站升级了策略,通过我们的动作来识别自己是否是真正的浏览器。毕竟我们是一个程序,比人类点击要快得多。一旦网站发现我们在短时间内发起了很多请求,就会切断邻接关系。

我不得不减少爬行的频率,不再被列入黑名单。

有的网站比较恶意,网页里插了一些假图片,只有几个像素,人眼看不见,我们却不知道。对我来说,都是img标签,一遇到就上当了!立即被列入黑名单。

没有办法,摊上这种事,我得想办法换个IP再往上爬,真的很难。

听说圈子里有些大佬用了分布式技能,组织团体攀爬。IP地址很多,有一个或者几个是密封的,真羡慕。

前后端星散

在我的职业生涯中,我遇到过一些新鲜的网站,明明有数据,但是收到的时候HTML里什么都没有,一度让我很郁闷。

我意识到他们使用了一种叫做前后端星散开发的飞行器。浏览器不是将数据从服务器呈现到HTML页面,而是通过单独的API接口获取数据,然后动态加载。难怪我得到的只是一个空壳。

我是一只爬虫,我为自己带盐! 科技资讯 第6张

为了获得数据,我必须学会请求这些数据接口。此外,由于这些网站都有API网关,它们会检查TokenAuthorization等认证字段,我不知道它们的接口参数,所以经常无法获取数据。

程序员向女生求婚的方式

程序员最幽默(ID:幽默1024)。图片整理自:网络[0]程序员向女生求婚的方式[1]男生得知女生是“静态开放”的,会心碎。[2]杭州阿姨正在网上为她的女儿寻求婚姻!我的猿还是很受欢迎的。【3】相亲对象问我:你的职业是什么?[4]程成为的对象[5]

这两年来,我得到的HTML页面越来越简单,浏览器里丰富多彩的页面,看源代码的时候只有几行简单的文字,真是见鬼了!

终于有一天,一个老祖宗告诉我,现在流行单页应用SPA,所有页面都是前端动态诞生的,得到的HTML基本不值钱。

这太残忍了!

我决定买一个真正的浏览器。这个嵌入式浏览器没有界面,专门为我服务的。它嵌入在我的程序中,这样他就可以真正地呈现网页。渲染完我去取数据!

这才是真正意义上的模拟人类去迎接网站,不再需要模拟繁琐的数据界面面试,不再需要忧郁的单页应用,前端渲染就是前端渲染,我不再害怕!

验证码

我不知道是谁发现的,但是网站使用了一种叫做验证码的工艺,这给了我们一个难题。

第一个验证码比较简单。通常是简单的数字和英文字符被变形了,就像这样:

在圈子里,很快就有大佬教我们用OCR自动识别这个验证码,我也在折腾。花了很大力气才终于认清。我不敢说准确率是100%,但还是有99%。

没多久这个验证码就越来越大了。什么汉字识别,物体识别,滑动解锁越来越难,基本超出我的理解。看看下面这些验证码。这是人做的事吗?

我是一只爬虫,我为自己带盐! 科技资讯 第7张

哎,这个对人才来说真的很抢眼,不是对我们爬虫来说~

现在这些网站的反爬虫技术越来越先进,我们能显示的空间一步步被挤压。

前段时间一个绿色爬虫爬着逃离了一家公司的服务器,停止了人们的正常业务,被抓了。现在,约束制度越来越严格,让大家人心惶惶。

内忧外患不断,很多爬虫兄弟失业,转行了。爬虫碗饭越来越差。