爬虫工作之js逆向

这篇没有具体的技术,只说一下我的js逆向经历。文笔太烂,勿喷!!

我们且先叫他js逆向经历吧!

作为一个Pythoner,一开始我没有想过去做爬虫,从一个偶然的机会我到了现在的公司,一个爬虫相关的工作。我的情况是这样的,最开始用的是Python3,而到工作用的是Python2,刚切换时确实在编码问题上纠结了好久,不过通过各方的学习和实践,编码问题已经不再是一个主要的问题了。

工作中对Python的要求不高,没有使用scrapy这类的框架,通用的技术主要是requests,chrome-headless,rabbitMQ等等,抓取量不大。得益于selenium强大的操控模拟功能,要做一个混吃等死的小白,完全可以。

在适应一段时间后,我发现了许多的问题,比如,我遇到js的时候就头大了,chrome-headless技术不是万能的,抓取内容多的时候,耗时过长…等等。我喜欢研究一个问题直到把它吃透,熟练运用。于是我开始了研究js。

不去刻意的学一些东西,只在遇到问题的时候才去学一点,这是我的原则。我开始疯狂的看网上分析js的博文,CSDN,CNBLOG,知乎,基本从这些站上面看一些别人的教程。学习一些chrome调试的技术,各种断点如何下,如何看堆栈调用,等等。一段时间后,我开始可以简单的扒一些js了,我开心极了,这个对我来讲真的是很大的进步了,我从一个不会js的小白变的可以简单的逆一下别人的加密代码了。而且这些都是我在工作之余自己研究的。正好利用了刚入职的一小段空闲的时间。而正好在这时分来了一个抓Facebook的任务。

急于应付工作需要我使用了chrome模拟登录,抓取Facebook的内容,真的很快,也符合了要求。完成之后,回头来想,我心中却想用另一种方式来实现,是否可以使用requests来实现登录和抓取呢?

我开始在网络上搜集如何使用requests写一个模拟登录Facebook,抓取FB的内容,当然是在我一开始失败了多次的情况下才开始查找有没有相关的人写过问题,然而结果是,没有人公开过。我抱着死磕的态度去杠Facebook了。

花了2个星期时间,使用纯requests写了一个Facebook爬虫,实现了登录,抓取所有公开内容。这之后还破解了FB的搜索接口。满满的成就感,虽然工作上的需求已经满足了,但是使用纯requests的方式速度更快,效率更高了,我为工作真是不辞劳苦。

拿下FB后我又投入到了js逆向的研究了,我相信前端无秘密的说法,但是这句话不是针对任何一个程序员说的,或者任何一个爬虫工程师都敢对自己这么标榜。

这中间我发现了一些问题,就是能够扒一些js但是有一些问题会一直困扰我。
1.有一些js的代码读不懂,影响了对代码逆向分析
2.有时候逆了一些js,但是感觉都是运气好撞对了而已
3.没有一套完备的分析js代码的思维逻辑

这些问题让我苦恼,这感觉就像别人说这个站的能不能搞,你说可能可以又可能不可以吧!

这时候我领悟到,现在的爬虫离开了js,只能是娱乐的工具,而不是一个工程师了。限制你分析和逆向js的原因是你根本就不懂他!

于是我就去看了这本《javascrapt高级程序设计》,当然也没有一次性的看完,基本是遇到一些问题就看一看书,再从网上搜索一些书上相关的内容,加深理解。不敢说书上的每个知识都懂,至少每个点都扫过了,因为我的目标是,能看懂比较复杂的js代码,而不是去写出来,这样再在实际的工作中去读懂js加密的代码。

这对我是一个提升。这一系列的工作也是在我业余的时间里完成的,大概花了3个月的时间,而到最近,我觉得也没有太大的突破,这3个月,是一种执着和对技术的渴望让我坚持下来。三个月里,我研究过的网站包含了百度登录,知乎登录,美团登录,twitter,微博登录,Linkedin,instagram,badoo,大众点评登录,今日头条,网易云,携程登录等等,所以为啥我博客中的大部分文章是关于登录呢,就是因为很多的网站登录时请求参数用了js加密的,这也是我的兴趣点啊,我也开始有一套自己分析代码的逻辑了,开始喜欢上了前端js。

当然,我知道一个爬虫工程师的知识储备完全不止这些,你需要懂的东西太多,而不是现在漫天飞的文章教你的十分钟写一个爬虫,这类文章真的为达到自己目地有意误人子弟!在这里声讨一下!而我写这个文章也是看了B站上的一些爬虫教程,一些忽悠人的视频后觉得有必要分享一些真实的经历。

虽然这篇文章不是一个爬虫工程师全部的工作内容,但提到的js逆向是一个爬虫工程师必知必会的,毕竟老是使用selenium无头这些会拉低爬虫工程师的水平的,最后还想说,深入接触之后,发现Python并不是最适合作爬虫的语言,最适合大概是nodejs,吧拉拉。。。

猜你喜欢

转载自blog.csdn.net/wu0che28/article/details/89084915