逆向爬虫25 抓包工具和PyExecjs
我们在处理一些网站的时候,会遇到一些屏蔽F12,以及只要按出浏览器的开发者工具就会死机甚至死机的现象,在遇到这类网站的时候,我们可以使用抓包工具把页面上屏蔽开发者工具的代码给干掉。
一. Fiddler
这两款工具是非常优秀的抓包工具,他们可以监听到我们计算机上所有的http网络请求,利用这种特性,可以获取到页面加载过程中的所有内容。
1.1 软件安装
1.2 fiddler简单配置(HTTPS)
接下来.我们打开www.vmgirls.com,尝试抓包看看,发现https的请求默认是不可用的,需要配置一下证书。
1.3 fiddler简单使用
清理一下信息,然后重新刷新浏览器,就看到被响应的html内容了。
vmgirl之所以不可以打开开发者工具,是因为在其html中导入了一个disable-devtools.js,我们需要想办法把这个东西给干掉,只要干掉了它,我们就又可以打开F12的开发者工具了,那么如何干掉它呢?这就需要我们了解一下fiddler和charles的工作原理了。
fiddler和charles本质其实就是一个安装在这台计算机上的一个代理,就像这样:
本质上和代理没啥区别,但是,由于fiddler是我们自己本地的软件,那么我们可以在fiddler里对请求过来的内容进行截取和替换。
我们做这样一个事情,把vmgirls的页面源代码捕获,单独写入一个html文件,然后把其中的disable-devtools.js部分注释掉。
现在这个页面源代码在我本地了,我就可以进行替换了
接下来,重新刷新页面(ctrl+shift+r),发现右键有效果了。
二. PyExecJS模块
pyexecjs是一个可以帮助我们运行js代码的一个第三方模块,其使用是非常容易上手的。
但是它的运行是要依赖能运行js的第三方环境的,这里我们选择用node作为我们运行js的位置。
2.1 安装Nodejs
2.2 安装pyexecjs
pip install pyexecjs
测试一下:
import execjs
print(execjs.get().name) # Node.js (V8)
2.3 简单使用
import execjs
# execjs.eval 可以直接运行js代码并得到结果
js = """
'a_o_e_i_u'.split('_')
"""
res = execjs.eval(js)
print(res)
# execjs.compile(), call()
# execjs.compile() 事先加载好一段js代码,
jj = execjs.compile(
"""
function an(a, b) {
return a + b
}
"""
)
# call() 运行代码中的xxx函数. 后续的参数是xxx的参数
ret = jj.call("an", 1, 2)
print(ret)
完事儿,你没有看错,execjs就这几个功能就够咱用的了。
2.4 实战案例
保险起见,js逆向的案例就不列了,怕被查水表。