原文地址

一、爬虫引言

距离最近一次博客的更新,已经快半年了。这么久一直没写博客,是因为最近半年在跟几个小伙伴打造一个tiktok的数据平台,乐不思蜀。今天抽空特意记录分享一下我认为的爬虫技术的顶端——逆向。这里的逆向主要是指app逆向,这里的app逆向又主要是指安卓的。至于原因,咱们待会聊。

再次回归到爬虫技术,一方面是因为,在这信息爆炸的时代,信息的抽取、分析和总结是一项非常重要的技能。另一方面,虽然之前一直热衷于dnn和算法领域的探索,后来才意识到,神经网络和算法的落地,一定得基于(大)数据,同时。。。现在算法(尤其是dnn领域)的落地面还是非常有限的(不知道大家认同不认同)。所以,回归到爬虫技术、大数据分析技术,才是当下的大势所趋。

Long long years ago,当时的爬虫几乎没有封禁措施,基本就是随意抓;接着开始出现服务端验证(开销大,极少数采用)、客户端验证(js加密)、客服端双向验证,这些呢,基本就是伪造参数,最主要的技术就是js逆向;接着又出现了诸如滑块验证、点击验证、加减乘除验证,甚至12306和谷歌这些变态级的验证,都随着dnn技术的普及而变得脆弱;再到后来因为智能机的普及,出现了app端的数据采集,app数据采集的话,不加密还好,加密的话基本上就只能做逆向了。是吧。

二、反爬技术攻坚

Part1

对于js逆向破解,我接触过有腾讯新闻(当时最简单的)、淘宝(当时算一般的)、拼夕夕(当时最难的)的。腾讯新闻的js简单到什么程度,直接断点就能找到,而且是固定加密字符无expire失效。怎么说,就是你甚至可以自己伪造加密参数都能通过;淘宝的js加密经过几道工序的断点调试,也能找到方法,无非就是对加密参数的处理需要注意转义字符;

淘宝sign加密

而拼多多的js加密算是比较难的,(当时)它本身是调用了一个网上的包,然后自己加工了一大段加密流程,并且分布在几个js文件里面,还做了混淆(虽然这是常规操作,但是非常影响调试),整个破解花了一周多才over,结果不到3个月,拼多多的js加密再次update(内心极度复杂中。。。)

拼多多anti加密
​​​​​

PS:现在的拼多多加密都这么长了???一般这么长的加密,要么会有请求次数限制,要么就有时效限制。。。

js的难点就在于你的耐心。

Part2

接着聊聊滑块和点击系列。

这种是滑块中最简单的了吧,这个一般就三步:1、获取原图(如果没有,则直接第二步,但是会需要一些图像处理的能力);2、缺位计算。说白了就是像素比对(没原图的需要做简单图像处理,这里就不细聊了)。3、距离计算。

Part3

素材来自:验证码反爬那些事_zacharyzlj的博客-CSDN博客

   

这种是逻辑验证码中最简单的,先撇开js可破解的情况不说,这部分验证码都可以通过dnn技术解决。比如以上两个,第一个可以做字符切割+cnn分类,直接带走;第二个可以字符切割+rnn直接带走。有人说,这太简单了,我字符比对都能做出来,有没有难的!来,看下以下的:

怎么搞,切都不一定切得出来是吧。那咱们也升级一下,opencv+crnn直接带走。

在看些更难的:

 

第二个是企查查的验证码。第一个还好是吧,做个边缘检测,再加个cnn分类,很简单。第二个,难点其实很多,比如边缘检测在这个图是比较难的,因为背景也是黑白的,字体也存在不同颜色的深浅交替。检测出来是肯定不准的(当然你可以自定义阈值做限制);再比如字体倾斜,放到cnn模型里识别准确率非常低,基本是错的;在加上还有点击顺序,难上加难。怎么搞?一个物体检测模型tiny_yolo(yolo太大,没必要)+一个字体角度计算模型+一个分类模型(也可以直接放在yolo进行,但是单独拎出来是为了减小yolo的模型大小,极大极大极大减少yolo训练时间)。

看到这,观众盆友可能会说:你说的都是思路,你倒是给个源码我去试试。

行,我放一个项目地址吧!

哈哈哈,你想太多

Part4

