python爬虫之企某科技JS逆向
python爬虫简单js逆向案例
在学习时需要用到数据,学习了python爬虫知识,但是在用爬虫程序的时候就遇到了问题。具体如下,在查看请求数据时发现返回的数据是加密的信息,现将处理过程记录如下,以便大家学习交流。
内容简介
需求:爬取某企科技网站投资事件栏目https://qimingpian.cn/finosda/project/einvestment的数据。
出现问题:获取数据首先需要发送请求,得到响应数据 。通过网页分析可知,需要获取的数据来自ajax发送POST请求动态获取,所以我选择通过向ajax的url发送请求得到响应数据。得到的返回数据是加密的,如下图所示。

解决办法:通过分析浏览器请求到的相关js文件,找到解码部分代码,通过调用python中的js库execjs执行js代码
1.根据其关键字 encrypt_data进行全局搜索,寻找js的解密代码


2.找到 return t.encrypt_data && (t.data = Object(d.a)(t.encrypt_data))
此处得到的代码就是解密encrypt_data。在引处打断点,然后点击跳入。

3.找到解析方法:
function s(e) {
return JSON.parse(o("5e5062e82f15fe4ca9d24bc5", a.a.decode(e), 0, 0, "012345677890123", 1))
}
4.调试到这里的时候参数e已经是之前接口中获取到的加密数据,通过JSON.parse转为json对象返回。
接下来重点分析这个区域的代码,可以看到,只有a.a.decode(e)调用了e,所以这个地方需要生成两个函数,一个是o(六个参数),另一个是其包含的这个函数decode(一个参数,也就是前面接口中获取到的encrypt_data),其他都是固定的字符串,将此方法o的js定义直接复制过来就行了


上面就是方法o的具体定义了,然后我们再找找decode方法。


