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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决爬虫们的大部分障碍——mitmproxy使用初探相关的知识,希望对你有一定的参考价值。

参考技术A

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

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

推荐使用第二种方法。

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

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

Python爬虫编程思想(123):抓取移动App数据--使用mitmproxy编辑请求信息

         mitmproxy可以通过命令行方式对截获的信息进行编辑,我们可以利用这个功能重新编辑请求。单击e键,会弹出如图1所示的Part窗口,询问想编辑哪一部分信息。

        通过上下按键可以切换到某一个编辑项,然后按<Enter>键就可以进行入该编辑项。也可以直接按编辑项前面的数字或字母。这里选择query,由于query前面的数字是5,所以直接按5键即可进入编辑query的窗口。在编辑窗口,按a键,会进入query的编辑状态。原来已经有一些query,现在按a键,可以增加一个新的query,本例输入的key是name,value是Bill,如图2所示。按Tab键切换key和value,当切换到像编辑的位置,按<Enter>键即可编辑当前的内容。编辑完后,按ESC键退出编辑状态,然后按q键返回上一页。 

以上是关于解决爬虫们的大部分障碍——mitmproxy使用初探的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫编程思想(123):抓取移动App数据--使用mitmproxy编辑请求信息

mitmproxy安装与安卓模拟器的配合使用-手机APP爬虫

App爬虫神器mitmproxy和mitmdump的使用

使用mitmproxy做今日头条爬虫链接分析

爬虫学习笔记(二十二)—— Mitmproxy

Python爬虫编程思想(118):抓取移动App数据--mitmproxy基础