app逆向。为啥说app逆向是食物链顶端:首先,app的封禁要弱得多得多,这个是毋庸置疑的;其次,智能机的普及使得大多数api转向m端,web端基本没有(比如抖音、拼多多);最后,js你可以用你的耐心磨出来破解(别说什么vm加密。。。),验证码基本都可以用dnn大法解决,而app的逆向要解决的问题太多太多了,比如混淆、去壳、调用追踪、java层hook、native层hook、so层hook、反反hook技术,用xp你至少要懂java和android,还搞不定so和native,用hook你至少需要会python、java、js,如果是搞ios的。。。你还得会汇编、c和oc,这也是为什么我们先不讨论ios逆向,因为容易掉发(哈哈哈,一个砸壳砸出来个几百个h文件。。。)。

这部分,主要以海外版抖音(tiktok)来做交流内容,因为抖音象征着当前世界最强实力,海外版抖音还夹杂着出海的难题,比国内的抖音更有挑战(后面你会慢慢觉得为啥这么说的,hook工具是frida)!

1、设备注册

你可知道抖音的设备号,市场上是多少钱(一个)?安卓的设备,简单的涉及到**id,复杂的带有谷歌服务的设计**id,谷歌唯一id(光是谷歌这个id一般人就搞不定,因为它不止要解决抖音的问题还需要解决google service的问题)。因为某些原因,关键代码就不放了,在这里提一下思路。

Hook——JS
 

Hook——python
 

众所周知,抖音的的个性化推荐是十分强大的,因为它强大的数据收集能力和分析能力,你拆过抖音的你就会发现,每一个视频、每一个点赞、每一个评论。。。whatever,抖音都会给你记下来(什么log、xlog、monitor是吧[手动滑鸡]),然后这些数据就是在这个函数收集起来的。所以,这部分将是分析抖音数据的关键。JS部分代码就是做了一个数据的劫持回发,python部分就是对数据做一个修改再发回的过程。所以Frida的工作流程就是两步:js劫持,python修改。这里的设备注册,主要是修改了一些影响设备注册的参数,然后继续请求抖音的api,以注册新的设备号(新的设备号就是new_user=1是吧,玩过的都应该知道)。

2、行为培养。

试想,你为什么能大量的刷到你喜欢的视频,就是因为你在看这些视频的时候日志数据发回到抖音的数据中台,计算出你的潜在爱好,后台就一直给你推送相关视频。所以,本质上我们只要伪造(修改)这些数据就ok是吧。行为培养有什么用,可以获取特定领域的视频或文章(今日头条),可以获取针对性的广告,可以给做号的人快速打上标签。这部分就是python部分对数据的修改,没有需要特别说明的地方。

3、参数伪造

抖音体系里面最出名的莫过于X-Gorgon(xg)和X-Khronos(xk)参数了吧,这个算法是真的厉害。一方面他适用于各大字节跳动的产品体系,调用的动态so,另一方面这一套验证机制是惰性验证,随着不同的接口有着不同的验证严格性,换句话说,很多时候即使你的参数不完全对,也可以让你请求,这是非常厉害的地方。如今的加密已经到42了,但是36的加密依旧可以用在很多地方。很多时候,我们没有能力也没有精力去破解so文件,就需要调用native函数来驱动so函数执行,得到执行后的结果进行二次使用。主要使用到frida的rpc服务,详情请移步:JavaScript API | Frida • A world-class dynamic instrumentation framework

  

这是基于flask+rpc做的native函数调用局部代码,可以基于flask做一个调用so层函数的服务,从而服务爬虫。

三、Summary

玩爬虫,轻则入门,重则入狱,哈哈哈,请大家节制使用爬虫技术。

