开篇闲聊
最近也是看完了崔庆才爬虫52讲里面JavaScript逆向部分,里面介绍了从简单到复杂整个JavaScript逆向的方法,里面也有一些实战案例(可以练习的),跟着视频练习之后,虽然也成功了,但是跟着一步一步的分析,总是不知道自己哪里懂了,哪里不懂,就想着自己找个网站实战练习一下。偶然的机会跟学姐闲聊的时候学姐给我发了一个网站,让我练一下手。就有了下面的分析,因为是初次自己独立的进行JavaScript实战,难免会出现一些问题,期间也少不了大佬的帮助。

废话不多说了,请出我们今天的主角:艺恩-中国电影票房数据

网站分析
抓包
首先我们先看一下document里面有没有数据

通过预览我们发现数据并没有在document里面,我们猜测数据可能是通过Ajax加载出来的,点到XHR选项,果然抓到了一个名为GetData的文件。

这个应该就是我们要的数据文件了,之后点开,发现是post请求,并且data里面没有加密参数。


心中一喜,这没有加密参数不是很简单吗,之后我们预览一下。

傻眼了,这也不是数据啊!猜测应该是JavaScript加密了,但是这也没办法搜索关键字,这怎么办呢。没办法只能用最笨的方法,找到发起程序这个选项。慢慢的一点一点的排除吧。

中间的send和ajax引起了我的注意,不管了点开看一下吧。来到了一个js文件,展开打断点,刷新

单步调试。发现了这样一段js语句,引起了我的注意

其中还有中文注释,这段js语句挺好懂的,大致的意思就是构建一个url,发送一个请求,成功发送就把data传过去,然后回调。我们不关心它是怎么请求又回调的,我们关心的只是这个data是怎么解析的。其中这句引起了我的注意

用python的代码来解释就是,调用了webInstace库里面的shell方法,传入一个data参数然后再解析一下。鼠标放在这个方法的上面,会显示这个方法的库,点进去

这下彻底看不懂了,看不懂没关系,我们之间把这个库扒下来,然后利用execjs这个库直接解析就行,我们传入个data参数就好。
不懂execjs用法的朋友可以参考一下这个篇文章execjs的使用
我用的是pycharm,不会配置node.js环境的朋友可以参考一下这篇文章Pycharm配置node.js

代码实现
我们把这个库复制下来随便命名为一个js文件,然后再文件的表头添加一下这个行代码
global.navigator={ userAgent: 'node.js', };

之后直接用python模拟请求即可。
附上源代码

import requests
import execjsdef get_data(YEAR):for i in range(14):data = {'year': YEAR,'MethodName': 'BoxOffice_GetYearInfoData'}headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36 Edg/88.0.705.63'}url = 'https://www.endata.com.cn/API/GetData.ashx'response = requests.post(url,headers=headers,data=data)result = response.textprint(result)with open("a.js","r",encoding='utf-8') as f:js = f.read()# 编译js代码resp = execjs.compile(js)# 调用方法response = resp.call('webInstace.shell',result)print(response)YEAR = YEAR + 1def main():YEAR = 2008get_data(YEAR)if __name__ == '__main__':main()

这里我只是把数据打印出来,后续的解析,朋友们可以自行选择方法。

附带上代码运行的结果

PS:这只是简单的一个JavaScript逆向实战,大佬勿喷哈。

