App爬虫神器Mitmproxy快速带

北京白癜风治疗最好的医院是哪个 https://m.39.net/disease/a_o9v2f73.html

最近在搞App爬虫,不过万事入门难,我得自己研究研究Mitmproxy虽然不知道到底是不是那么强啦,就是得要会用,所以我就亲自入坑,并把自己的一下观点比较记录下来,毕竟好记性不然烂笔头嘛。

mitmproxy是一个支持HTTP和HTTPS的抓包程序,有类似Fiddler、Charles的功能,只不过它是一个控制台的形式操作。

mitmproxy还有两个关联组件。一个是mitmdump,它是mitmproxy的命令行接口,利用它我们可以对接Python脚本,用Python实现监听后的处理。另一个是mitmweb,它是一个Web程序,通过它我们可以清楚观察mitmproxy捕获的请求。

1.准备工作

接下来我将给同学们讲解Mitmproxy抓包工具的安装及介绍,之前我分享了Fiddler抓包工具的安装以及简单操作,通过Fiddler抓包工具我们可以抓取Web端和App端的数据。今天给大家介绍另一款强大的抓包工具同样可以抓取Web端和App端的数据,并且可以和Python语言融合在一起,通过爬虫来抓取数据——Mitmproxy。

1.1前言

Mitmproxy其实就是用来做中间人攻击的,那什么是中间人工具呢?

Mitmproxy就是用于MITM的ProxyMITM即中间人攻击(Man-in-the-middleattack)

图一

其实,上面这张图(图一)和我们上节课讲的Fiddler那张图很像,我们的Mitmproxy就和Fiddler一样,在上图的ManintheMiddle位置一样,在中间做一些截取和查看,用于中间人代理其实和正常的一样,会将我们客户端发起的请求截取,然后转发给我们的服务器(不过是多了一个中间人,这个中间人可以修该或者不修改你发起请求的数据),服务器收到请求之后会收到响应,同样我们的Mitmproxy会截获这个响应,最后再转发给我们的Client。所以总结下来就是以下三点:

和正常的代理一样转发请求,保障服务端与客户端之间的通信;会适时的查询记录也就是:拦截请求修改请求(其实,也就是修改请求内容,比如你百度查询:Python,然后中间人修改你请求的内容,比如修改成:AI悦创,这样返回的内容就不是Python相关了。)返回请求修改返回(其实,也就是修改返回内容,比如你百度查询:Python,百度原本给你返回Python相关的内容,但中间人比如就改成一句:你好,我是悦创。这样结果就被改变了)可以载入自定义Python脚本。Mitmproxy不同于Fiddler之类的抓包工具,不仅可以截获数据并且可以帮助开发者查看分析等操作,更可以自定义脚本来进行二次开发,举个例子来讲:利用Fiddler可以过滤出浏览器对某个特定URL的请求,并且查看和分析数据,但是,实现不了高度的定制化需求。例如:截获对该浏览器的请求,将返回数据为空并将真实的返回数据存到某一个数据库中或者出现异常的时候发出邮件通知。

上面所说的功能Fiddler实现不了,但对于Mitmproxy来说,可以使用载入自定义的Python脚本来实现,Mitmproxy并不会对无辜的人发起攻击,由于我们的Mitmproxy工作在HTTP中,而当前通过HTTPS的普及,使客户端拥有检测规避中间人的能力,所以要让我们Mitmproxy正常工作的话必须让我们客户端或者App信任Mitmproxy的SSL证书或者忽略证书异常。

其实和Fiddler差不多,Fiddler也是安装了一个自己的证书使的客户端信任,所以Mitmproxy一样也是要让浏览器或者App信任该证书,让Mitmproxy在中间充当一个中间人的角色——达到截获请求或者响应。

这个不是在做黑产,而是在做我们的开发测试。

1.2Mitmproxy抓包工具安装

在正式安装之前,我们先来看看Mitmproxy需要一个怎样的安装环境。

基于Python环境(我电脑使用的是:Python3.7)Windows操作系统中需要安装MicrosoftVisualC++V14.0以上(否则会出现保存无法安装)Linux操作系统则直接基于Python安装即可首先,我们需要打开我们的命令行工具CMD,直接在命令行命令输入以下命令:

回车就可以安装了,如果以上安装不了出现问题,建议先给自己的pip换源一下:Windowspip换源,但是如果出现报错,咱们继续往下看。

1.3pip安装出现错误解决方法

1.3.1解决方法一

如果出现以下类似的报错信息(图二)我们有两种解决方法,第一种安装MicrosoftVisualc++BuildTools,来一劳永逸的解决,方法如下:

图二

上图(图二)出现的报错信息,最重要的是:error:MicrosoftVisualC++14.0isrequired.GetitwithMicrosoftVisualc++BuildTools:landinghub.visualstudio.


转载请注明:http://www.aierlanlan.com/tzrz/6786.html