爬虫js逆向系列
我会把做爬虫过程中,遇到的所有js逆向的问题分类展示出来,以现象,解决思路,以及代码实现,这三方面解析,供大家参考爬虫认知
在程序猿所有的方向中,爬虫是离money最近的一个方向,你的明白?而且爬虫可发展的方向很多,前可走大数据,人工智能,后可转后端。而且爬虫做得好,要求的技术栈还是比较全面的。如果你对爬虫有兴趣,欢迎加V:13809090874,一起沟通交流
免责申明:
此内容仅供学习交流使用,不用于商业用途,如果涉及侵权,联系作者删除

最近在爬抖音的第三方数据平台的数据,遇到一些js逆向的问题,跟大家分享一下。(具体哪个平台,就不告知了)在这个平台遇到的坑大概有如下几个:

  • js逆向-无限debugger
  • js逆向-内存奔溃
  • js逆向之js压缩
  • js base64加密btoa()与pythonbase64加密有区别
  • t腾讯滑块验证码
    反反爬差不多就这些问题,解决完反爬的问题,剩下的就是账号风控以及策略的问题。(这部分内容不展开去说,主要去聊聊反反爬的内容)

坑1:js逆向之无限debugger

我们去做爬虫,首先会通过chrome浏览器看一下它的请求过程以及请求头的参数等。
好,我也是按着这个思路去做的,刚按下F12,跳出控制台,就直接进入debugger模式了,点击下一步,永远跳不出来,你说坑不坑。这爬虫的第一步就受阻了。

那么咱们就来看看这问题怎么解决,解决办法有哪些?

  1. 最简单的办法,跳过所有断点(控制台右上角的按钮),让他不进入断点模式,然后去看他的请求头信息
  2. 通过抓包工具(fiddler,charles)直接看他的请求信息
  3. 找到相关的js代码,把这块代码注释掉,不让他运行。然后进入断点模式

其实我们的第一步解决办法,肯定是第1,或者第2种,先分析请求信息,模拟它的请求信息,能拿到数据再说。我也是这么做的,但要模拟它的请求,就必须破解它的加密参数。要破解加密参数,就必须进入断点模式,看它代码运行的过程,所以第三步是绕不过去的。

在这里,我先来说一下,怎么找到这无限debugger的地方的,并且成功打断点的。
我们的先知道,这无限debugger是怎么实现的,怎么搞出来,才能有的放矢,对吧。

无限debugger原理:

js中有一个对象是“debugger”,调用这个对象可以直接进入debugger模式,加入setinteval,或者是setTimeout这两个方法,就可以进入无限debugger。给大家模拟一下,我们在chrome里直接写一个这样的函数

大家看这个动图,可以发现已经进入来无限debugger,与我们要爬的平台的无限debugger有点不同,它是每次debugger会新建一个文件,对吧,而我们自己写的会一直停留在同一行上。这里会涉及到js逆向的另一个问题,就是既然进入来无限debugger模式,在这里面,我再同时给你创建很多无用的对象,让你的内存直接崩掉,也是常见的反爬的手段。后面我也会跟大家一起看一下这“js逆向之内存崩溃”的问题。

查看js源码,寻找无限debugger的代码

好,既然我们知道来无限debugger的原理,是跟“degugger,setTimeout,setinterval”这三个关键词有关,我们就在目标网站的js中搜一下这个关键词。
在这里我就直接跟大家说结果了,目标网站的js主要有两个:app.2222222.js,s.js这两个,app.js主要是请求的封装,以及响应结果的处理等,s.js主要用来加密。app.js做了简单混淆,s.js做了十六进制的混淆。
setTimeout:可以在两个文件中搜到,s.js中有两个,app.js中有26个
debugger:两个文件中都搜不到,其实这是在s.js中,只不过被它用十六进制混淆了,无法直接搜到
setInterval:两个文件中都搜不到,没用这个方法

后面我去看它的js源码,可以发现在app.js中,setTimeout做的都是业务逻辑上的处理,而在s.js中有两处就是我们要找的地方。产生无限debugger的地方。

我们把十六进制的编码,放到控制台上运行后,就会发现是“debugger”的对象。
到这里我们就成功找到了它无限debugger的地方。下面要做的就是把这段代码覆盖掉,不让它运行,我们就可以打断点调试了

利用charles抓包工具,注入js代码

我们把s.js这代码全部拷贝下来,保存到本地,然后把这段代码删除,或者注释掉。

(charles工具怎么使用,自行百度)
然后来重新打开目标网站,就可以屏蔽掉无限debugger了,我就不展示结果图片,不然动图太多了。其实,这中间还有一个坑,就是我们把格式化后的js下载下来之后,然后直接用格式化好的js去打开目标网站,会给你来个内存奔溃玩玩。
这个问题我也是找了好久,这个网站,你必须要用压缩后的js代码去打开目标网站才行,因为它的js代码里,用正则表达式去判断你的这个js文件是不是压缩后的文件,如果不是,就知道你是爬虫,在破解它的js,它就给你无限创建无用对象,直到内存崩溃。

