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、修改cookiefrom 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 背景 我們不是牛逼的程式設計師,我們只是程式開發中的墊腳石。我們不傳送紅包,...