解决爬虫们的大部分障碍——mitmproxy使用初探

mitmtproxy即mitm+proxy,顾名思义是中间人攻击加代理。用于中间人攻击的代理首先会向正常代理一样转发请求,保障服务器与客户端的通信,其次,会适时的查、记录截获的数据或篡改数据,引发服务端和客户端的特定行为。

mitmproxy可以利用python实现高度定制脚本。因为mitmproxy工作在http层,现在的绝大部分的https拥有检测并规避中间人攻击的能力,所以mitmproxy工作时必须忽略浏览器的SSL证书或让其主动信任。由于此工具具有一定的黑产性质,使用时注意有所规范。

运行

mitmproxy有三种启动命令,分别是mitmproxy,mitmdump,mitmweb,三个命令都会启动软件,区别在于交互界面的不同。

mitmproxy没有window,再次略过。

mitmdump启动后在后台默默运行,实用性不强,也略过。

mitmweb启动后,在8081端口开一个窗口,形如:

[图片上传失败...(image-369edf-1541148099114)]

接下来就是启动chrome,不过启动要设置代理,并忽略证书错误,命令行如下

解决爬虫们的大部分障碍——mitmproxy使用初探_第1张图片
QQ截图20181102104147.png

上述工作完成后就可以开发自定义脚本了,这才是mitmproxy真正强大的地方。方法有两个:

1.编写一个 py 文件供 mitmproxy 加载,文件中定义了若干函数,这些函数实现了某些 mitmproxy 提供的事件,mitmproxy 会在某个事件发生时调用对应的函数。

2.编写一个 py 文件供 mitmproxy 加载,文件定义了变量 addons,addons 是个数组,每个元素是一个类实例,这些类有若干方法,这些方法实现了某些 mitmproxy 提供的事件,mitmproxy 会在某个事件发生时调用对应的方法。

推荐使用第二种方法。

官方文档有详细的事件函数,请自行查阅

事实上考虑到mitmproxy的实际使用场景,大多数情况下我们只会用到针对HTTP生命周期的几个事件。只会用到http_connect/request/response三个时间就能完成大多数需求了。

详细使用还在研究中。敬请期待。

你可能感兴趣的:(解决爬虫们的大部分障碍——mitmproxy使用初探)