我们在处理一些网站的时候, 会遇到一些屏蔽F12, 以及只要按出浏览器的开发者工具就会关闭甚至死机的现象. 在遇到这类网站的时候. 我们可以使用抓包工具把页面上屏蔽开发者工具的代码给干掉.
Fiddler和Charles
这两款工具是非常优秀的抓包工具. 他们可以监听到我们计算机上所有的http网络请求. 利用这种特性. 可以获取到页面加载过程中的所有内容.
软件安装
对于mac的朋友只能用charles,对于Windows的朋友,建议用fiddler
如果想要了解fiddler的原理,可以看这篇文章Fiddler的工作原理_fiddler中间人攻击-CSDN博客
配置期末端口的配置
点击Tools下的setting
有时候这种host下为Tunnel to,说明请求没有出去被打回来了,这种我们不想看到,可以点
这里讲一讲Fiddler中的找到替换的文件,使用中间人拦截替换。
所谓中间人拦截替换,就是狸猫换太子,将原来的含有无限 debugger 的函数给替换掉,这种方法适用于知道无限 debugger 函数所在的具体 JS 文件,重写 JS 文件,使其不含有无限 debugger 的函数,利用第三方工具将原来的 JS 文件替换成重写过后的文件,这类工具有很多,例如浏览器插件 ReRes,它通过指定规则,可以把请求映射到其他的 URL,也可以映射到本机的文件或者目录,抓包软件 Fidder 的 Auto responder 功能,也可以实现替换。
这里的Enable rules一定要勾选上,还有Unmatched requestspasssthrough,然后选择你要插入的文件,即可。
Enable rules的作用是在 Fiddler 中,Enable rules 的作用是激活自动响应器(AutoResponder)功能。当勾选此选项时,Fiddler 会根据用户在自动响应器中设置的规则来处理 HTTP 请求和响应
在 Fiddler 的 AutoResponder(自动响应器)功能中,Unmatched requests passthrough 选项的作用是控制未匹配到任何规则的请求如何处理。勾选该选项时:未匹配到任何规则的请求将正常发送到服务器,不会受到 Fiddler 自动响应器的干预
在更改了浏览器文件过后,我们一定不要去按旁边这个刷新,或者重新点击链接
我们要使用ctrl+shift+r来对网页进行刷新,如果还是没有效果那就要把浏览器所有的缓存清理掉。
PyExeJs模块
pyexecjs是一个可以帮助我们运行js代码的一个第三方模块. 其使用是非常容易上手的.
但是它的运行是要依赖能运行js的第三方环境的. 这里我们选择用node作为我们运行js的位置.
node.js
安装node.js的教程在这2024最新版Node.js下载安装及环境配置教程【保姆级】_nodejs下载-CSDN博客
安装pyexecjs
pip install pyexecjs
测试一下
import execjsprint(execjs.get().name) # 需要重启pycharm或者重启电脑 Node.js (V8)
简单使用
import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding='utf-8')import execjsprint(execjs.get().name)# execjs.eval 可以直接运行js代码并得到结果
js = """"鲁班_王昭君_猴子_亚瑟_蔡文姬".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", 10, 20)
print(ret)