解决爬虫们的大部分障碍——mitmproxy使用初探
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决爬虫们的大部分障碍——mitmproxy使用初探相关的知识,希望对你有一定的参考价值。
参考技术Amitmtproxy即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编辑请求信息