全网最新阿里系二三四划怪验证码参数加密分析,包含网页分析,核谱,环境代码讲解,感兴趣的朋友一键三联关注我,学习更多爬虫知识,开始吧!那么我们想通过协议来过当前的验证码的话,我们首先要解决它重点的一个加密参数,也就是刚刚讲一道的二三四, 目前的阿里啊,他已经更新了,目前的验证码的话,已经更新为二三四的一个逻辑了啊。首先我先给大家讲一下,它里面是做了一些修改,呃,首先在于环境的检测点,额外的检测了某些信息,其实跟二三幺还是大差不差的,只是说里面多了一些东西啊,多了一些额外的检测点,那么我们来看一下啊,我们来,今天我们就给大家讲一下啊,通过协议来过发,那我换成谷歌浏览器啊, 那我们来看。首先我们现在页面当中啊,我们先去进行验证码的产生,产生一个滑块拼图,来,我们鼠标右键点击检查,打开开发者工具,然后我们像在开发者工具当中,你看我们来进行一个验证。呃,如果我们正常去做验证,你们要记住阿里的验证码跟腾讯的验证码是有缩放 的,是有缩放,什么叫缩放?你看各位有没有发现它的方块图是没有缩放,但是它的背景图会缩放,看到没有 看没有,他是有个缩放,所以你们注意,尤其这个缩放是在做轨迹处理的时候,是很重要的啊。那么在这里我们先做一个验证,你看我们进行拖拽,然后进行验证,那么当我进行验证的时候,你看像在下方啊,他会给我们产生对应的一个验证的一个接口,看没有会产生一个验证接口,里面告诉我们是验证不通过,对不对?你看他会返回一个验证失败, 如果验证成功,它会返回一串对应的验证成功的指令。那么在这里我们来看啊,我们想通过协议的方式来过这个验证码,我们的核心是有这么些参数,你看一个 u a, 也是我刚刚讲到的二三四,你看 u a, 然后其次,除了像 u a 之外啊,它下面跟 u a 共同生成的还有个叫做 umid token u m i 的 target, 然后再往下走,还有个下划线,我们的软蛋的一个折,目前的更新制作了 u a, 这三个参数其实都变了,因为它里面的代码都已经产生了变化,打这三个参数都已经变化了啊,然后其次,我们在这里各位看一下,有些朋友可能会疑惑说,这个 intache target 是 什么, 对吧? intachetoktok 也是一串密码,为什么不用管它呢?知道为什么吗?这个 intachetoktok 是 获取验证码接口返回的服务器返回的,它是作为验证码的标识,对吧?它的话是用于作为验证码的标识来进行处理的,对吧?所以大家就注意啊,注意啊, 那我们来看然后这个 run down 值,其实 run down 值的更新其实更新了,我记得好像是,呃,上个月更新的吧,还是这个月初?然后这个 u a 的 话是最近更新,最近两天,最近两天更新的,上一次是二三幺,然后这个 run down 值的话,它的更新是在这个月初啊,做了一个更新啊,其实现大厂的普遍都更新了一下,你像多多的,京东的都都做了一些小的更新啊,你们感兴趣可以继续研究一下。 好,那其实来我们来试,那么像在这里你看我们当前的话,首先我们要先来解决这个 u a, 也就是我们今天将来重点讲解的一个参数。其实目前的 u a 啊我已经研研究了一下。可以搞纯算版本啊,可以搞纯算了,可以搞纯算。呃。然后软档值的话其实也可以搞纯算啊,有,对于有啊有解析。呃。我最近的话,我有个学员,他对这个软档值已经搞定了啊,他做了纯算, 我看一下拉出来看一下。他做了纯算,呃。我们的后摆这个 你看它这个地方的话,你看它的话是做了一个纯算,是吧?做了一个纯算, run down 的 一个纯算,当时我也看了一下。可用啊?可以用啊, run down 的 话,其实做补黄金的版本它会有一些问题,因为它里面有个强制的黄金检测,阿里的有点坑,阿里的它这个 run down, 你 如果做补黄金的话,像它里面有些检测点比较特殊, 比较特殊,所以做存算可能会稳定一点,然后 u a 的 话也可以搞存算。 u a 的 存算我也研究出来了,但是里面的轨迹有点麻烦里面的轨迹有点麻烦。好吧,这个看你们自己好吧,因为这个搞存算是因为前段时间有个学员他要做一个外包,呃,可以发我一份。不好意思,像这种代码的话,我们一般你可以呃发 money 来买,但是我们不会免费发放,对吧?理解一下。 ok, 来我们来看一下,因为像这种它价值都很高的,我们不可能说实话,这种东西我们不可能免费的,它里面只是说跟之前的是大差不差的,里面有一个很大的数字,然后做印刷。 ok, 那 么在这里我们现在来看一下啊,我们先来处理一下它的标准参数,也就是这个二三四,你看为什么叫二三四?因为现在它是二三四开头了,之前为什么叫二三幺呢?之前有很多版本,二二六二二七,对吧?二二八是吧?有很多很多的版本啊,当然每个版本我就不都讲过了,那么今天我们先来看一下这个二三四它到底是如何构成的,那么目前我们这里我们就会涉及到一个 gs 逆向的一个基础。 那存算要学算法吗?呃,存算有两种形式,第一种就是算法实现,第二种就是扣代码实现,就是里面缺什么补什么,就是不用补黄金。呃,你如果要存算的话可能会比较贵啊, 比如说要存算的话可能要比较贵,哈,对吧?有,其实你可以拿拿去拿个补黄金的学习一下。补黄金的话,你在目前市场你像某鱼上面去买两三百块钱,四五百块钱基本都能买得到,比如说不能用,买那种不能用的就是那种两三百块钱就能买得到, 感觉扣带吗?简单实用。呃,扣带吗?也没有你们想那么简单的,雪球大家搞了吗?我问一下老咱们的这些老粉们,雪球你们搞了没有? 那还没搞,这不搞不定,雪球不是开源了吗?前两天才讲过雪球。 ok, 那 么我们在这里会涉及到很基础的问题啊,这个老生常谈的一个问题叫做健身意向加密定位问题,我发现咱们有很多老粉跟着我,说实话,学了一两个月了,我也不知道是不是我讲的问题,还是你的学习能力问题,老是对于这些基本的这些加密定位老是搞不通。 你看,我想问一下你们目前 gs 逆向加密定位就是我们经常遇到加密的时候,我们要做哪些方式来找到它加密位置啊?有朋友知道了吗?我们常见的一些手段有哪些?是吧?就是来遇到了加密是吧?现在要去找到这个加密,把这个加密参数在 gs 代码里面,对吧?由谁来生成的或加密的, 对吧?跟站搜索堆站分析,这写了,马上爬实体啊。哟,你这还在入门啊哥们,对吧?八位同学, ok, 那 么在这里给大家讲一下,建设逆向入门嘉宾体系真的非常重要。第一个叫做关键词搜索法,关键词搜索法但目前市场是有很多的用途的,我可以告诉各位,用途真的非常广泛。其次叫做调用堆站请求分析, 调用对账应该叫做请求,大家要分析请求的分析的请求的分析请求,哎,调用对账分析。其次还有朋友讲到的后可监听,对吧?后可监听或学后可注入。呃,你可以后可注入的话,一般用基于抓包工具后可监听,直接在浏览器控制台就可以实现。 那么我们像在这里,你看我们在这里,我们就用这个请求的调用堆栈来进行分析。 ok, 我 们来分析一下他的过程,我们可以看到屁股后面有个启动器,在启动器里面他是不是有包含了一个叫做请求的调用堆栈?那么当前浏览器给我们所呈现的这个请求堆栈,他的话是从下往上走的, 这是执行顺序,也就是说当前的这个 x 一 是为我们当前的请求最后一个堆栈,明白吗?但是我们做逆向推导,我们要从 x 一 然后往前推来看一下他们在这个 x 一 还是阿贾克斯,还是等等等等,在哪个站里面,哪个文件,哪个方法里面来加密来生成了我们的 u a, 明白吗? 那么在后面这个对应的就是我们的 g s 代码的一个地址,你看我们首先直接可以进这个 x 一 点进去,进入 x 一 来打个断点,我们在页面当中进行滑动,然后断点 好断点,然后当我们断点之后,我们不需要去观察代码,因为像他的这些代码,说实话我们看也看不明白,对不对?你看这代码,我看也看不明白,我们的核心是干嘛的?核心是来观察作用域, 但是请同学们记住,看作用域有个很恶心的地方,什么?就是有些作用域,比如像有些特殊的 promise 里面签套的,我们的 cost, 我 们的控制流语句啊,直接写中文吧,控制流语句的啊,它里面会有进行大量的叠带,那么像这种我们观察 众用域看不到东西,大家应该遇到过啊,应该遇到过啊,一般如果说我们在调色过程当中,如果有发现它里面有涉及到这种控制流语句,并且进行大量的迭代,那么像这种我们一般要去观察我们的对象,而不是说去看众用域了,因为众用域里面它只会输出一些迭代信息, 会导致我们根本看不清楚。但是像这种正常的堆栈,我们是可以直接看中域的啊,正常的是可以看直接看中域,因为在中域当中,你看我们现在当前执行的是不是为我们的这个 x 一, 你看是为 x 一, 那么我们可以向上推,你看向上推,那么向上推的过程当中我们可以观察中域 有没有参数。呃,有,在这个地方我们很明显的可以看到有两个,对吧?有一个 w 和一个 c, 是 吧? w 的 话是包含了我们要的 u a 和 u m i d, 哦,他们两个很在一起对不对 啊?他们俩在一起跟二三幺的话,他其实还是大差不大的,二三幺其实也是这样的,所以说里面产生一些变化,给大家细讲一下。那么在这里我们现在可以去找一下这个 w, 你 看我们把代码掏出来,然后你可以看啊,我们的 round 值的生成在这里, 这就是 x 点 round 值的生成,这个 round 值的生成啊,它里面其实说白了它里面其实说白了它里面就是多了一层,多了一层封装,但是其实际上它里面的底层采用还是采用的这个, 还有这个 get, 我 们的 trap 点根,我们的 run down 弯曲的由它来构成的,我们的产品都是 run down 的 生成,你们自己看一下,跟之前的版本只是多了一个额外的环境检测,如果是补环境的话,但如果是做纯算的话,你从今年的四月、五月份、五月份开始做了纯算,基本到现在的基本是可以通用, 那基本是可以通用的啊,你可以继续试一下,然后我们再往上推,再往上推的话,不好意思点错了啊,来点这个来,我们再往上推,再往上推的话,我们可以看到它的 w 的 生成, w 是 等于 d 点 u a, 我 把字体放大一点, 放大一点,应该看得清楚一点啊,都看得清楚一点啊。来,那么这里大家请看当前的这个 g 点 u a 是 吧?来源于 g, 是 不是取值啊? g 点 u a 点是取值的意思,那么也就是说它是取了 g 里面的 u a, 对 不对?那么 g 的 话是等于 a 点 get data, 那 么我们是不是要进入这个 a 点 get data, 在 里面找到它的 u a 的 属性, 是不是进去?进去之后找到它的 u a 的 属性来进行断点?因为我们要的是 u a 啊,对吧? u m a tokyo, 我 们后面再讲,好吧,来放掉,放掉之后我们现在在整体的窗口当中来重新来进行验证啊,先把所有断点先放掉,要把验证码加载出来啊。好,然后勾选所有断点在页面当中来进行滑动, 来滑动,来滑动断点,然后滑动。进行断点之后我们可以看到 u a 的 话,它的核心调用是调用的一个 this 点 f y model 点 ga 头 f i tokyo 的 一个方法, 是吧?是由他返回的,对不对?呃,那么在这里他这个代码其实不太好找,为什么?因为当前的这一次我给大家讲一下,为什么我们还要继续找下去啊?很多朋友其实不太理解,我们其实也可以在这个里面直接去掉这个方法,其实直接掉这个方法也能够来生成我们的这一次我们的二三四的值,但是这个方法有个弊端,什么弊端呢?就是当前的这个,这一次这个实列化,我们找不到 他实列化的地方,所以导致我们不好用, 对吧?导致我们不好用,然后朋友们,我们继续来看,所以我们在这里我们更加希望的是更加深入一步去找它方便处理的地方, 明白吗?像这种这是要有实体化的,除非是你能找到实体化的位置,不然的话我们找不到这四个指向位置,晓得吧?那么在这里我们要更加进入一步,再进去的话,它里面的话,你看它还是嵌套了一个这四点, f y op g 点 get f y toky, 是 吧?我们再次进入它来进入它, 你看像这个地方它会比较好处理了,因为在这个地方它是不是就没有 this, 直接是一个 b c 的 一个方法,处理了一个 double n, 然后和一个 g, 对 不对?这个地方它是不是就返回了?是我们所需要的 i 三四的结果,你看这个地方是我们的 i 三四的结果, 对不对?那其实际上我们找到这里之后,我们还可以继续,我跟大家讲一下,还可以继续找到 bc 方法,在这个 bc 方法当中可以进行通过插桩的方式来找它的具体生成哦,跟大家讲一下哦。因为你们做纯算,做纯算的话,它这个里面啊,它里面有很设置到很多这种控制语句,它的控制语句每次执行它只会生成一个字母, 它只会生成一个字母,然后在后面陆陆续续的再通过这些字母来把它进行拼接的,所以里面很长这个你如果你不会插桩的话,那我告诉你,你不要考虑做纯算,因为你根本你连他最终的加密都找不到, 那你是找不到的,那你找不到的,那当然还有种简单的比较叫做半纯算方法。什么叫做半纯算方法呢?之前有个学员做了啊,就是直接把这个 bc 给它掏下来,单独的拿这个 bc, 然后根据这个 bc 的 调用所缺失的内容去补,但其实说实话还是要补一些环境, 那还是要补一些环境对吧?所以啊叫做棒棒糖啊,叫做棒槌上吧,叫棒槌上吧。他只是代码,可能整体扣下来只有差不多八千多行代码,如果你扣全部文件的话差不多有两万多行代码。那么大家来看一下当前他跟二三幺的区别在哪里?他们的调度牢记以及调度方式就是在这个地方他不同。下面 各位不要小看了这一点不同他里面的检测,因为他里面当前这个方法,然后是基于言行恋对象来进行处理的啊,当前我们现在方可以找不到, 现在发的话题有点难找,那么当我们遇到这种地方的时候,我们有个最好的解决方式就是补环境对不对?那么我今天就教大家补环境的版本。 老板如果你们想学纯算也没关系,但是纯算其实说实话目前在市面上的纯算大多数讲的都是,呃,要么就是大家听不懂的,要么就是缺胳膊小腿的,因为现在目前市场纯算你们基本都只能通过付费的方式去进行学习,你像某某某某某有个那个某姓的那个叫什么? 某信的有个呃星球对不对?有个自星球,你们可以去购买一些自星球,或者去外面找些机构报些课,呃,都可以。呃都没有问题的啊。 ok, 一 本现在存上的话,你首先你要先先把 s t 反混淆,然后各种控制语句插装什么的,你要把它学会三 句话还是呃三句话肯定会补环境会多一点,但也看需求啊,也看需求。 ok, 那 么在这里我们现在就把当前所有的 g s 全部进行拷贝,然后全部拷贝完成之后你看我们下面叫补环境。嗯,我想问一下朋友们,你们知道补环境是什么?嗯, 我在这里重新新建一个啊,新建一个文件叫做阿里最新今天几号?十二月二十二,对吧?写个标识,幺二二二二,打幺二二,然后阿里的二三四删除加密补环境。 好,然后我们现在在这里来新建一个 j s 文件,你看有朋友知道补环境是干嘛的吗?为什么要补环境? 鲁环境是不用扣代码,鲁环境是不需要扣代码,鲁环境的话,你看我们相当于是把它整体的 gs 代码都扣下来,对不对?那么我们要清楚的知道这个 gs 代码在执行的过程当中,是吧?过程当中会依赖很多浏览器的一些我们叫做它的 window 或我们的 document 里面的属性或方法,是吧?你要知道像我们基本啊,像这个代码,因为我们是全扣的,如果我们去直接执行,我们是掉不了的,因为你要清楚的知道这些代码在执行的过程当中啊,它会依赖很多浏览器的文档,是吧?那么什么是文档?什么是文档呢?我们举个例子,你看, 其实在浏览器里面大家可以观察一下。呃,我当前我先把段点全部给它删掉,好吧,把段点全部都放掉先,你看啊,在浏览器里面,我们是可以看到它会有一个非常庞大的一个整体的部分,这个叫什么 元素,对不对?这元素对吧?上面都给我们写了,对吧?元素一秒口,那么上面这个元素我们正常的称呼是把它称之为叫做节点。什么节点有朋友知道吗?什么节点?嗯?什么节点?不晓得给大家发个福袋吧,看大家怎么不说话。 嗯,朋友们,这是一个什么节点?逗我们节点,逗我们,节点全称叫做 dog 的, 那就是桌面头,那就是桌面头。然后其次我们可以看一下页面,然后它在整体的页面当中,各位有没有发现它首先有域名、地址、主机地址、参数、路径,并且还有头部以及涉及到整个窗口,在整个窗口里面又会包含很多 css 和 gs 等相关的内容,你看我们可以刷新整个页面,我们现在可以刷新一遍啊, 它里面是包含很多信息的,那么整个窗口就属于 word, 那 么在 word 里面它会涉及到很多的方法,你看当前的 word, 你 看在整个浏览器里面的 word 的 方法实在是太多了,可以说有上百个,那上百个,那么这上百个方法我们该怎么去处理呢?我们不可能把它全部补下来的,有同学说,我们能不能在右键复制 o word, 然后把它全部复制下来,没用的, 本地环境是不一样的,对吧?本地,因为我们当前的本地的执行,你要知道在本地执行我们用的是什么? node js 解释器, note g s 解释器,你说白了,解释器它是不支持直接来生成对应的文档或者到后面的对象的,它没有页面 啊,它没有页面,也没有各种标签,各种节点都是没有的。 note g s 解释有什么呢?只有内置的一些 api, 也有接口,那么它只能把我们在浏览器当中所看到的 word 和动物,把它统统转变成对象,以对象的形式来进行模拟浏览器的环境进行, 对吧?呃,但是你要记住哦,它里面会有很多的属性或方法,那么我们在这里就会出现一个核心点,我们要知道在当前我不可能把所有的代码给它全部拿下来吧,对不对?所以我要知道当前这个代码在执行的过程当中会依赖到哪些 我们的 bomb 与 dom 的 方法啊? dom 与 dom 的 方法或属性,那么在这里我们就会进行监听,我们会通过一个代码来监听当前代码的执行,对吧?来监听它,来看一下它在执行的过程当中,它去设置,或者说去 get, 去获取了哪些属性,哪些方法。 那么在这里我们会上一个监听,那你看我们重新新建一个文件啊,免得等下,等下不要卡,来,我重新新建一个 code 主环境 来,我们在这个文件当中,我们通过导包的方式来把它导入, rate 啊, rate 来把它导入,来导入代码同路径点杠的扣的一点介绍,今天我将为大家讲一个完整版。呃,做好预期,大概将近五环镜有将近四百多行代码, 那么这四百多行代码的话,我们的讲解可能差不多要将近两个小时的一个时间,所以我希望大家可以,呃,先上个洗手间,然后等一下重点部分来了,就不要错过,我会回放给你们的啊,所以希望大家注意一下。那么我们像在这里,你看我们导入这个包之后,你看我们像在下面,我们就可以调,对不对?我们下面的调方法我们是不是同样的? 来,我们先去生成啊,先进行验证码产生啊,先产生个验证码来点击登录 好产生验码,来把这个断点开起来进行验证。那么在这里我们现在要先把它里面的两个方法找出来。首先第一个也就是我们的一个多乐福,我们的 n 是 谁?多乐福 n 十九,然后后面的 g, g 是 谁? g 是 一个对象,对吧? g 是 一个对象,那么它的调逻辑是这样的,会生成我们的 i 值,这是一个主体部分, 对不对?这个 i 值我们把它改一下,刚才好像改成了杠二三四,然后把这个 g 给它拿下来,把它变成一个 power, 我 们的参数,对吧?变成一个 power 来,然后把它给右键复制 o j, 把它拿下来,然后这个 n 值把它固定,它是一个十九,对吧?生成十九。那么朋友们,我想问一下,我们现在这样直接调能调用成功吗? 啊?肯定调用不成功啊,调用不了的,为什么说它调用不了呢?第一个中域的问题对不对?我们当前这个 b c 方法是属于谁啊? b c 方法是属于当前这个 factor, 一个自执行的一个函数里面的内部方法,对不对?那你说实话,我们能调吗? 啊?肯定掉不了是吧?肯定掉不了,私信直接报错,想都不想。 ok? 朋友们,如果你们觉得我讲的还 ok, 记得各位手不要停。好吧,给我点点赞好不好?帮我点点赞对吧?把我的这个呃,对吧,刷一下好不好,让更多的人来学习。好吧,也不求你们花钱送礼物什么的,我们就点点赞好不好? 来,我们来看哇。那么在这里来怎么办?我们现在我们这个 b c 就 没有,所以我们要把当前这个 b c 给掏出来,怎么办?我们在上方声明一个全局的 word, 通过一个 word 来等于个 global, 为什么 word 等于个 global 呢?这个是属于内置的 api, node 键是内置的,所以我们可以直接补个 global, 它里面会有具备我们常见的一些呃, word 的 一些方法, 所以我们直接补格勒布,但是你们要注意,很多时候格勒布会被检测。当然呢,这个我后面会教你们怎么去处理。打注意啊,等下我会教你们。然后在这里我们声明一个 win 的 之后为什么要声明它,因为我在这个里面我可以来接收我当前的 bc, 把它变成一个全局方法, 你看 bc 是 不是在这里?你看我把它从一个局部方法来 win 点 bbbccbbcccc 来等于我们的这个 bc, 那么这样的话,我在外面的话,我们是不是通过 word 点 b b c c 可以 直接就能够来调用它了,是不是这样的?应该是这样的结构对不对?是不是这样一结构,那么我们现在去执行肯定想都不用想,它还会报错,环境问题,那还会报错,那么在这里我们现在怎么办?要来补环境, 其实我们补环境啊,很多人都不会补。首先你看我们做一个最基本的,我跟大家讲一下补环境的原理,其实真的很简单的。首先目前我们现在常见的两种,呃,软蛋的话,我们不会公开讲解啊,一般像我们这种免费开源的话,我们只会可能某一个加密,会挑出一个部分来进行讲解。比如阿里的验证码,我们只会讲个 u v, 也就是 i 三四, 你说其他验证码,我们可能也只会讲一下它里面的加密啊,我基本不会讲,理解一下,像这种我们不可能免费开源的。 ok, 那 理解一下,你目前在市场,你先看一下,你先找不到,你找的都是些老板,等它过期了或失效了,我们才会开源。一般正常正在处于市场的一个热期的时候,我们是不会把它开源的,因为我们要考虑到第一个市场, 对吧?市场很多人靠这个赚钱的,我们不能砸别人的饭碗,好吧,对吧?我知道大家都想学,但是这个东西你说实话,我举个简单例子,你说实话,你去现在读高中,你不去交学费,你直接在外面旁听,别人会愿意让你听吗?那不可能的嘛,是不是?好了,朋友们,呃,不讲那么多,那么在这里你看我们现在刚讲到哪里来的了? 嗯哦,刚刚讲到了代码,那么我们在补环境时候,其实最常见的就是两种,一个是圆形面,对吧?呃,说实话,我写英文吧。呃,一个是我们的 put, 一个是我们的兔讯, 排挤,一般是这两个对不对?这两个检测是目前我们在市场可以说是最常见的,但大家有没有想过,其实啊,我们可以把一个复杂的问题想的简单一点,呃,其实我在这个里面我升级了很多的环境检测代谢检测框架,但是我现在不升级了,你们知道为什么吗? 因为我发现一个很有意思的点,就是如果当前网页基本如果有检测了 toastron 的 一个 tag, 那 么基本它的原型链肯定也会被检测,为什么会这样说呢?你看,我们首先可以观察一下这个对象,比如说你看我们的 windows 点,我们的原型链 run to 杠杠,你看后面有没发现,其实如果说它有检测了我们的 toastron tag, 那 么你会发现它其实就是属于我们的原型链对象之上的, 对不对?你要知道在正常的 windows 对 象,在正常的 windows 对 象里面,它是没有这个,呃,这个什么什么 type 的是没有啊,各位对不对?所以其实我们很多时候不用那么麻烦,我们直接可以去做一个处理,如果说当它有检测了我们的 toast, 我 们的 type, 那 么我们在这里是不是它说白了就肯定有原形念检测是不是 对不对?是不是就可能会有原形链检测,是吧?所以我们像在这里,你看目前这个补环境框架,你们感兴趣,你们自己去找小助理获取,好吧。啊?我看了一下,基本都是老粉,呃,都没有什么新粉丝了,都是老粉,对吧?你这样,如果你们有需要你们这个,你直接可以关注我,然后去加到我的小助理,让小助理发给你们就可以了, 明白吗?这个补环境框架,那么在这里我们将要上一个最基本的自执行的一个函数,这个自执行函数用来干嘛的呢?就是用于检测我们当前的 gucci, 看到没有?我们来执行一下啊?你看我们右键去进行执行,你看当我们去进行执行的时候,我们可以看到在下方啊,他并没有给我们抛出呃任何相关的一些信息,呃,没有去调用,看没有没有调用,没有调用就证明他没有执行,对不对? 就没有执行,没有执行。然后我们再上一个简单的代理,就没必要去搞这种高级代理,因为这种高级代理说实话它里面有些东西会进行国内啊,我们在国内的很多前端的设计会有点问题,就它会进行私有属性的一个处理, 对吧?所以会导致报错。所以我们在这里啊可以使用一个简单的代理监听,你看这两个是重点,一个是我们的 toast 检测,一个是我们当前的环境监听,可以来监听我们当前的 win 的 对象。你看我们来监听当前的 win 的 对象,来 win 的 等于我们的一个 word 来监听 win 的 对象,并且告诉他监听的对象是谁,监听的对象为 win 的, 对吧?一个是 og 对 象是谁?一个是 name, 名字嘛,对吧?然后去执行程序,然后我们很明显的可以看到他在这个地方是有进行的我们的 toast 镜的一个调用, 对吧?有朋友会说会不会跟他有关系?因为我们在这个检测里面其实是有去进行的我们这个呃 two string 的 一个调用,所以啊,我们换一个检测,我们可以换一个没有 two string 检测的一个东西啊,就是换一个原声的试一下,你看我们换一个原声的,它里面是不是就没有检测了? 但是这样的话其实它不是很标准,明白吗?这样不是很标准,那么在这里大家请看,其实我想告诉各位的是,这个里面其实没有圆形键, 因为它没有被调用,对不对?你们看,所以大家请注意啊,之前的话我们用,因为之前这个地方我没有讲啊,今天特别讲一下,因为像我们很多学员在使用的是这种高级检测版本,这个版本它里面会自动的对它的数据进行复制,所以从而导致它会被进行调用。其实实际上我们只要换一个简单的代理监听,其实 就不会被调用了,因为它其实是我们自己去进行复制的,而不是这个代码来,所以这里面有个坑,这个是我以前挖的一个坑,现在我把这个坑给它补上了,所以我希望今天听了直播的朋友后续一定要多注意。 那么在这里我们发现他没有检测,我们可以看一下下面,在下面的话他,呃,很简单的逻辑的输出,里面会有 word 点的开销,是吧? word 点的开销的一个缺失,那么在这里我们是可以直接去补一个 word 点的开销,但是请注意啊,因为这个检测其实有时候也不标准, 有时候他这个检测其实也不标准。好了,我先先不管那么多吧,我们先补来,你看我们现在在下面可以去补一个 word 点的开销, 那么 word 点开手是个什么东西呢?在浏览器进行执行,右键复制 o 接口,点开手, ok, ok 之后我们现在再次执行程序,执行程序下方,你看他同样的会给我们报一些异常,我们去观察,在里面为这种未定义的,我们都可以去看一下啊,像这种未定义的,看下这种未定义的,但是请记住代码补环境的要求,第一要素先补报错, 就是我们可以先暂时先不管上面这些信息,对吧?我不会辜负你的啊,没关系啊,这个辜负故事咱们自己的同学们自己事情,我们仔细观察上面这些是不都是吻别定义, 这个是微定义,然后下面的话你看可以不用管,我们先看报错,你看报错是不是在这个地方,再检测 word 点 e 位极对象值为微定义的时候,然后进行报错,是不是?所以我们在这里可以先把这个地方给它补上,明白吗?我们先补报错,它是一个方法,如果是一个方法,那么我们就直接在后面跟上我们的 python 手。记住我们的 word 一 般不需要入参数, word 对 象 里面的方法不需要读参数,但是 dom 需要, dom 需要, dom 需要,为什么 dom 需要呢?因为 dom 会进行一些标签的处理, 那 dom 它是会进行一些标签的一些处理的,所以你们要注意,明白吗?来,然后我们再次去执行,反正先不报错,你看下面再次进行报错,对不对?然后你看报了一个什么? u a b 英妹举是吧?我们看一下它是一个什么,它本身就违规定义,但是它为什么会报错呢?这个我给大家讲一下,记住这个报错,它有可能是我们缺少了其他对象, 就是其他对象可能并不在我们当前的这个之上,你知道吗?他可能是缺少了其他对象,那么在这里我们该怎么办?所以我们可以去尝试性的去声明当前的所有的检测对象。当前所有检测对象分别是有哪些呢?就是这些,像 document library, locator, locator 这些是我们目前市场常见的一些对象,那我们可以直接把它读出来, 但是复制过来就来补啊,复制过来之后我们先不要去做额外的处理,直接在上方进行空对象的声明,记住把它全部声明为空对象。其实我想告诉过的是,呃,这个挪开手可以不要啊,为什么?因为挪开手上面补了,然后像这个我给大家讲,其实阿里的其实他没有特别严格的检测,其实圆形念不补 可能也没事,当然了,我们具体我们现在也不清楚啊,它里面到底有没有我们,说实话我们还要等一下再看,晓得吧?来把当前的基本的逻辑给他处理,然后各位,你们还知道吗?还有个 note 老师是原学的吗?呃,不是 啊,但是,呃,怎么了?你是想学原研原研的课程吗?像这个哔哩哔哩同学如果想学的话,也我也建议你去学,但是一定要有很好的基础,因为我记得,呃,原研好像它的重点是讲链接 啊,它重点的话是讲链接啊。呃,这里我看了,有个同学说想看我的 github, 你 还不直接看我的马云, github 的 话我应该很多朋友上不去,对吧?你们如果感兴趣我的 github, 我 的 github, 说实话,你们感兴趣看我马云吧。 啊?这个是我的那个。呃,一个代码推广的一个平台,其实你们很多时候你们需要原码的,说实话你们可以直接呃呵到我这个地方去。自己去 get 啊,自己去 get。 我 经常我的推送基本都推到这里,因为上一个大号的话,说实话很多人都不会,对吧?很多人都搞不上去,你看我其实我的原码都在上面。 ok, 这个你们自己去弄啊。自己弄好吧,但我这好像是私有的,我没有开源,我等一下我直播之后把它开源一下,现在是私有的。好,我们继续 来,那么我们上在这里的话你看,那么当前把这些相对应的这些对象给他补上之后,我们右键来运行当前程序,你看,然后我们来看一下他报错,嗯,他的报错在这个地方还是给我们直接报了,这个问题看到没有?有个很恶心的地方, 大家请看,这不还是报了个问题,那么如果说记住,首先你看我们要排错,刚刚我们去把基本的对象都补上了,但是我发现他还是有这个问题。 是我的网的问题吗?呃,是我刚刚切换了代理,现在没有代理了。现在没有代理,你刷新一下看一下,应该不卡了。刷新一下, ok, 我 们来看。那么在这里的话,我们现在你看,我们记住如果这些环境我们都补上之后发现他还是有报错,我们可以往上推,你看他这是不缺的东西,我们可以把这种未定义的去尝试给他打,这是一个方法对不对?你看 word 里面的方法, word 里面的方法我们全部可以说不用给他。呃,名称 我们试一下看是不是他,你看还有还有我们继续往上推,继续往上推,你看把这种未定义的我们都可以补一下,为啥我看一直不卡,呃,他卡有时候是自己的问题,然后你看这里又有个方法对不对?我们可以把这些方法可以给他声明一下, 来,我们来看哦。现在我们可以看到它里面的这个 word 里面的这些基本属性,我们其实可以看到补的大差不差就是这个东西我们不要补。各位各位,这个为什么不用补呢?我们在本地明明是未定义啊,为什么不补?因为这个地方很明显他当前给我们呈现这个是谁?这个是我们入的参数, 这是我们的参数,就是他刚开始可能他的定义是违规定义的,但是会通过代码的执行,从而进行有值了,但如果我们一开始就给他定义的值,就会导致我们的代码会持续报错,并且你还找不到报错的问题在哪里。所以大家要注意啊,这是不是我们入的参数?是不是入的参数?是不是这个地方,你看是不是他入的参数。 好朋友们,那么现在你看我们里面基本的方法我们都已经补上了,那他为什么在这个地方他还会进行这种异常的报错呢?但各位有没有发现他当前的话是 换了一个方法哦,这里还有个命令没补是吧?不好意思,我没看到这里还有个瑞木的一个方法没有补,对不对?我们再看一下,我们把这些方法补完,看他还有没有报错。如果说他还有报错,那我们就要换一个代理,那我们就换一个代理,有可能是我们当前代理的问题,导致他的内容没有被深度进行监听,把上面都说成一行啊, 而且像这些方法我们要注意啊,他如果里面有什么调用,那就比较头痛啊。呃,大家请看,我们可以看到当前的话,他现在是不是又换了一个报错, 是不是换了一个报错,而且我们可以看到当前的报错它是缺少了一个 po。 根据我当前的推理,我是可以看到我们这个 document 里面是缺少了一些信息,是不是在 document 里面缺少了一些信息?我们往上推一下,让我们往上推一下, 没了吧?是这个 document, 你 看是这个 document 对 不对?是不是这个地方缺少了,缺少了一个信息,那么在这里我们同样的方式去把它补一下,那去把它补一下,你看把这个方法 ctrl c, 然后在浏览器里面去进行执行。是一个方法,那么像这个方法我把它分开写,不然我怕大家等一下看不了, 对吧?来我给大家讲一下啊,那么我们现在的话,我们在上面我去把这个方法给它补一下,我把它分开写啊。分开写,分开写的话,你们看得清一点,下面的是 dom, 但是像这种 dom, 我 刚是不是讲了, dom 我 们要录一个参数 type name, 然后向在下方进行打印,为什么要打印?因为我给大家讲一下,一般 dom 它里面会进行一些标签处理,因为 dom 里面是具备一定的元素的,而且会有很多的标签和 css 的 一些信息, 记住啊,所以你们要注意,明白吗?各位,点赞不要停好不好?给你们讲这么精彩的内容是吧?点个赞是吧?都小气巴巴的。 ok, 那 么在这里怎么办?我们可以在上面进具体的声明,我们的 document, 然后点里面的方法,对吧?用这种表达式来编辑啊,为什么要用这种表达式呢?用这种表达式的编辑方式是方便我们使用, 因为它会给我们输出比较美观,明白吗?会输出比较美观。 好,那么我们现在像在这里,我们再次去进行执行来执行,你看。呃,可以看一下啊,在这里我们可以看到它里面还有报错,对不对?呃,我们可以看一下。我们刚刚为什么要在这里打印?你看这里打印的结果,在这里看到没有? 大家看得清不能看到不?你看里面是不是它有检测了一些,你看是不是入了一些标签?这标签我们是不是都没补啊?朋友们,你看它是不是入了一些标签,对不对啊?这个朋友还在问我的 github, 那 我把我的 github 也发给你了。 github 我 现在登不了。那我可以给大家看一下,这是我的 github, 你 们想看项目的话可以去看一下,我这里已经挺多项目的, 你们想看 github, 我 给你们推荐一个项目。 github 也是。呃,不是私有的, 当时,当时我给了我的学员我的 gap, 给我的学员用,我的学员怎么创建了这么多东西?呃,是这个,你们可以去看这个,这个比较全,这个比较全。 ok, 你 们自己去看吧。好吧,这个你们可以找我的那个,你去找小助理发给你们。 ok, 朋友们,我的 gap 地址因为 dy 发不出去,你们可以点个关注,然后找小助理发给你们,好吧?呃,里面有很多我之前做金融的一些信息在里面。好,那么在这里各位请看我们现在我们的核心主要的呃,大家请观察啊,其实我们是有原型链调用的。 看没有,这是 windows 看没有,很恶心的一个点。看没有就是各位,你看我们在前面是没有看到它有个键调用,但是你看在这个地方它就是调用了我们的 toastron, 是 不是调用了我们当前的 toastron, 而且是为当前的它里面的核心的调用,它应该调的是我们的 windows 点 settimeout 的 这个方法是 windows 点 settimeout, 它这个 windows 点 settimeout 的 话,其实际上是掉了我们的 toastron 的 一个逻辑的。所以在这个地方我们首先我们可以这样做,我们把当前这两个给它置空,有两个定时器。这个地方给大家讲一下啊,就是我们需要把这两个定时器的逻辑给它处理掉, typeahead 也等于我们的 back 手,然后还有个定时器,还有个 set, 我 们的呃,是它来把它进行制空,我们把两个制空打这两个把制空,我们看一下把它制空之后是不是还会调用我们的 pos 句,如果还有调,那么就,那么你看它这里面是有掉了我们的 pos 句的,看到没有? 那其实实际上还是有原型念,对吧?我们的 word 是 有原型念的啊,当前到我是没有看到。那么如果说我们的 word 是 有原型念的话,那么在这个地方我们要上两个。首先,第一个,先上一个它的 opcode, 也就是它的 type 的 一个复制哦, opt 派 type 的 一个复制哦。其次我们在上面要去声明一个 facture 为 word 对 象,并且对当前的 word 对 象来进行复制,使用 opt 点 type operator 来对当前的 word 来进行添加 word 的 一个属性,这个地方可以放到我们当前的 word 的 检测上面, 对吧?然后在下面还要做一个操作,就是用 object 来对当前的 word 来进行 to 句的一个复制,记住它的 to 句的结构是为大写,这个地方我就快速讲了,好吧,我就不去,不去讲的那么慢了啊,我大概给你们看一下,后面的话我们还会遇到,我就不讲了啊,后面遇到的我就直接补啊,你看为什么要补大写呢?因为它在这里,它的一个 to 静态的上面它的赋值就是一个 word 的 一个大写, 是不是啊?你看是不是啊?所以我们在这里要这样去处理啊,这个是整体的一个 word, 当然了它上下没关系,你可以写到它下面,也可以写上面,都可以,明白吗?这个只是一个监听,这个是我们的啊, to see 的 一个复制,这个是圆形面的一个复制,写一下圆形面的复制,然后下面这个是我们的 s y m 点 to siri tag 的 一个负责,然后这下面这个是对象的监听,这个地方应该没什么问题吧,下面这个词同样的啊,好,那么我们在这里我们再次去执行一下,你看,嗯,当前我们可以看到现在的调用,是吧?它已经 ok 了,这个地方我们已经补上了,对不对它进行了调用?什么补上了,然后我们再来看,再来看,我们可以看到它里面是入了两个标签,大家有没发现就在咱们的多功能里面,也就是这个里面它是入了两个标签,分别为我们的一个,这个是一个画布,然后进行代理。嗯其实我们不代理也没事, 其实不代理不代理的话那会比较麻烦。呃朋友们你们看一下我是组合写还是分开写?分开写的话代码会多一点,组合写的话会看起来比较清晰一点,但是分开写的话可能会因为他有很多对象会比较难,我怕你们分不清对象,你看是分开写还是一起写?分开写就是单独声明合着写,我就直接写在这个方法里面。 各位怎么都不说话了?各位不是已经打瞌睡了吧,对吧?不会已经打瞌睡了吧?如果各位已经打瞌睡的话,那对吧?我讲下去也没什么欲望,是不是,对吧?各位都不怎么说话。嗯。 呃。哪种方便理解?呃。没有。呃。方便理解的话我建议。呃。那我们就拆开写吧。拆开写可能会比较看的理解程度会好一点,是吧?因为组合写的话代码会比较乱啊,会比较乱。好吧那如果是这样的话那我就把它分开写吧。那么分开写我就在上面重新写个监听。啊,我把它监听写到上面, 你看来监听我们这个对象,你要记住这个是谁,这个其实在网页当中其实属于标签,那么我们其实你们记住一个补环的口诀,就是所有标签都为对象, 标签都为对象,你看它是不是一个标签,是不是一个标签?我们那个 compass 一个标签,那么这个标签其实说实话它其实说白了它其实就是一个对象,以及我们向下面的这个 factor 也是一个标签,对不对?它这种其实都是对象, 是吧?二三幺和二三四差了哪些?呃,环境多了一点,二三四的环境检测点多了一点,多了一点,而且它里面有些东西变了,等一下我们后面会讲到,等一下,你看吧,等一下你这客户也去对比,好不好?先把二三四学完去对比。 好,我们来看,那么像在这里,我们现在可以尝试,你看有两个标签这里,所以我们在这里要注意它这是大写的,我们也可以补一个大写。你看我在上方声明,分别声明两个标签,对吧?分别声明两个标签,并且进行代理,然后像在下方做一个判断。 if, 当我们的它等于我们的 type name, 如果等于我们的 copy, 那么我们就来返回我们的 copy, 如果等于他,那我们就做一个额外处理。但是这个地方请大家注意,就是这个地方他会有两种形式,有个大写,有个小写,对吧?当然了,他现在给我们输出的是大写,你们千万要注意那种,它里面大小写那种。呃,有大写是大写,小写是小写的那种,那你可能在这里做判断的时候,你要去声明包含大写和小写, 对吧?很就不一样,你们注意一下啊。好,那么在这里你看当前对象都为空,因为我们没有给他返回内容信息,那我们等一下再去观察看里面到底做什么操作,我们再去补。嗯,上面还有没有未定义?上面好像没有未定义,是吧?没有的话我们来直接执行,你看它里面会给我们输出我们当前的对象 来,我们从下往上推,从下往上推,首先可以推到在 dota 里面,他现在给我们告诉我们又缺少了一个我们的 typeahead 的 一个方法, typeahead 的 一个方法,而且当前的话,我们看一下啊, dota 是 有没有进行我们的原形面检测啊? 这个都是 object, 都是文本。呃,很好, document 并没有触发,因为我就担心 document 触发,因为 document 如果触发圆形链检测,那么它的补法就要改变了,就不能这样补,也不能这样补,所以会有点恶心。 好,那么在这里我们现在同样的去把这个方法补上,这个方法的补法同样跟它一样的,我写在下面好不好? 来,我们在上面去给它进行声明,记住,这种方法我们都要给它声明我们的 idline。 哎,这里多写了一个 这个补,自动补全,说实话有点不太好用。来,你看,那么在这里我们就先打印,记住,只要是我们到我们里面的方法,最好都给他注一个参数,并且进行打印,因为它里面可能会进行一些标签的一些处理,明白吗?所以各位一定要注意这个细节问题,知道吧?文档的话你们可以没关系,但是到一定要核心去处理一下, 好,然后再次执行,再次执行。我们来观察,你看它在这里面是不是入了一个 hide, 是 吧? open 里面是不是入了一个 hide 啊?大写的 hide, 然后我们再往上推,看下有没有 final, 你 看这里是不是入了一个未定义,是入了一个未定义,这个是画布里面的啊,各位请看,这不我们的 cois, 然后 get 我 们的 context 哦, test 里面是缺少了一个未定义,上面还有吗? 当然没有啊,是吧?那我们从这里我们先把这个补一下,好不好?我们先把这个补一下啊,然后再去补下面的这个。呃, id 来,我们来看它,这里面录了一个,我看一下它是方法是什么?因为这个地方我们有时候记不住,对不对?记不住,你们去在浏览器里面去仔细看一下,它其实是一个方法,如果它是一个方法,那么我们来补一下它。 补环境千万要有耐心。密码这里面去补上一个参数,同样千万要记住,只要是属于对象,像这种标签级别的对象,我们都要给它录参数,你可以也录一个 tagline 了,对吧?其实你写 every 级是什么?这个参数的变量名称反正大家应该知道吧,它不是固定的,你可以随便写 来,我们在这里对它进行输出,我们要看一下它检测什么,然后其次再往下走,再往下走,它是我们的 tagline 的 话,是在我们的 tagline 里面,所以大家不要补错位置了。然后大家请注意它的返回的主体是什么? 宿主是吧?它的返回主体是一个宿主,所以我们在处理它的时候,不能像上面一样直接返回对象。如果你直接返回对象,那不好意思,你会有问题,来做一个 if 判断,判断当前,如果当 python 是 等于我们的 hider, 那 么我们先在下方 return, 就 返回一个 hider 括号 hider 宿主了啊。然后这个 hider 我 们先在上方去进行声明,为空对象,并且给它进行 hider 的 一个代理,这个没问题吧? 你这个地方可以改成小写,当然大写小写也差不多啊,反正都认识对不对?好,那我们来看是不是你看他返回的是一个数值,所以一定要注意他格式,然后我们去进行程序,下面会持续性的进行报错,因为我们现在补环境还差得远,我们起码还要补三百个行,代码起码要补三百个行。然后大家请看我们可以看到在 high 的 里面他是入了一个方法的, 当然了这个我知道是方法,如果你们不知道的我们直接可以在浏览器里面去进行输出,跟上一个点,你看多了个点,不好意思,你看。 呃那么在这里可以看到,呃他直接度的就是未定义对不对?那大家千万要注意一下小细节的问题,如果说他这种本身是未定义的话那么我们就要去观察一下有没有可能是因为我们当前断点的问题,因为我们断点是停在这个地方。当 i 三幺进深层之后看一下他的执行结果, 来我们看一下执行结果,多验几遍。明白,多验几遍我们发现它这个地方还是属于我们的。呃未定义对吧?那么我们如果在页面当中进行拖拽试一下啊,我们验证一遍试一下,看一下会不会隐值的生成,因为我怕等一下跟指纹有关啊,跟轨迹有关,所以这种我们要注意它这是 open 添加,添加了一个。呃应该是添加一个内容,添加一个事件什么的。 好,那么在这里我们看到它的返回结果也是为未定义,那么可以继续向上推 啊。呃我们观察一下未定义的内容,看还有没有 好。这个地方出现了一个大坑。呃,为什么出现了一个大坑?因为我发现咱们的 document 是 属于当前的 word 对 象之上的 word 点 document, 那 也就是我们的 document 可能也会有进行原型链检测,只是说当前它没有抛出这个问题而已。 我怕等一下我们补到后面,它等下抛出这个问题,我们要把前面做大概,那先这样先不管它吧,如果说有原型链的操作,我们到时候再去处理吧,然后这有个 id, 是 吧?这个 id 我 们肯定要处理, 然后这个 word 点 navigate, 这个 navigate 有 问题, navigate 我 们并没有正确复制,但是它已经给我们生成了一个 object, 所以 我们等一下注意一下。好,那么在这里我们现在看一下这首先它有个 id 的 问题,我们先把这个处理掉,对吧?先把这个处理掉,来发布 这个吧。入个 id, 呃,逗号,你看入个 id 的 话,它会在下方实际上会给我们返回一个相对的一个对象, 是不是会返回一个对象?所以我们在这里要去做一个判断,来到这个方法里面,这个里面,这个里面,你看这个地方我们要学会跳转啊,在这个里面做一个判断, if 去判断当前的 type name, 如果等于 id, 那 么我们像在下方,我们将会进行一个 return, 呃,我直接返回对象的,好不好?然后这个地方大家请注意,因为我们如果现在把这个内容给它复制粘贴过去,它的格式会有点奇丑无比, 是吧?奇丑无比,看到没有?所以我们大家要注意一下这个地方,我们其实可以是基于 ai 来做一个处理,就是把当前数据给它转变成一个 json, 你 看它是这样的,比较丑,对不对?而且还加标示符什么的,所以我们可以直接快速处理,把它右键全部进行复制,复制完成之后找一个 ai 大 模型,通过 ai 大 模型直接把它快速转换。 你看我们找个 ai 大 模型,你们平常喜欢用什么大模型啊?我们用 google 啊, 那么在这里它会直接转 jason, 但是 geocor 的 话,它的输出结果说实话有点丑。呃,豆包是吧?你看把它复制好,把它复制之后,那么这个地方我直接把地方也可以这样补,你也可以单独的去进行声明,也可以,但这个地方我就把它放在一起了,因为它下面没有其他检测了, 明白吗?它的下面已经没有其他检测了,所以我这个地方我就直接这样补了,明白吗?但如果说像我们有些朋友们,比如说有些不太习惯的,你可以这样写,也可以,那比如说你写个 id, 对吧?你可以这样写,然后这里的话,我们下面就是有些朋友们,可能就是因为你可能刚开始学徒环境,对不对?你可以这样去做一个代理给他,做一个代理给他,这样的话你就能更加精准的知道它里面有检测了一些什么样的一个点。那其实实际上我是不建议大家这样写的,对吧?因为我们其实没必要这样写啊,没必要这样写,然后我们可以向上推 这里,你看它这里有个未定义的,这未定义可以等一下再一刮。好,朋友们,那么现在你看我们随着我们当前的代码的检测,也就是说当前这个检测它有点有点呃,脑瓜子嗡嗡的,为什么脑瓜子嗡嗡的呢?它这个地方 很多地方输出的比较杂乱,它没有进行深度检测,这其实还是我们的检测的监听的问题,因为我们当前的监听啊,你看这个地方它其实已经没有未定义了,这个地方我们刚测试过,它本身是未定义, 然后这里是我们的 id, 然后这里是我们的快捷标签,我们基本都处理完成,然后是我们的 document, 然后是我们的 id 的 话,我们不用代理,我们直接就这样啊,不做代理,因为它里面没有什么检测了,然后再是上面的 没了。那么朋友们有没有发现一个很奇怪的问题,我们当前明明已经补的大差不差了,但是还是报一个反手, 对吧?那么在这里我们怎么办呢?首先我给大家讲一下,其实像这个地方啊,第一个我们可以去浏览器里面去找一下它是什么,对不对?我们可以去浏览器里面看一下,有两个,我看一下我们的报错是在哪里? 两二四六七九,二四六七九,搜索哦,在这个文件里面去搜索一下,可以这样去找 二四六七九,那就是这个, 因为上面那个,上面那个只有八千多,应该不是的,那就是后面这个,那如果是后面这个的话,我们可以在后面这个点打一个断点,看这个地方他做了什么事情,我们去进行滑动,滑动页面会进行整体的刷新,看啊,点击刷新,哎, 重新刷新一下,我们刷新的时候,我们发现它根本就没有检测,都请看这个地方有问题。我们出现了一个很尴尬的情况,就是我们当前它根本就没有检测,它不会断点, 是不是有没有发现,我们不管进行页面刷新还是进行任何的相关操作,在这个地方它都不会进行断点,是吧?那么我们现在去浏览器里面,我们去 bug 一下,这个地方打了断点,我们去 bug 一下,我看一下这个地方它到底是因为什么原因而导致的问题的产生, 它直接就抛出一个 x f, 哦,像这个有点麻烦,是吧?像这种的话,那没办法,没办法了,那我们只能换代理,换一个深度代理啊。我感觉这个地方应该是圆形键的问题, 因为它这个地方很奇特的是光盘是附着在 windows 上的,但是 windows 有 我们的。呃, windows 是 有检测,但是我们的光盘是它也有可能是个 logo 的 检测的问题导致的,反正它有很多的问题都可能会产生这个问题。 ok, 如果实在是这样没得办法,那我们换一个代理,那我们换一个代理,我们换一个稍微高级一点的 来进行它的检测。那么在这个地方如果我们换这个高级代理的话,我们要把前面这个地方也先把它注死掉,我们尝试一下,当我更换一个更加高级的代理的时候,我们来观察一下,你看,其实很明显的是因为我们当前的原型键的问题缺失,你看这是 win 的, 然后这个是 win 的 点的 get, 你 看 win 的 点的 get, 它其实是为为定义的, 它这个是有圆形链检测的。呃,然后在这里我们可以尝试去把这个 navigator 给它补一下这个 navigator, navigator 是 有进行圆形链检测,是吧?有点恶心。说实话,你看它其实这个地方啊,它有做了很多的一些异常的捕捉处理,就像那个 boss 直地一样,然后就会导致我们很多地方看不出来它到底检测什么东西, 对吧?然后这个 navigator 是 有进行圆形链检测的啊,如果说它有进行圆形链检测,那我要修改一下它的补充补法,也就是这个 navigator 在 这里, navigate 这个对象是在这里。呃,那么我们要来修改一下它的过程,我们寄予一个 factor, 然后来补一下我们的 navigate 的 一个对象,你看,所以很恶心的,这个东西 用阿里的,说实话它很恶心啊。然后我们像在这里进行一个实变化,没有 navigate 符号,然后去 navigate 里面去声明相对的属性。你为了方便大家理解,我在这个地方去通过拆分法来进行 navigate 点, ctrl 点, 那用这种方法去补它,然后下面这个是 applem, 然后是 这个,哎,它会自动跟,但它自动补可能有点不对,明白吗?它这个浏览器的型号可能不对, 我们先用这种方式,因为这个用这种方式是属于其,这个可能看会比较仔细一点,其实还有种方法就直接补 this, 直接补进去就没必要那么麻烦,呃,其实也是可以的,明白吗?方式方法有很多种,反正我教你们的是,因为我是要讲课,所以我教你们的是这个让大家看起来会比较清晰的一个方法,明白吗?教大家一个比较清晰的一个方法, 这里是教大家一个比较清晰的一个方法。 然后等一下,如果说它还有检测,它会给我们进行输出,我们看一下。呃,经观察, ok, 我 们来看一下它里面还有没有什么其他检测。哦,这里还少了,少一个没补。 y, 这个是自动化检测,你看 x r 还是这里这个自动化检测 y 是 在, 然后我们来继续推。呃,来看一下还有什么我们这地方有问题,它这个异常还是会有抛出 这个问题的,抛出它有可能是我们的 xmail 对 象的问题,对吧?它有可能是 xmail 对 象或 node 对 象的问题。呃,我检测一下当前,首先我们试一下当前 global 是 不是有检测。我首先代理一个 global, 你 看这种地方我们都要去检测的,不检测,其实我们不知道,我们检测一下 global, 这个 globo 是 有进行自身的 object 点 case 的 检测。 没有啊,没有看到有 object 点 case 的 检测,这只是圆形念吧,它好像没有检测于没有检测 globo, 可以 使用 globo, 这都是圆形键。对象获取,这是获取自身所获取自身所有键,这个也是没关系的。我看一下它如果说获取 object 点 case, 应该是我们的操作符的操作,是捕获我们的操作符,是捕获我们的 object 点 case 的 操作符, 那它就是有剪。呃,它有剪成,那我们这个地方不能选, 我们使用 global case, 然后像在下方去进行 global 的 一个删除。 window 点 navigator。 稍等一下,我这个地方看一下什么问题。我们的 navigator 没有问题 啊,这边应该这个地方我们去做叉装就可以了,我们等一下再讲这个地方叉装,我等一下教你们去叉,因为这点我发现它里面的圆形键值好像有点深。 windows 的 navigator 对 象里面的指令域 这个地方有点奇怪,明明它已经补上了,但是它为什么然后自身的键也有个定音键?我换一个代理试一下,看一下这个地方是什么鬼东西,鬼东西搞什么用?看它的检测点,跟之前的完全不一样的,跟二三幺的。 它这个地方其实你们等下,我等下教你们用一下。这个地方其实应该是一个参数对象,或者说是一个 node, 我 主体是看一下这个,它为什么这个地方这个就是可以?刚刚是我们的拦截问题,我们刚刚应该是拦截的,它被我们的这个代理监听进行了拦截,从而导致所触发的。 好,现在没啥问题啊。 ok, 现在没啥问题之后,那么在这个地方我们首先我们先去找一下,对吧?刚我已经找过了什么?呃,我们可以打两个断点去分别看一下啊,看一下他,因为这种地方的话,我们可以打他的前后,也没关系啊,可以打他的前后。我看这个地方是因为什么原因?他是真的是不执行, 看一下这个地方他到底是什么原因,真的不执行,他是执行的, 这个地方会进行处理, x f 处理一个 y 这个地方, x f 是 没有复制 它这个地方有点奇怪, x f 是 没有取它这个报错的地方,就是我们刚刚那个地方 open, 也就是这个地方,就它是我们的 hide, 我试一下看是不是这个问题啊?来,我们尝试一下,把这个地方改成括号零,然后点我们的 open, 是 吧?我就说了,尴尬,各位,呃,你看,呃,是吧,小细节的问题,是吧?我就说嘛,它这个地方很奇怪对吧?它明明就是有内容的,为什么我们在本地,它就是我们刚在公台说说是违背定义的,原来我们是少了一个级别。 ok, 大 概清楚逻辑,清楚逻辑之后,那么我们现在的这个地方啊,我们就可以去补了,它是一个方法,也就是它,那么在 id 里,你看这种小细节大家千万要注意,你看,有时候我老挂着糊涂了,我也会搞, 你看,因为我讲的比较久了,脑瓜子也有点混沌了。说明一个窍门,记住像这种我们要给参数,然后下方点击打印, 我们看一下添加了什么,你看这样是不是正常可以执行呢?下面的话缺少是其他内容了,你看缺少其他属性,其他属性等一下再管,那么现在你看就没有问题了。呃,它这里是添加了一些信息,看到没有,难怪我就说奇奇怪怪的。 ok, 呃,没有什么大问题,那么这个地方我们现在把它换回来,同样的再次使用我们这个简单的代理啊,就是不要使用这种高级代理,这种高级代理的话,你们现在玩不转,你们先暂时先不要用它,是吧?然后把上面这个解出来,刚刚只是测试,我看一下这个地方它有没有我们的 type 的 一个检测, 这是样式,然后这个是一些方法,我们把这些方法给它朋友们,你看,其实很多问题的啊,你要知道现在阿里的这玩意,说实话一个搞下来一百块钱,是吧? 真的脑瓜子搞得你嗡嗡的,看到没有?脑瓜子搞得你嗡嗡的。大家把它右键复制 object, ok, 然后再往上走,往上推,像这种我们不用管它,因为这个是属于,因为一看这个代码名称,它应该是属于网页生成的,然后再是 no cash, no cash, 哦,不是 no cash, 不好意思,这里会有个 get idime, 它没有圆形键吧?我看一下。呃,是没有进行我们的 to 键的一个调用的啊,好,没有,没有的话,那么我们在这里直接去补就可以了。补,在它里面 get time, 然后这个地方我们可以自动补全 i time。 好, 然后这里的话是 document 里面入了一个样式,对吧?我们看一下这个样式,然后在这个样式里面,它里面会有一个方法,看没有,我们去试一下,我们把这个样式给它补上。 s t y l e s t y l e 的 话是补在我们的标签的创建的这个里面,是在这里面做一个判断,一步去判断它,如果当它等于它的时候,我们做一个反每寸去返回,那这个地方大家要注意,我们要去网页当中,网页当中看一下啊,返回的是是对象,是对象就没问题,如果不是对象就得修改, 然后它里面的检测,我们看一下这个是 hide 里面的错误,你看它在这里面的样式会有一个 test content 值,为什么?内容类型,呃,没有问题啊,是吧?好,然后再往下推,再往下推的话,当前是直接是 document 里面的 hide 的 一个错误, hide 里面缺少了一个 open 的 一个方法, don't 点 hide, 这个 don't 点 hide 跟刚刚的那个 don't 有 点不一样啊,大家注意一下,我们试一下,我们在这个地方,我们重置一下,我们的 don't 点 hide, 我 们写个小写的,写个小写 hide, 我 们写个小写。然后这个 hide 因为为了方便大家,其实我们可以连着就是写在那个大写的 hide 里面也没关系,但是等下你们搞不清楚,我们就分开。好,我们来看,然后当前在这个 hide 里面它会有个方法,看没有会有个方法,这个地方我们去测试一下, 那它有个方法,你没有发现它其实跟上面的那个是一样的,各位,它跟上面那个其实是一样的,就说这个是小写的,一个大写的,它们两个其实是以同一个,它们两个其实是同一个。给大家讲讲。好,然后这里会报一个错误,这是难解的问题。 save save, save。 给大家讲一下,这个 save 其实是 word 本身, word 点 c f 等于 word 本身啊,慢慢补,你看,补着补着,说实话代码一下起来了, word 点 c f 啊,今天一个时间问题可能讲不完啊,讲不完,后面的话你们自己去处理一下,它里面很多题大大差不差的啊,很多逻辑题都是相同的。 好,然后我们再继续观察,你看,然后这是 document 里面的微定义,看没有,你会跟就,然后上面有个 word 点 html。 还有这里也有个错误, 大家注意啊,就是我们一般补的话,我们先补下面的,上面的先不要急着动,因为我们有可能补了下面的,上面的会进行生成,然后这是 demo 里面的,它同样是一个对象,那么我们补在 demo 里面对象,记住它是一个对象。那么我们先在上方去进行声明 啊,各位,非常抱歉啊,今天可能讲不完了时间,因为我没发现它这玩意怎么讲这么久,它里面有太多的细节,这些点 各位,其实如果你们感兴趣啊,你们可以自己等一下,这样吧各位,我今天等下把直播拿给你们,你们后面好好自己课后去学习一下。其实二三四它里面比二三幺就是多了一些标签的一些检测,它的返回的主体不一样,其他的其实都是大差不差的,对吗?其他都是大差不差的。然后我们再来看一下,这里又是缺少了一个方法,都是 document 里面的, document 里面为 force, 这个方法其实之前在那个呃,里面是没有的,没有轨迹就能生成嘛?呃,它这个轨迹是可以固定的,我给大家讲一下,它的轨迹是可以固定的,然后这个是在我们的 copy 里面,它还有一个检测,是吧?这你看一下是不是? 然后是屁股后面的它这个轨迹,轨迹是可以固定的,就是你轨迹固定的,它也是可以生存的,这时候如果你想把它变化的话,那可能就要呃额外的去处理一下了。好,然后去找到它这个里面画布画布画布画布里面这个里面 这种,我们都给它返回这个 好,然后上面这个 word 这个看一下是什么?这款是一个方法,给大家讲一个方法,那这种方法我们都要补一下 它里面的检测点,还别说,还挺多,后面还有很多嘞,我们还有很多紫玉像,还有那些小的东西没补嘞,像它里面那些大框高什么的我们都没补,所以各位还是要注意一下。 上面先不管吧,上面的太多了,上面我们先不管,上面好多未定义的, 你看这上面好多未定义,这未定义我们慢慢搞吧。来我们看一下后面我们先补后面的,这里还有报错,那这个报错其实就是他隔壁的一些附近的一些呃,职位空从而引起的。我看一下啊,这些都补的大差不差的, 这个房间看起来眼睛有点花,我们还是换这个 d i 的 版本吧,好不好? d i 的 版本的话它会有个优势,就是把那个呃已经处理的会把它隐藏掉,我们把上面复制掉,它就是会把它已经已经已经深层有值的地方,它会把它隐藏掉,它只会把吐出那种未定义的,它只会吐出这种未定义的, 你像那种有值的它会把它隐藏掉,这样也方便我们去调试,不然说实话太太多了。这个地方的话我就不去细讲了,讲得有点久,这个朋友们,如果你们感兴趣啊,各位,你们感兴趣啊,其实像现在其实它里面有很多的检测点,这些都需要补的,看到没有? 这里面很多东西都要补的,就你整体代码补完的话差不多,呃,按照我这种补法,你起码要把五百个,你差不多要补五百个,后面的话你说实话就是缺什么补,缺什么补,缺什么补。
粉丝7521获赞1.7万

