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