mitmproxy使用 二 自定義指令碼編寫

2021-09-12 01:57:33 字數 3021 閱讀 3608

1、指令碼編寫的兩個條件

from mitmproxy import http, ctx

import json

class ***:

def ***:

def ***

addons = [

***() //類名的載入,也可以定義多個類,然後以陣列的形式新增,進行載入

]

2、事件

2.1、針對http請求的生命週期

3、客戶端請求修改

3.1、修改請求針對網域名稱,替換請求鏈結。

from mitmproxy import ctx, http

import json

class modify:

def request(self, flow):

#替換請求鏈結

if flow.request.url.startswith(""):

#有分享

flow.request.url = ""

ctx.log.info("修改鏈結")

addons = [

modify()

]

3.2、修改cookie
from mitmproxy import ctx, http

import json

class modify:

def request(self, flow):

#替換cookie,兩種匹配請求鏈結的方式

# if flow.request.host == "***.x.***.com.cn":

if flow.request.url.startswith(""):

print(flow.request.url)

print(flow.request.cookies)

flow.request.cookies["_testcookie1"] = "***-91"

flow.request.cookies["testcookie2"] = "123"

req = flow.request.cookies["_testcookie1"]

ctx.log.info(req)

addons = [

modify()

]

3.3、修改請求引數
from mitmproxy import ctx, http

import json

class modify:

def request(self, flow):

if flow.request.url.startswith(""):

ctx.log.info("modify request form")

if flow.request.urlencoded_form:

flow.request.urlencoded_form["code"] = "11111"

else:

flow.request.urlencoded_form = [

("actid", "20727"),("nick","name")

]addons = [

modify()

]

4、響應修改

4.1、修改響應的狀態碼

from mitmproxy import ctx, http

]

4.2、修改響應的訊息體-直接修改響應字段
from mitmproxy import ctx, http

import json

class modify:

def response(self, flow):

if flow.request.url.startswith("activityinfo/getprizeinfo=="):

//獲取響應的json字串,轉成python物件進行解析和修改

response = json.loads(flow.response.get_text())

response['limitcount'] = 1

//修改完成後,獎python物件轉成json字串,set進請求的響應體重傳送給客戶端

flow.response.set_text(json.dumps(response))

ctx.log.info('modify limitcount')

addons = [

modify()

]

4.3、修改響應的訊息體-通過讀取json檔案的字串返給客戶端
from mitmproxy import ctx, http

import json

class modify:

def response(self, flow):

if flow.request.url.startswith("activityinfo/getprizeinfo=="):

//讀取檔案,在當前檔案路徑下執行指令碼,否則需要寫檔案的絕對路徑;不然會找不到該json檔案

with open('getstatus.json','rb') as f:

//從json檔案中讀取資料成python物件

res = json.load(f)

//將讀取的python物件轉成json字串傳送給客戶端

flow.response.set_text(json.dumps(res))

ctx.log.info("modify order status")

addons = [

modify()

]

自定義控制項7 自定義屬性二

問題1 format reference color 比如自定義乙個按鈕,背景有可能是顏色也有可能是,該如何去獲取該屬性?問題2 typedvalue是什麼鬼東西?問題3 getfraction index,base,pbase,defvalue 中的第2,3個引數是幹什麼的?我的解決方法 if a...

mapreduce自定義分組 自定義分割槽 二次排序

mapreduce中二次排序的思想中,我們常常需要對資料的分割槽分組進行自定義,以下就介紹一下自定義分割槽分組的簡單實現 1 自定義分割槽 public class demopartitionerextends partitioner return 4 要注意的是 設定了分割槽之後,reduce任務...

自定義樣式View 二 自定義Button

android中自帶的 button 樣式比較醜,為了美化 button 可使用一下方法。實現效果如下 自定義 button 實現效果 1.自定義button 背景選擇器 2.自定義buton 素材 3.自定義button 背景 我們不是牛逼的程式設計師,我們只是程式開發中的墊腳石。我們不傳送紅包,...