哈喽,大家好,我是蔡,然后今天拍这些视频是想跟大家讲一下这个 tiktok, 它电脑网页版遇到那种滑块问题该怎么解决啊?这里看我操作先,呃,这里打开这个 e k, 随便找一个这个链接, 然后点击进入他的那个源网站 tiktok 链接,这会让我们拿这个滑块移动,然后我们这里尝试这个滑块,正常来讲是呃是不会成功的啊,除非你试,你试个十几次,也许会能成功一次啊,他为什么能成功我不知道,但是很浪费时间。 然后这里我教大家一个啊保证能通过的办法。首先我们就是打开那个开发者板块,这个 ctrl 加 shift 加 i 三个一起按,然后进入到这个开发怎么办?点击这个东西, 然后在左边把这个改成这个苹果手机的 iphone 十二 pro, 改成这个手机的页面大小,然后点这里右键刷新一下, 刷新一下之后呢,然后再再去挪啊,就 ok 了啊,直接往右边挪一点,再挪回来,这样子,呃,保证能成功,基本上我是没失失败过, ok, 就 这样子。然后这里还可以相当于这个手机模拟器一样的,你往上滑,就相当于我们人的手指这些滑一样的,正常点,正常去看这个,在这个电脑上看这个 tik tok 的 前端, 在这里划,那不止手可以划,其实鼠标也可以划,你按那个鼠标那个滚轮也可以滑动, 然后这里点其他的链接进去啊,也是要划,有时候也是要那个划片的,要划片的,然后我们这里也是拉一下就好了,就不用像之前的原网站一样,就是划划快,一直失败那个问题 就这样子, 这个给他改成一个苹果手机的那个页面,然后这里也可以看,不用。