5.按照上面的方法找到decode方法,查看decode方法定义,其中用到两个变量f,c,其初始值在上方,替换即可。到此我们就把这两个方法定义全部搞定了。
接下来再根据网站中的逻辑将加密数据解密,我们自己写一个返回的方法。
function decrypt(t){
return JSON.parse(o("5e5062e82f15fe4ca9d24bc5", decode(t), 0, 0, "012345677890123", 1))
}
6.将上面的方法o和decode,以及decrypt方法写入qiming.js
然后在Python代码中使用execjs调用js中的方法就可以了。
with open("qiming.js", encoding='utf-8') as f:
js_code = f.read()
ctx = execjs.compile(js_code)
decrapy_data = ctx.call("decrypt", encrypt_data)
至此,数据已解密出来,接下来请继续做其它的处理操作。
python爬虫之企某科技JS逆向的更多相关文章
- python爬虫的一个常见简单js反爬
python爬虫的一个常见简单js反爬 我们在写爬虫是遇到最多的应该就是js反爬了,今天分享一个比较常见的js反爬,这个我已经在多个网站上见到过了. 我把js反爬分为参数由js加密生成和js生成coo ...
- 网络爬虫之记一次js逆向解密经历
1 引言 数月前写过某网站(请原谅我的掩耳盗铃)的爬虫,这两天需要重新采集一次,用的是scrapy-redis框架,本以为二次爬取可以轻松完成的,可没想到爬虫启动没几秒,出现了大堆的重试提示,心里顿时 ...
- 爬虫必看,每日JS逆向之爱奇艺密码加密,今天你练了吗?
友情提示:优先在公众号更新,在博客园更新较慢,有兴趣的关注一下知识图谱与大数据公众号,本次目标是抠出爱奇艺passwd加密JS代码,如果你看到了这一篇,说明你对JS逆向感兴趣,如果是初学者,那不妨再看 ...
- Python之手把手教你用JS逆向爬取网易云40万+评论并用stylecloud炫酷词云进行情感分析
本文借鉴了@平胸小仙女的知乎回复 https://www.zhihu.com/question/36081767 写在前面: 文章有点长,操作有点复杂,需要代码的直接去文末即可.想要学习的需要有点耐心 ...
- Python爬虫爬企查查数据
因为制作B2b网站需要,需要入库企业信息数据.所以目光锁定企查查数据,废话不多说,开干! #-*- coding-8 -*- import requests import lxml import sy ...
- python爬虫之JS逆向
Python爬虫之JS逆向案例 由于在爬取数据时,遇到请求头限制属性为动态生成,现将解决方式整理如下: JS逆向有两种思路: 一种是整理出js文件在Python中直接使用execjs调用js文件(可见 ...
- python爬虫之JS逆向某易云音乐
Python爬虫之JS逆向采集某易云音乐网站 在获取音乐的详情信息时,遇到请求参数全为加密的情况,现解解决方案整理如下: JS逆向有两种思路: 一种是整理出js文件在Python中直接使用execjs ...
- python爬虫之快速对js内容进行破解
python爬虫之快速对js内容进行破解 今天介绍下数据被js加密后的破解方法.距离上次发文已经过去半个多月了,我写文章的主要目的是把从其它地方学到的东西做个记录顺便分享给大家,我承认自己是个懒猪.不 ...
- 爬虫05 /js加密/js逆向、常用抓包工具、移动端数据爬取
爬虫05 /js加密/js逆向.常用抓包工具.移动端数据爬取 目录 爬虫05 /js加密/js逆向.常用抓包工具.移动端数据爬取 1. js加密.js逆向:案例1 2. js加密.js逆向:案例2 3 ...
随机推荐
- Spring4Shell的漏洞原理分析
Spring框架最新的PoC 这两天出来的一个RCE漏洞,但是有以下的条件限制才行: 必须是jdk9及以上 必须是部署在tomcat的应用 是springmvc的或者webflux的应用 具体的可以查 ...
- maven导入依赖了提示can't resolved
maven导入依赖显红报错 网上有很多解决方案,我试过几个但是都不是很好用,推荐一个我自己一直在用的解决方案 在终端执行命令 mvn idea:idea 无法解析的原因基本上是因为包没下载完整,执行这 ...
- Golang | 并发
goroutine 协程(Coroutine) Golang 在语言层面对并发编程进行了支持,使用了一种协程(goroutine)机制, 协程本质上是一种用户态线程,不需要操作系统来进行抢占式调度,但 ...
- 第一阶段:Java基础之异常和处理
文章目录 Java中异常处理机制的简单和应用 一.异常的体系结构&分类 二.问题扩展 三.应用场景 Java中异常处理机制的简单和应用 异常也是一种对象,Java中有很多异常类,并且定义了基类 ...
- Typora原生态的图片格式快速转化为HTML格式
Typora更改图片样式 前言 在Typora中插入的图片,默认是居中且显示原图大小的,如果想要缩小显示,可以右击图片选择缩放图片. 但是,当我上传到博客园中时,并没有保留 居中.缩放 的样式 ...
- 挖矿病毒分析(centos7)
因为我在工作的时候被各种挖矿病毒搞过几次,所以在这里整理下我遇到的病毒以及大神们的解决方案. 服务器中挖矿病毒后,最基本的一个特征就是CPU使用率瞬间飙升,此时可以通过top命令进行查看,确认是否有异 ...
- NodeJS学习日报day4——模块化
// console.log(module); // 执行顺序不同,结果也不同 // module.exports = { // name : 'Cra2iTeT', // hi() { // con ...
- Hyperledger Fabric无排序组织以Raft协议启动多个Orderer服务、TLS组织运行维护Orderer服务
前言 在实验Hyperledger Fabric无排序组织以Raft协议启动多个Orderer服务.多组织共同运行维护Orderer服务中,我们已经完成了让普通组织运行维护 Orderer 服务,但是 ...
- Http GET 请求参数中文乱码
两种解决方式 第1种:代码里转换 String name = request.getParamter("name"); String nameUtf8 = new String(n ...
- XCTF练习题---MISC---Training-Stegano-1
XCTF练习题---MISC---Training-Stegano-1 flag:steganoI 解题步骤: 1.观察题目,下载附件 2.打开下载的图片文件,发现就是一个点,修改文件扩展名,还是说查 ...