【Python 爬虫简单的JavaScript逆向实战】抓取中国电影票房的数据相关推荐

  1. Python爬虫 | 斗图网表情包抓取

    Python爬虫 | 斗图网表情包抓取 1.数据来源分析 2.制作div_list 3.发起请求 4.保存图片 5.批量获取 6.完整代码 声明 1.数据来源分析   打开斗图吧的主页,发现网址非常有 ...

  2. Python爬虫系列(二):爬取中国大学排名丁香园-用户名和回复内容淘宝品比价

    Python爬虫系列(二):爬取中国大学排名&丁香园-用户名和回复内容&淘宝品比价 目录 Python爬虫系列(二):爬取中国大学排名&丁香园-用户名和回复内容&淘宝品 ...

  3. python3网络爬虫开发实战-抓取猫眼电影排行(正则表达式版)

    抓取猫眼电影排行 目前没有学习HTML解析库,这里先选用正则表达式作为解析工具 目标 提取出猫眼电影top100的电影名称.时间.评分.图片等信息.提取的站点URL为http://maoyan.com ...

  4. 使用python爬取中国电影票房数据并写入csv文件

    环境 PyCharm 2021.1.2 x64 爬取的目标网页 一.代码 import requests from bs4 import BeautifulSoup url = "http: ...

  5. python爬虫之js链接跳转抓取_Python爬虫获取页面所有URL链接过程详解

    如何获取一个页面内所有URL链接?在Python中可以使用urllib对网页进行爬取,然后利用Beautiful Soup对爬取的页面进行解析,提取出所有的URL. 什么是Beautiful Soup ...

  6. Python爬虫实践(入门篇)——抓取《天使降临到我身边》图片

    今天就学了一下Python爬虫,于是想实践一下.刚好一周前在B站补完番<天使降临到我身边>--里面的小学生特可爱.情节也不错,心里就比较喜欢这部漫画,所以就想扒一些图片当壁纸.刚好,Pyt ...

  7. python爬虫(17)爬出新高度_抓取微信公众号文章(selenium+phantomjs)

    个人博客请访问 http://www.x0100.top 一.思路分析 目前所知晓的能够抓取的方法有: 1.微信APP中微信公众号文章链接的直接抓取(http://mp.weixin.qq.com/s ...

  8. Python爬虫之js加密破解,抓取网易云音乐评论生成词云

    js破解历程 前言 技能点 界面概况 静态网页动态网页 页面解析 step1: 找参数step2:分析js函数step3:分析参数step4: 校验step5:转为python代码 编写爬虫 很多人学 ...

  9. python 爬虫课程推荐_关于递归抓取的课程推荐

    Python爬虫包 BeautifulSoup 递归抓取实例详解概要:爬虫的主要目的就是为了沿着网络抓取需要的内容.它们的本质是一种递归的过程.它们首先需要获得网页的内容,然后分析页面内容并找到另一个 ...

最新文章

  1. 转 MySQL问题排查工具介绍
  2. Direct3D学习_绘制流水线
  3. 数平精准推荐 | OCR技术之系统篇
  4. “内部人”的信息安全架构---信任体系
  5. 内核抢占机制(preempt)
  6. 在code::block中创建console application
  7. 软件工程师成长为架构师必备的十项技能
  8. java中观察者模式的使用场景
  9. Gradle 2.0 用户指南翻译——第六十三章. 比较构建
  10. Win10如何关闭自动更新
  11. Tmux_Hotkey
  12. 内蒙古小学计算机老师招聘试题及答案,2016内蒙古事业单位计算机考试题库:计算机考试练习题(57)...
  13. 懂车帝上配置高的国产车为什么那么便宜?
  14. 个人永久性免费-Excel催化剂功能第41波-文件文件夹相关函数
  15. 红帽Linux重置root密码
  16. 学会使用QT的帮助文档
  17. 深度学习简介--PPT
  18. 【RabbitMQ】消息应答--ack机制
  19. python dateutil_Python 常用日期处理 -- calendar 与 dateutil 模块的使用
  20. 2只老虎c语言课程设计,《两只老虎》教学设计(第一课时)

热门文章

  1. 小微贷款按小时算利息,会是互联网巨头“放贷梦“的终局吗?
  2. imessage_iMessage何时将邮件标记为“已读”?
  3. html禁止浏览器修改字号,放大 Safari 浏览器字号的方法 | 如何修改 iPhone 浏览器字体?...
  4. Ubuntu16.04 E: 无法定位软件包(绝不是更换镜像源这种千篇一律无效的解决方案) (已解决)
  5. 将本地项目上传至码云仓库
  6. 2022 APMCM亚太数学建模竞赛 C题 全球是否变暖 问题一python代码实现(更新完毕)
  7. 分享一本Java并发编程的免费好书
  8. Javascript中引用数据类型
  9. Python 操作配置文件
  10. 动态生成布局html,HTML5应用开发:神奇的动态布局库isotope教程