新手学爬虫如何破解滑块验证码?网站为了防爬虫,在关键操作节点加上滑块验证,用户手动拖动很简单,但自动化程序就没法直接操作了。其实破解方法不难,核心就一点, 滑动验证本质是个参数验证过程,最终返回的 validate 参数就是通行证后端指定这个参数,不管你是不是手动拖的,所以具体方法拆成三步就行,咱们一步步讲明白,大家跟着做就能落地。 第一步,先通过抓包工具找到滑块背景图和滑块图的真实链接,把这两张图下载到本地。这里要注意,很多网站为了反爬,会把背景图切成乱序的小碎片再返回,这种情况就需要先对图片做还原拼接,不然没法识别缺口位置。 第二步,借助本地的图像识别算法库,比如 open cv 或者第三方识别平台,一方面精准算出滑块需要滑动的实际距离,另一方面还要模拟出符合人类操作习惯的鼠标移动轨迹, 不能是匀速直线,得有加速、减速、轻微抖动的过程,这样才不会被网站识别成机器。第三步就是关键的加密环节了, 咱们用算出来的滑动距离、移动轨迹数据,再结合网站 g s 里的加密逻辑,反向算出对应的加密值,然后调用网站的滑动验证接口,把这些数据传过去,就能拿到那个有效的参数了。这个参数一般就是一串随机的加密字母串,长度和格式根据不同网站的算法会有差异。 咱们把这串支付串填到目标数据接口对应的参数位置里,再发起请求,后端验证通过后就能顺利拿到自己想要的数据了。可能有朋友会问,这三步里有没有需要重点注意的难点?其实核心就两个,轨迹模拟和加密值计算。 轨迹模拟一定要贴近人类操作习惯,比如刚开始慢,中间快,接近目标时减速,偶尔加一点点微小抖动,避免被识别成机器。加密逻辑则要精准对应网站 g s 里的算法,不管是 md、 五 a s 还是自定义加密, 都要逐行调试复现,确保深层的加密值和真实请求一致。这两步做好了,滑动验证基本上就能攻克。

