记忆碎片之python爬虫APP数据爬取fiddler和mitmproxy的简单使用(三)

第一部分

# fiddler工具
"""
命令行下断点:
    bpu 域名  (实现请求前的断点拦截)bpu https://www.baidu.com
    bpu 回车 取消拦截
    bpafter 域名(拦截响应包)
    bpa 回车(取消响应包的拦截)
    设置网页元素的重定向,当服务器上的某个文件需要替换时,可以重定向到本地文件,没问题时再替换线上文件
"""
"""
模拟器安装证书:
    后来测试才知道下面这几句话不能用:设置网络桥接模式,就是为了获取当前网络里面的IP地址,否则获取到的是net之后的地址,它是通过
    地址转化所得到的地址,
    直接修改代理即可
"""

第二部分

"""
注意:在xshell中是set view_filter ''
mitmproxy过滤 f
输入字母f,会出现set view_filter=接着输入过滤的命令,如请求不是200的
view_filter=!(~c 200) 这时就返回不是200
view_filter=直接回车,返回未过滤的请求
view_filter=~d baidu.com 返回所有和baidu.com域名相关的数据包
view_filter=~d qq.com 返回所有和qq.com域名相关的数据包
view_filter=~m post & ~u baidu.com 返回url是baidu.com的post请求
view_filter '~m get & ~u baidu.com' 返回url是baidu.com的get请求 xshell中
"""
"""
mitmproxy断点拦截 i  xshell中set intercept ''
输入字母i,会出现set intercept=接着输入断点拦截命令
set intercept= ~d baidu.com & ~m get  回车之后在刷新页面时会拦截域名是baidu,com的get请求
会看到屏幕有拦截到一条为红色的数据包,进入该数据包,按键盘的e,选择要修改的类别
会跳到该类别修改页,在当前行输入键盘d会删除该条数据,q是退出修改,返回数据包详情页面
继续按键盘e,接着选择修改url,会在屏幕左下角显示命令flow.set @focus url str,注意:xshell环境会进入vim编辑模式
按键盘a,继续或者重新发起请求,进行篡改数据后的页面显示
"""
# mitmproxy的重要组件 mitmdump
"""
mitmdump -p 8889
由于mitmproxy是在虚拟环境中安装的,所以在cmd中使用mitmdump时,需要切换到虚拟环境
在cmd中cd到虚拟环境所在路径D:\gcw\learn_crawler\venv\Scripts 回车,然后输入a+tab会自动补全activate,回车
就会切换到虚拟环境,然后cd .. cd ..返回项目目录
启动mitmdump,它是用来和python交互的
mitmdump -p 8889 -s test.py

"""

测试文件

# test.py
from mitmproxy import ctx  # 日志模快


# 下面是固定的写法,不这样写就抓不打数据包
def request(flow):
    # print(flow.request.headers)
    # ctx.log.info(str(flow.request.headers))
    # ctx.log.warn(str(flow.request.headers))
    # ctx.log.error(str(flow.request.headers))  # 获取请求头信息
    ctx.log.error(str(flow.request.url))  # 获取请求url
    # ctx.log.error(str(flow.request.host))  # 请求host
    # ctx.log.error(str(flow.request.method))  # 请求方法
    # ctx.log.error(str(flow.request.path))  # 请求路径

# 注意切换模拟器中的代理IP地址,若提示安装证书,直接安装就行
# 虚拟机 192.168.*.*	#ip地址在cmd中使用ipconfig可以查看本机IP地址
# 宿主机 100.86.150.102
# 安卓测试网址 http://httpbin.org/get
def response(flow):
    ctx.log.error(str(flow.response.status_code))  # 响应状态
    ctx.log.error(str(flow.response.text))  # 响应正文

你可能感兴趣的:(爬虫)