使用mitmproxy更改請求返回數據(mock server)

今天給大家介紹一下mitmproxy 這個工具的其中一個用法,當你的前端需要請求數據,但是後端的代碼還沒有寫完,這時候,需要測試前端的頁面以及在需要第三方接口的返回數據,而在測試環境沒有返回數據,這時候我們需要mock第三方的返回的數據,就可以用到下面的方法了~

前提條件:

瀏覽器中安裝了mitmproxy

電腦中安裝了mitm.it 證書

 

1.pyhon中引入包mitmproxy

2.編寫python文件 addons.py

from mitmproxy import ctx
import json,os

class ModifyResponse:
    def response(self,flow):
        #攔截指定的url
        if flow.request.url.startswith("https://XXX/cboss/collection-robot/list/words-template"):
            #返回數據json,絕對路徑
            with open('/Users/hairuwang/PycharmProjects/mitm-intercept/mitm/words-template.json','rb') as f:
                res = json.load(f)
            #設置返回數據
            flow.response.set_text(json.dumps(res))
            #log中打印
            ctx.log.info('modify words-template response')

addons = [
    ModifyResponse()
]

 

3.根據你要mock的接口的返回數據,修改爲你自己需要的數據 ,我們返回數據用json爲例:

返回json文件supplier.json:

{
    "code":"SUCCESS",
    "message":"SUCCESS",
    "data":[
        {
            "name":"SHOPINTAR_Tomorrow",
            "id":"10356"
        },
        {
            "name":"SHOPINTAR_Tomorrow_new",
            "id":"10370"
        },
        {
            "name":"SHOPINTAR_Remind_new",
            "id":"10467"
        },
        {
            "name":"Kredit_Pintar_Remind",
            "id":"10493"
        }
    ]
}

4.運行:

mitmweb -s /Users/hairuwang/PycharmProjects/mitm-intercept/mitm/addons.py

這樣就可以攔截到請求的url,從而篡寫他的返回數據了~ 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章