大家知道这种滑块验证的功能是怎么实现的吗?我滑的时候,对吧?成功了,是吧?那么咱们今天就解密一下这种滑块功能到底怎么样实现的,看我实现了一个效果啊,对吧?成功解锁,咱们看盗墓结构啊。外边这个 box 是整个的这个图片的背景,第一个妹子,这个 div 就是我要移动这个滑块,对吧?下面这个盖铺就是这个缺口的位置,这个地方有一点需要注意的是这个属性,因为这个基本上很少用到。还有外边这个盒子,我设置他的 parace 他这个字,对吧?里面的这两个我设置的是 fclot, 他都是相对于外边这个打盒子,那么咱们看 gs 代码, 那么我首先要获取到所有的盗墓元素,这个是获取外边这个盒子的宽度,这个是获取这个图片的宽度啊,这个都是固定死的。然后这个方法是随机生成 窗口的位置,这个圈口距左侧的距离设置,这个要滑动这个图片的位置,他正好他俩是相反的嘛,对吧?所以就把它设成负的啊,这个时候我会到这个负的。之后呢,我要给这个滑块设置硬扑的事件,我要给你滑动调的滑动来设置他去左侧的一个偏移嘛,这个时候我取出来他的偏移之后, 这个偏移减去他原来概括的偏移,对吧?他俩的值如果是小于五,那么我就认为你已经划到这个缺口的位置了,那么我就认为已经吻合了,就看出成功实现起来也非常的简单,可以看一下,哎,成功了。

