只收藏不点赞的都是耍流氓html
注意:目前pdd已经须要登录,这篇文章是在未更改以前写的,若是须要实践须要先登录pdd再进行操做便可
上周的pdd不少人说看了还不会找,都找我要写一篇来教教如何扣代码的,那就应你们要求,今天来写一篇详细的扣代码过程,彻底从零到一,若是对你有帮助,还望大力分享,这样我会越写越多。git
代码都放在个人Github上,尚未star的感受star了,哈哈,可能今周会更新别的网站,因为网站太强给推迟了,还得须要时间,为了爬虫可谓掉光了头发。github
Github:https://github.com/SergioJune...web
其余很少说了,直接开始今天的主题,扣代码。chrome
上篇文章我已经找到了加密位置了,就是下图这个位置数组
若是还不知道怎样找的话,能够看看https://sergiojune.com/2019/0...,微信的被举报删除了,暂时只能在我blog上看了,这里就很少说了。浏览器
咱们在扣代码以前,为了方便调试,能够先建立一个 html 文件,这样能够方便咱们直接在 chrome 上直接进行调试,或者建立一个 js 文件也能够,不过进行调试时须要在 webstorm 上调试才能够。这里我就建立了一个 html 文件。微信
而后把咱们扣下来的代码放到 script 标签里面便可,而后使用浏览器进行打开便可调试。webstorm
这里咱们知道了 ep("0xd2", "jLF%") 这个语句是生成 anti_content 的,因此能够直接打断点到这个语句进行查看它所须要的语句。ide
点击下一步,进入了这个函数内
若是你调试过屡次以后,发现这个是将一些加密后的字符串解密为正常的函数名字。若是你第一次扣的话,估计是把这个函数直接给扣出来,可是后面会有不少麻烦,好比变量之间的关系,因此咱们应该是把整个大函数给扣出来,便是包括这个函数的函数,看下图
可是当你扣的时候,发现刚才咱们加密的那个方法也在这个函数里面,这时就得改改了,不扣大函数,由于扣了以后调用开始就不免会出错,仍是直接把这个小函数扣出来先,以下图:
这时就能够用浏览器打开这个文件了,能够看到报错
这时不要慌,报错是正常的,由于咱们只扣了一下部分,因此还须要继续找,接下来就是查看报错的地方并断点。
能够用这个和原网址上的运行做比较,发现这个变量是个数组,因此也直接扣下来。
你细心的话会发现,下面还有个打乱这个数组的函数,正确来讲应该是还原数组,须要两个一块儿扣下来。
这时再次刷新文件便可正常获得结果了
咱们再看下一个问题。
再次点击到达错误位置,再根据原网站对比
能够发现这是个函数,能够点击箭头所指函数直达函数位置,发现仍是和加密的语句在同一个大函数内,因此咱们仍是直接扣出 Z 函数便可
再次刷新运行,出错的位置也变了
咱们继续进入错误位置和原网址的对比
发现这个变量是个方法名,能够往上找找定义位置
估计这里面的变量都是有用的,因此直接所有扣了
再次刷新便可看到错误地方不同了,继续找便可。
在出错地方断点的同时也须要在原文件中断点,而后将原文件的运行到该断点处就能够了。
接着就是查找这个对象的定义的地方了,而后把代码扣下来便可。
这里不止 F 对象, 还有 B,U,z等对象,定义位置都是在附近的,也都一块儿扣下来便可。
再次刷新看到少了个 data 属性,这里本身手动加上便可
接着运行就变成了这个错误
仍是一样与原文件作对比便可。找到原文件的定义地方,而后所有扣出来他们的定义。
我这里是将整个大函数都扣出来,而后自调用来返回上面所须要的对象,这样封装能够避免不少变量的冲突。
再次刷新,错误就到了另一个地方了。
也是一个函数,对比原文,很容易找到函数,直接扣出
继续保存文件刷新,错误也变了
对比原文件,知道这个是搜索的 url,这里咱们直接赋值便可,能够在咱们调用函数的时候传这个参数。
再次刷新,仍是这些对象的data属性的问题
也是和上面的同样,看原文是什么值,直接赋值便可。
而后到了这个错误
仍是比较原文,找出函数定义,并扣出来,就很少说了。
接着就是到这里的错误了。
这个错误比较麻烦,不过耐心点来仍是能够的,仍是来比较原文件中的JS看看那里不同。
比较这个 Y 对象,发现咱们的少了一个data,接着就是找 Y 这个 data 的生成位置了。根据上面的内容,很容易就能够知道定义的位置。
能够知道这个 l() 就是生成 data,能够打断点原文件并刷新就能够看到生成步骤了。
这里须要直接把 l 所在的位置的外部大函数都扣出来,而且自调用返回这个 l 函数便可。
接下来的仍是重复以前的步骤,说多了也是废话,相信你们应该能触类旁通,若是实在不会的话就多看几遍文章吧,本身动动手,总会有收获的。