js逆向解析技巧--selenium
由于工作后期偏向架构方向,很久没做单独的爬取操作,居然有点忘记js的逆向过程了,研究了一晚上终于有了点头绪,记录下来免得以后忘记。
下面内容以对美团店铺抓取时需要破解的_token加密为准。
1. chrome浏览器的使用--js断点调试
以美团为例,点进美团的美食页面,使用f12打开开发者工具。清空当前产生的各种请求,然后点击下一页,会发现重新生成大量的请求。切换到xhr页面观察是否通过ajax进行的请求,我们发现getPoiList开头的请求返回了我们需要的结果。
然而观察该请求所携带的参数我们发现,大多数参数是可以通过找规律的办法得到解决的,但_token这个参数是被加密过得,我们无法获取到它的值,这就需要通过反编译来解决问题。
通常情况下,我们可以全局搜索_token来看是否能找到对其进行加密的js,但有的时候,数据的整个键值对都是被加密过得(参考知乎登陆的加密),我们无法通过键找到对应值得加密算法。这时候可以尝试搜索请求url中的关键部分来定位加密部位。
我们可以看到,根据getPoiList我们找到了_token的的值为d,d又是通过Rohr_Opt.reload(p)方法进行加密得到想要的结果的。
我们在这个位置打上断点,再次执行下一页,当执行到reload时,我们进入找到了_token的加密js,打上断点继续观察就可以看到加密的整个流程了,如果你是js高手,可以尝试解密js,然后用python重写,这样结果的性能会好一些,但我这里使用了python直接调用js的方法进行加密。
以上就是js加密的关键部位了。到这里chrome的断点调试完成。
2. python实现js代码的调用
通常来讲,使用execjs或者pyV8是比较主流的python调用js模块,但因为我两者都安装失败了,暂时没法使用,因此使用selenium的execute_script方法进行js调用。首先,我们将其改造成一个html文件rohr.html,并且为其添加一个可被外界调用的返回函数ssss,如下:
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>Checkbox</title>
<script type="text/javascript">
var Rohr_Opt = new Object;
Rohr_Opt.Flag = 100007;
Rohr_Opt.LogVal = "rohrdata";(function() { var _$_543c = ["\x75\x6E\x64\x65\x66\x69\x6E\x65\x64",
.................
])})();function ssss(url){return Rohr_Opt.reload(url);
}
</script>
</head>
<body></body>
</html>复制代码
使用python对其进行调用:
from selenium import webdriver
import osfile_path = 'file:///' + os.path.abspath('rohr.html')
print(file_path)
browser = webdriver.Chrome()
browser.get(url=file_path)
jv = "https://bj.meituan.com/meishi/api/poi/getPoiList?cityName=北京&cateId=0&areaId=0&sort=&dinnerCountAttrId=&page=3&userId=&uuid=7dc6d913fda1472c8d42.1552289338.1.0.0&platform=1&partner=126&originUrl=https://bj.meituan.com/meishi/pn3/&riskLevel=1&optimusCode=1"
data = browser.execute_script('return ssss()', jv) # 这里使用execute_script调用了ssss函数,并传入参数jv
print(data) # data即我们加密后的_token
browser.close()复制代码
第一行是rohr.html文件的绝对路径,第二行即我们所需要的_token的加密结果
转载于:https://juejin.im/post/5c893dd36fb9a049a712adc5
js逆向解析技巧--selenium相关推荐
- JS逆向解析---某知名小说网站内容加密
该小说网站的全部内容都是经过一个JS的加密,要想爬取这个网站那么将其内容解析是不可避免的,本文将讲解如何对其进行JS的逆向解析.网站:shuqi 随便点开一本书,打开浏览器自带的抓包工具: 点击第一个 ...
- Python爬虫入门之淘宝JS逆向解析请求参数Sign加密(一)
关于JS逆向,相信这是很多小伙伴学习爬虫的一个门槛之一,如果你是初学者入门,开发一款爬虫,要以思路为主,代码是其次的 这里所说的思路指两个方面,一,分析观察目标站点思路,二,代码开发思路,二者缺一不可 ...
- 淘宝直播h5页面js逆向解析
最近公司需要爬取直播商品的一些数据,其中就有淘宝直播. 分析淘宝直播app 很显然,直接搞难度很大,想到找h5页面,半天没找见:然后搞淘宝直播app,先抓包,请求尝试: import requests ...
- Python爬虫从入门到精通:(43)JS逆向:完美世界RAS逆向_Python涛哥
完美世界有很多游戏,比较出名的就是诛仙.魔兽世界等.完美今天就来看下完美世界登陆的逆向分析! JS逆向解析 登陆的时候这里有个点击认证.没关系,完美先忽略它,直接点击.完美主要探讨密码的逆向方式. 抓 ...
- JS逆向之巨量创意signature签名
文章目录 目标网站 接口分析 定位_signature生成位置 补环境还原js 编码测试 往期逆向文章推荐: JS逆向之百度翻译 JS逆向解析之有道翻译 JS逆向之企名科技 JS逆向之人口流动态势 j ...
- JS逆向之巨量星图sign签名
文章目录 1. 目标网站 2. 初步抓包分析 3. 定位加密参数生成位置 4. 编码测试 往期逆向文章推荐: JS逆向之百度翻译 JS逆向解析之有道翻译 JS逆向之企名科技 JS逆向之人口流动态势 j ...
- Scrapy实战案例--抓取股票数据并存入SQL数据库(JS逆向)
目标网址:http://webapi.cninfo.com.cn/#/marketDataZhishu 之前在这篇文章里面对该网站的JS进行了一个逆向的解析:JS逆向解析案例 接下来我们来创建一个Sc ...
- js逆向系列:解决网页版微博登陆的js加密(2020.9.1最新版)
一.前言 博主最近沉迷js逆向,向各网站开刀,于是决定拿比较经典的微博登陆js加密来作为案例给大家讲解一下. 二.分析过程 我们先从这个登录界面进行调试.先随便填写账号密码,找到登陆的请求接口. 很容 ...
- 送书 | 用啥selenium!JS逆向不香吗?
大家好!我是啃书君 正所谓条条道路通罗马,上次我们使用了Selenium自动化工具来爬取网易云的音乐评论,Selenium自动化工具可以驱动浏览器执行特定的动作,获得浏览器当前呈现的页面的源代码,做到 ...
最新文章
- Leetcode 207.课程表
- 哪些业务流程和RPA更匹配?
- C/C++ static和const关键字的作用
- Python之一行代码
- 鸿蒙密视视频加密软件,鸿蒙密视视频加密软件
- dev 居中_div居中 div水平居中代码 | 帮助信息-动天数据
- 查看防火墙状态并关闭防火墙
- 【362】python 正则表达式
- 关于Java中被static修饰的静态变量 (类变量)
- JAVA数组批量设值(初始化)的办法
- max导unity注意及解决
- tensorflow.js基本使用 图标识别(八)
- linux 解决内存不足问题(设置虚拟内存)
- 泰坦尼克号数据_数据分析实战3:泰坦尼克号生存分析
- Java 使用pio生成word
- sort()与拉姆达表达式
- 苏州数字孪生工厂3D模型,三维可视化建模,三维虚拟仿真交互模型
- 计算机病毒的基本结构
- python爬虫:批量刷新网页
- Google Sheet 学习笔记