这淘宝我真的感觉要倒闭了,你要是不想让我们干,你早说啊。你看你出的这是什么滑块?让我们实线连八边形、六边形,虚线连七边形、四边形,要是数学不好的话这怎么连? 要是眼神不好的话,你告诉我这怎么连?我们仅仅只是想浏览个商品而已,你再弄个这,这不是纯纯搞我们的心态, 关键是客服连了一下午也根本过不去啊。你要是不想让我们干,就直接早说就可以了,我们直接可以不干。

从零到一,实现腾讯滑块,并且验证通过,牛逼。今天我们来看的是 ai 智能体的搭建,以及会用 ai 来去实现项目落地。呃,这些光看这里的这个提示词,大家应该也能知道啊,我们所去落地的案例是什么呢?就是一个腾讯滑块的案例, 那么在正式讲之前呢,我们要给大家说一下啊,就是 skill 以及 mcp, 大家可能在平时用 ai 的 时候经常都会听到这两个关键词,那么什么是 skill 呢? 那么 scale 它其实就是按照一套预定义的领域特定指令和工作流啊,去封装了特定的逆向安全任务的一些完整流程,比如说我们的 s t 节混淆补环境锐速逆向等等等等。那么这个地方你们不同的人去问它的这个 scale, 它可能呃所给的答复不一样啊,因为我这边呢是经常用这个 dbic v 四 pro 它去做一些呃这一些工作,所以它在这里就 整个的一个决策定义呢,是一个全站逆向工程师,所以他这里都是说的这个什么 a s t 减混小补环境锐视逆向等等这样的一些逆向相关的知识。 通过 skill 工具加载之后呢,他会注入详细的步骤脚本和参考材料到对话当中,指导你按照最佳的实践完成该任务。那也就是说他就比如说是一个说明书, 那你在后续去做一些逆向需求的时候,他就会按照对应的说明书啊,他会自己去找 ai, 会自己去找你那个需求和哪个 skill 是 就是符合的,他就会去读哪个 skill, 然后再去做后续的一些处理啊,按照整个这个流程去实现,就会更加的快速,更加的省 talking。 那 么什么是 m c p 呢? m c p 呢?它是一种标准化的协议啊,让 ai 模型呢,能够去通过定义好的接口与外部工具交互,比如说我们的模拟器啊,这个浏览器, devotars, 文件系统,网络请求等等。比如说我们这个地方有呃,看 devotars m c p 和这个 g s reverse m c p, 它就是通过 m c p 来去实现操作浏览器的啊,可以通过直接操作浏览器进行调试,断点,抓包等技巧的操作。 那么这个是 skill 以及 m c p。 那 我这里可以给大家看一下我整个的这个腾讯 skill 啊,这个地方呢,我是这样的一个提示词,先给了它一个源代码文件,这个源代码文件呢,我们待会儿可以给大家看 呃,去基于腾讯划块儿 skill 来去实现请求参数生成,识别验证,通过全流程需要去好好读这个 skill, 不要走偏了,他就会去找到我的这个 skill 啊,腾讯 c d c e n v 啊,这样的一个 skill 来去做, 那这里可以给他看一下啊,这个就是我那个腾讯的那个 skill, 呃,在这里呢,它就是用于腾讯黄块等等等等之类的啊。然后这里主要是去执行腾讯黄块里面的这个 t d c 点 get data to 的 定向补环境与导出流程, 并不是所有的环境都这么做,而是针对以下特征,有这些东西,然后去做这个 y y 解码得到的密文值,而不是整包调试信息。 先去做这个判断啊,用户里面路径里面呢,已经有这个 select 和这个 emv, 这个 select 是 需要的啊,这个 emv 呢,可以不要, 然后已经知道了这个这个逻辑性,逻辑性呢,我已经是给它呃封装到了这个 scale 当中了,要的是本地可调用的接口和脚本,而不是只在浏览器里面跑通,就说不要去拿浏览器的来糊弄。呃,一定要在本地去生成对应的代码,能够本地跑通的提到的这些东西啊。 呃,就可以去实现这个腾讯黄块的 excel, 然后要求整个的一个请求生成这个参数识别,生成该参数再去做验证的面目。 所以下面这里呢,就是它整个的一个工作目标啊,交付优先级,先去交付这样的一个补环境的一个文件,去给它跑通,再去给它开本地端口,再去开这个 python 文件。 好,这里我们来看一下下面的这些啊,就是核心方法去用 vm 二圆形链去补环境, 这个补环境呢都不需要你们给模板啊,就只是用这个 scale 来去做整个的流程就可以了。然后后续这里的话,这个就是那个补环境的,也是给它封装到里面去了的,然后高频补环境是优先去同步这样的一些东西啊,然后如果说出错了之后再去补这其他的一些。 呃,整个到下面啊,这里呢也是一些环境啊,最小可用的集成 是这样的一些东西。然后下面再就是去先去实现这个验证脚本,去得到这样的一个 c, o, l, e, c, t 的 参数,再去做后续的一些啊,比如说取这些 s, e, s, s 啊,这些其他的一些参数去取, 最终呢去教给他来做识别,然后这里呢,我给他说了啊,这个 u a 参数是不需要的,所以可以不传等等,然后后续他就可以去按照这样的一个流程去实现。呃,在这个地方呢,最开始去做这样的一套 scale 的 时候呢,他会去打开浏览器啊,就是会基于我们的这个 m c p 去打开这个浏览器来去进入到那个腾讯黄花当中去获取这些参数。那么后续通过调试呢,已经可以不去基于浏览器,不让他去打开浏览器,完全就能够去通过这个 scale 来去走通整个的一个腾讯黄花的一个逻辑。那么这里我们可以来看一下他整个这一套。 呃,先去补了这样的一个环境啊,补了这样的一些环境,补上对应的环境之后,然后再去做后续的一些啊,这个润炭 gs 啊,把这个 co 值给它拿出来, 然后这个呢是那个 summer, 就是 那个开启本地端口的,再到下面的话就是直接写这个 python 代码了啊,这个,这个就是 python 整个的一套链路代码请求等等之类的,都是他靠帮我们去实现的, 所以在我们要去提供的是什么呢?我们要去提供的就是它的一个源代码,你看这里很多步骤, 呃,获取到 s, a, s, s, s 等等这些东西啊,然后去读取这个 eks, 然后再去获取到这个 c o, l, e, c, t 啊,这样的一个参数值,下载背景图拼接滑块,得到它的一个识别结果,再去通过这个 pow 计算 得到对应的那些参数啊,最后呢通过验证啊,通过验证。好,那么这里呢,是整个的一个详细技能点啊, 先去判断是否有这个出发本可能,然后再去用 vm, 二来去补对应的环境啊之类的,不去改动原有的这个 js 文件,先跑什么后跑什么,再去补什么什么东西的一些环境啊,再去输出对应的一些结果啊,来去做对应的一些验证 啊,这是一整套的一个流程,所以我们这里可以给大家看一下啊,他整个跑下来呢,就是我们整个给他的一个代码,就只有这个 slate 点 g s 这个原代码文件。这个文件呢,其实就是你们跟站跟到对应的生成位置的时候,他的那个 t d c 点 g s 文件啊,一共也就三百来行代码, 我们就只需要给他这样的一个文件,其他的文件都不需要去给,都是他自己去生成的,所以最终就只需要去右键运行整个的一个。呃,首先先去运行这样的一个 server, 就是 开启本地服务,再来去运行我们的 python 脚本啊,就能够去得到正确验证通过的一个 响应。它这里呢是有这个 t i c t e t 的, 对不对? t i c k e t 这个值的,然后这个 run s t r 也是有的,如果说它是未通过的它的一个,这两个值啊,都是空字母串,大家可以在网页当中去看一下啊, 所以这个就是只是基于我们的这个 scale 来去实现整个腾讯滑块的全流程,整个就只耗费了多久了?我们可以看到啊,在这个地方一共也就耗费了四分四十一秒就实现整个腾讯滑块了。所以以后 大家觉得我们还需要去抠对应的一些代码,去看它的一些为什么现在有 ai 之后其实都是基于啊 skill 啊,如果说你自己不去写,那肯定也会有对应那些,比如说 excel 上面的,或者说我们这边开源出来的一些 skill 以后啊都是通过指令式来去做列项了, 对不对?你做还去做什么古法编程,还去手抠,那其实效率就会比较低了啊。 好,那么这个就是我们整个的一个腾讯伙伴的一个 skill, 以及对应的一些 m c p 啊这样的一些服务。如果说大家想要获取对应的一些 skill 呢?可以来找我领取,好吧?