js 模拟点击_爬虫js逆向之无限debugger--抖音第三方数据分析平台的坑相关推荐

  1. python 爬虫模拟点击_爬虫——模拟点击动态页面

    动态页面的模拟点击: 以斗鱼直播为例:http://www.douyu.com/directory/all 爬取每页的房间名.直播类型.主播名称.在线人数等数据,然后模拟点击下一页,继续爬取 #!/u ...

  2. 使用js模拟点击a链接 无效的解决方案

    <a id="abc" href="http://www.baidu.com" target="_self"></a> ...

  3. Vue项目:js模拟点击a标签下载文件并重命名,URL文件地址下载方法、请求接口下载文件方法总结。

    URL文件地址下载方法 一.正常情况下,我们都如此下载文件并修改文件名,在a标签上面添加download属性 //文件下载downFile() {if ('download' in document. ...

  4. Gremlins.js – 模拟用户随机操作的 JS 测试库

    Gremlins.js 是基于 JavaScript 编写的 Monkey 测试库,支持 Node.js 平台和浏览器中使用.Gremlins.js 随机模拟用户操作:单击窗口中的任意位置,在表格中输 ...

  5. 【JS逆向】无限debugger实战之八仙过海,各显神通。

    这里来说debugger这个东西,其实debugger只是算反调试的一部分,首先我们先理解一下这个debugger这个东西 声明:本文只作学习研究,禁止用于非法用途. 1.debugger 语句用于停 ...

  6. scrapy模拟模拟点击_模拟大流行

    scrapy模拟模拟点击 复杂系统 (Complex Systems) In our daily life, we encounter many complex systems where indiv ...

  7. js模拟表单html形式,JS模拟并美化的表单控件完整实例

    本文实例讲述了JS模拟并美化的表单控件效果实例.分享给大家供大家参考.具体如下: 这里演示使用JS美化并模拟网页表单控件,十分漂亮的表单效果,使用时可以将代码内的JS保存为文件, 方便调用,使用方法: ...

  8. jsx怎么往js里传参数_给js文件传参数(详解)

    一.利用全局变量 这是最简单的一种方式,比如Google Adsense: 缺点是引入了全局变量.其中引入文件的方式还有两个变体: // 变体1:用document.write输出 document. ...

  9. 接口并发如何模仿用户点击率和提交率_洞察| 五大法则揭秘!在抖音如何打造“爆款”?...

    来源丨木木老贼 作者丨木木老贼 导读:抖音如何打造爆款?怎么在眨眼间抓住注意力?本文给大家分享抖音官方公布的五条爆款法则和一个创作原则. 越来越多的人带着全村人的希望来到抖音,看到人家随便发一个吃饭视 ...

最新文章

  1. Google Chrome的CSS hack写法
  2. 随着计算机多媒体技术的产生和发展,多媒体技术及其应用与发展论文(本科)10...
  3. 硅谷大佬为何加速逃离加州:赋税过重,生活质量持续恶化
  4. F4+2 团队项目软件设计方案
  5. 模块化封装 --- 双ToKen 实现免登录步骤详解
  6. 实验1 数据库操作
  7. leetcode 228. 汇总区间
  8. linux6.0设置共享文件夹,[原创] how to virtualbox sharefolder共享文件夹(数据空间)设置全记录...
  9. java中的垃圾收集器_Java中的垃圾收集
  10. JDBC10 Blob二进制对象
  11. 中科院计算机和理论物理双硕士白,中科院研究生理论物理怎么不学相对论?
  12. 利用BS爬取单词音标
  13. Windows 11 修改Edge按 Alt+Tab 键为单个窗口
  14. STM32F407ZET6音乐播放器
  15. 妇科宫颈细胞学计算机检查,宫颈细胞学检查是怎么回事?
  16. Linked list
  17. html将四张图片合并,照片拼图在线制作 自带多种照片拼图模板,自由排版将多张照片合成一张...
  18. bitbucket 代码备份
  19. python 单词纠错_用 Python 实现英文单词纠错功能
  20. linux mtd 用法,Linux mtd与ubi关系详解,ubi使用命令总结

热门文章

  1. Hibernate 一对一外键单向关联
  2. Vue学习笔记(1)(认识Vue、基础语法)
  3. linux系统监控和进程管理
  4. Objective-C Runtime (三):Method Swizzling(方法替换)
  5. 活动目录的灾难恢复操作指导之三
  6. 使用IntelliJ IDEA开发SpringMVC网站(五)博客文章管理
  7. 【HDU 5532 Almost Sorted Array】水题,模拟
  8. IBM发布JumpGate 连接OpenStack和公有云
  9. 设计模式之组合模式(Composite)
  10. Android进度条函数,Android实用笔记——使用ProgressBar实现进度条