2015-10-05 51 views
0

我正在使用mitmproxy,並且我對它仍然相當陌生(已使用它幾天)。現在我試圖攔截get請求,並用「data:456」替換一個字符串的所有實例,例如「data:123」,然後恢復信息流,以便從應用程序中獲取特定響應。我已經到了成功攔截所需網址的地步,但我不明白如何創建腳本來替換「data:123」的所有實例,或者攔截時甚至可以這樣做。任何幫助表示讚賞!獲取請求看起來像這樣。替換所有實例的原因是因爲數據似乎多次(不必要地)?幾次,並且手動替換每個實例是不可行的。Mitmproxy:篡改獲取請求:在腳本請求中替換字符串「data:123」的所有實例

"text": { 
    "data": "123", 
    "size": 36, 
    "style": "bold", 
    "name": "text1", 
    "hOffset": 250, 
    "vOffset": 100, 
    "alignment": "center", 
    "onMouseUp": "sun1.opacity = (sun1.opacity/100) * 90;" 
} 
    "text": { 
    "data": "123", 
    "size": 36, 
    "style": "bold", 
    "name": "text1", 
    "hOffset": 250, 
    "vOffset": 100, 
    "alignment": "center", 
    "onMouseUp": "sun1.opacity = (sun1.opacity/100) * 90;" 
} 

請注意,我攔截的實際數據較大,並沒有很好地格式化,因此需要腳本。我已經通過https://github.com/mitmproxy/mitmproxy上的例子看過,但似乎沒有任何幫助我嘗試做的事情。

任何幫助和指導尋找我的問題的解決方案非常感謝!

回答

0

您可以在doc中給出的實現示例中的handle_requests方法中獲取和修改GET請求路徑。

def handle_request(self, flow): 
    request = flow.request 

    # --------------------------------- 
    # Play with the GET path with regex 
    # Add 'import re' 
    newPath = re.sub(r"data:123", "data:456", request.path) 
    # --------------------------------- 

    flow.request.path = newPath 
    flow.reply()