逆向时遇到行为检测怎么解决?你是不是还在输入真人轨迹来重放结果呢?要么重放两次就封 ip, 要么接口报行为异常,别瞎试了,今天就带你完整实战,从抓包到过检测的话,就来研究一下,来打开这一个工具啊,我们进行这个抓包来拖动一下, 那么你会发现啊,啥也没有。我们切换到全部的面板当中,有一个 wifi 检测的这一个数据包,好,来看一下它的这个载荷的数据信息,你会看到里面有一些这个查询参数,而且你像这个 i u 字,还有这个 number, pad 这些基本上都是加密的数据,需要我们去理想分析的,还有这个 talk, 那 其中最难的是谁?是这个 w 字,那我们今天的话一起来研究一下这个 w 字它的理想分析的过程。 那像这种搜索,没有同学还傻傻的去用这个关键词搜索了吧?这的话就有点太夸张了啊,四万多的匹配号找找不到的,所以我们换一种方式,比如说这里的话,我可以去跟站去分析 好,点击到这个面板里面,然后我们打上一个断点,现在的话呢,我们先刷现一下页面, 好,然后点击这个开始认证啊, ok, 我 们看一下,先把这个 wifi 的 数据包,把它筛选出来在这里,然后我们拖动一下, ok, 点击进来 打上断点,然后我们再拖动一下,好,它现在直接断在这里了,那么我们需要去研究一下它的这个中域,还有它的。嗯,这一个调对这样的面板,那一般我们是会往后面去看几个,你先看一下这里面有没有这一个 w 值,好像是 比较难找,那么我们可以再往后面去看一看。 ok, 你 看这里面有没有这个 w 值, 有赔了的。好像没有看到这个 w 值,但其实你仔细去找的话,因为这里的话,它已经给出了一个链接了,这里可以在这个控制台上面啊,你打印输出一下这个 w, 其实是有的,在这里。好,那么我们再往上去跟站来看。 好,这里我们研究一下它的这些参数。 ok, 这里我们研究一下它的这些参数。 ok, 这里我们再往上去更一更, 这啥也没有。好,那么我们再往上去跟一跟看一下啊,就是一个这样的一个参数,再往上去跟, 这就是一个跟站的过程嘛。然后,嗯,其实没什么技巧方法的,就是一步一步的往上去跟,会发现这里是这个 w 值的,那么我们再往上面去走几步。 还是这个方法,再往上面去走 看一下。这,这也有这个三个参数啊,然后有个 w 值。好,那么我们再往上去走走,看一下这个位置。 ok, 再往上去走。哎,那么跟到这里的话呢,其实我们就已经发现啊,这里是有一个 w 的 复制生成的语句, 像这个比较关键性的位置啊,我们需要给他打上断点,进来观察一下的。好,先示范,先示范一下这个断点,然后呢我们再来去刷新一下这个页面啊, ok, 这个断点就可以取消掉了。好,我们现在的话呢,就拖动一下,让他验证成功。好,现在是断在了这个位置,那么我们需要去观察这个 w 右边的这个参数,这个变量 的值它是怎么生成的。好,我们可以看到它是在这里进行了说明,那么我们具体的话呢,就要看一下这个代码他做了什么事情。 好,然后呢我们去找到这个代码片段,那么新建一个这个代码片段。 好,就这个吧, 来在这个地方的话呢,我们把刚才复制的这个代码,把它粘贴过来,那像这个代码的话呢,其实它就是一个方法,所以这个零可以删掉啊,主要的话还是这一个方法,它处理这个小括号里面的这些参数, 先看一下第一个参数是什么?其实我们可以把这个名字改一下,比方说它是我们的需要的对它的数据。好,那现在我们可以先去看一下这个是什么? 这个的话是乱七八糟的,这个这个是一个这个字母串啊,是一个字母串。那我们再看一下这个是什么?这个的话它里面有很多东西啊, 一个对象里面有很多的这个东西,包括还有这些属性一些方法。好,那么我们先来去看一下啊,这个的话怎么去处理?先一个一个的来拆分看,这是一个宣发。 那我们想一想什么变量里面是有这个循环,然后你看这个是一个对象,对吧?但是经过这个方法处理之后变成了什么?变成了自创,我们可以在这个下面来模拟一下。 好,现在是什么呢?现在啊就是这个它是一个对象。 ok, 好, 经过这个方法啊处理之后它变成了什么?它变成了一个自创。 好,然后啊我们现在来看一下啊,它这个的话是一个循环,那我们直接用 json 点上循环,我们看一下 得到的数据跟我们使用这个方法得到的数据是不是一模一样的?好,把这个放在上面来,然后我们跟下面的这个方法生成的这个数据比较一下,一模一样。所以啊,我们不需要扣,不需要再去看这个方法的 生成生成逻辑了,不需要去看它了,我们直接把它用它替代掉, 好转过来。那我们现在呢,我们再看一下这个,这个怎么处理呢?这就是两个参数嘛,一个是这个参数,我们把它变成是 x 一, 然后这个都是 x 二。 好,我们先复制复制这个对象的值,不然等一下找不到他了,来先复制一下。嗯,在这前面来声明一下。 好, x 一 等于什么呢?嗯,等于这个对象的值,那么我们再看一下这个 w 的 值应该是还没有生成的,因为我在我们,嗯,这个在我们经过这一大串的一个数据处理之后呢,才会有这个 w 值。哦, 好,然后我们再看一下啊,这一个,这个这里面有一些重要的信息啊,比如说呢,这个 ocean 可以 看一下, 有这一个背景啊,还有一些这个教学的数据。那么像这个比较重要的属性呢,我们需要复制一下,然后在这个前面我们声明一下。 好,这样是一个属性的话呢,我们是把它写在这个对象里面,叫做这个名字,对应的是这个字。 好,然后把它变成是 x 二。现在最重要的部分来了,也就是这个方法我们小块里面已经处理完了,那这个方法它究竟是什么家的逻辑?来,我们在这个地方来观察一下,它挑到了这个位置,那你看一下啊,这个方法 它是可以直接导出来的,对吧?但是呢你不想把它导出在这个里面,因为这个东西你也不知道是个啥。嗯,所以用你自己的这个变量呢,把这一个数据把它导出来,比如说我用一个全局变量叫做 a a a, 好, 然后我们把这个方法哦导出来。 ok, 这么写好之后啊,我们把这一整个代码呢,把它复制到我们的这个代码块里面, 注意一下啊,我在这里新建的这个代码片段,那么他现在的这个环境还是我基于我这个浏览器的环境去实现的,所以我们现在是不需要补环境就能够吐出真实的值的。 但是你如果把这个代码放到你这个 node 环境里面去执行的话呢,你肯定是要补补一下这个环境的。 好,那么我们把这个方法啊,把它贴换成我们刚才倒出的这个方法。东西写好之后,我们再来放首 logo 一下单输出一下这个 date 值,我们看一下能不能取到它。 ok, 现在我们可以把这个数据清空一下,然后执行这个代码,结果发现出现了这个问题,是我有个东西没有定义,这其实是我们没有释放断点的问题吗?来再来执行一下,现在是不是就正常了? 好,然后这就是我们今天详细的一项分析的这个 w 数据非常的简单, 但是这里大家补环境的时候要注意一个点,因为我们这个是行为验证啊,不是这个无感验证,无感验证的话你不需要去补什么这个轨迹,但是这里的话是行为验证,所以你需要把这一个拖动的上的轨迹补上来。

小伙伴,你是否在学习爬楼的时候遇到过这样的验证码,他需要我们滑动才能够通过。这样的验证码通常会识别我们是否使用了机器来滑动。比如说我们来一个 steam 试一下, 使用 silly name 打开浏览器来模拟这个滑动流程,这个时候就提示了验证失败,这是因为对方检测到了我们使用机器来进行扒取。所以呢,我们在使用 siri name 的时候,我们可以添加银行代码 a d d arguments 来去掉这里的 web siri 痕迹。接下来我们再来试一下, 好,这一次就滑动成功了。但是有的时候呢,我们滑动的太快,他依然可以检测到我们是机器所为。针对这种情况,我们就需要来模拟人的行为, 这里呢,我们创建一个函数 get track, 通过他来模拟人的行为,我们来运行看一下效果。 滑动的时候呢,我们就不再那么快了,而是一点一点的滑动,每次滑动的距离都是不同的,这个时候又可以提示验证成功了,这里呢,就是每次滑动的距离,他是一个随机的小伙伴,你学会了吗?