爬虫技术之食物链顶端——逆向相关推荐

  1. 食物链顶端的人类被这种“飞蚊”折磨得很痛苦?

    夏天的天气越来越炎热,令人讨厌的蚊子也越来越多,被蚊子叮咬后不仅会非常的痒而且还会影响睡眠,降低工作效率,甚至还会传染某些疾病.每次蚊子一出现,身为食物链顶端的人类一点也没有感觉到优越感,打死一只,还 ...

  2. 赠书 | 详解 4 种爬虫技术

    作者 | 赵国生 王健 来源 | 大数据DT 头图 | 下载于视觉中国 前言: 聚焦网络爬虫是"面向特定主题需求"的一种爬虫程序,而通用网络爬虫则是捜索引擎抓取系统(Baidu.G ...

  3. python爬网页数据用什么_初学者如何用“python爬虫”技术抓取网页数据?

    原标题:初学者如何用"python爬虫"技术抓取网页数据? 在当今社会,互联网上充斥着许多有用的数据.我们只需要耐心观察并添加一些技术手段即可获得大量有价值的数据.而这里的&quo ...

  4. 了解一下爬虫技术方方面面

        本文全面的介绍了爬虫的原理.技术现状.以及目前仍面临的问题.如果你没接触过爬虫,本文很适合你,如果你是一名资深的虫师,那么文末的彩蛋你可能感兴趣.     一.需求     万维网上有着无数的 ...

  5. python爬虫有什么用处-Python爬虫的作用与地位(附爬虫技术路线图)

    小编说:网络爬虫是一种伴随着互联网诞生与演化的"古老"的网络技术,随着互联网进入大数据时代,爬虫技术迎来了一波新的振兴浪潮. 本文通过企业内部与互联网两个场景向大家讲书爬虫发挥了哪 ...

  6. python爬虫个人如何挣钱-个人利用Python爬虫技术怎么挣钱

    在下写了10年Python,期间写了各种奇葩爬虫,挣各种奇葩的钱,写这篇文章总结下几种爬虫挣钱的方式. 1.最典型的就是找爬虫外包活儿. 这是网络爬虫最通常的的挣钱方式,通过外包网站,熟人关系接一个个 ...

  7. python爬虫赚钱的途径-如何用爬虫技术赚钱?

    题主啊,我不知道你爬虫技术是什么水平,但是我觉得只要你能写出正常运行的爬虫就不应该问这种问题. 我做了四年多的爬虫(副业),大大小小做了近百个项目,既然你问了,我就答一波. 首先,你的思路不应该在卖数 ...

  8. python爬虫技术可以干什么-Python实战:网络爬虫都能干什么?

    整站下载器:siteSucker https://blog.csdn.net/l_215851356/article/details/54377582 http://python.jobbole.co ...

  9. 企业级Python开发大佬利用网络爬虫技术实现自动发送天气预告邮件

    前天小编带大家利用Python网络爬虫采集了天气网的实时信息,今天小编带大家更进一步,将采集到的天气信息直接发送到邮箱,带大家一起嗨~~拓展来说,这个功能放在企业级角度来看,只要我们拥有客户的邮箱,之 ...

最新文章

  1. 华为笔记本写代码真爽,包邮送一台!
  2. Flume-NG源码阅读之SourceRunner,及选择器selector和拦截器interceptor的执行
  3. 1 创建一个存储过程,以及对存储过程的调用 MySQL
  4. JPA中实现双向一对一的关联关系
  5. vue方法调用失败后多次调用_浅析Vue中 computed / watch / methods的区别
  6. [转]ORACLE 异常错误处理
  7. 为什么要自学python_为什么那么多自学Python的后来都放弃了,总结起来就这些原因...
  8. Visual Studio Code 前端调试不完全指南
  9. 每日一练(8)—— 野指针
  10. Angular国际化方案
  11. Facebook、亚马逊等巨头是如何建造自己的数据库的?
  12. [沫沫金原创]Sql中跨库访问和同库跨用户访问区别
  13. 苹果暗黑模式_DNF手游来了!时间已定;苹果商店首次加入暗黑模式;以上为本期内容...
  14. 服务器开机显示检查电缆,电脑开机显示无VGA电缆是怎么回事,求答!
  15. LaTeX中的参考文献BibLaTeX
  16. 输入一个数判断一个数是不是质数,如果是质数输出“YES“,否则输出“NO“
  17. k8s-滚动更新与健康检查
  18. 如何起Linux服务器的21端口,linux下开启ftp的21号端口
  19. win左下角搜索框打不开,没有响应解决办法
  20. Hangfire项目

热门文章

  1. JS实现IE下打印和打印预览
  2. 减可变规模算法—中值和选择问题
  3. Fiddler抓包测试工具
  4. 三大运营商的游戏“刷金”漏洞解决方案
  5. echarts柱状图横向 名字过长时显示省略号
  6. 【Mongoose】添加数据时超时 buffering timed out after 10000ms
  7. c语言从键盘输入10个学生的姓名和成绩,C语言:有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生的数据,...
  8. 人一旦选择活下去,就必须为了生活起早贪黑,四处奔波
  9. 制作简易的web视频管理系统
  10. 2022年广州市生物医药产业创新补助及申报要求,补贴500-3000万