GoReplay中間件python版本使用教程
GoReplay的middlware原理
中間件是一個程序,它在 STDIN 上接受請求和響應負載,并在 STDOUT 上發(fā)出修改后的請求。您可以實現(xiàn)任何自定義邏輯,例如剝離私有數(shù)據(jù)、高級重寫、支持 oAuth 等。
中間件可以用任何語言編寫,請參閱examples/middleware文件夾中的示例。
中間件程序應該接受這樣一個事實:所有與 Gor 的通信都是異步的,不能保證原始請求和響應消息會相繼到來。如果邏輯依賴于原始或重播的響應,您的應用程序應該處理狀態(tài),請參見examples/middleware/token_modifier.go示例。
python版本環(huán)境搭建
python環(huán)境安裝
首先安裝python環(huán)境,由于版本 v0.2.x 不再支持 Python2.7 和 Python3.4,因此支持的最低 Python 版本為 3.5.2。此外,v0.1.x 版本仍然兼容 Python2.7 和 Python3.4。“
python版本,建議使用3.5.2以上版本。我這里演示用的Python 3.9.6
安裝好python環(huán)境后,使用python3 -V查看自己的版本號,出現(xiàn)版本號說明環(huán)境已經(jīng)安裝完成
gor庫環(huán)境安裝
在python環(huán)境中使用pip3命令安裝gor庫,gor版本建議下載最新版,我這里用的是gor 0.2.3版本
pip3 install gor
如果需要使用虛擬環(huán)境,需要先進入虛擬環(huán)境再安裝,pycharm自帶了虛擬環(huán)境,如果當面文件存在venv文件夾說明已有虛擬環(huán)境,進入自帶的虛擬環(huán)境安裝
source venv/bin/activate
看到前面出現(xiàn)venv,說明成功進入虛擬環(huán)境
在python中導入gor庫,沒有報錯說明gor庫環(huán)境安裝完成
from gor.middleware import AsyncioGor
python代碼編寫
首先導入gor庫
from gor.middleware import AsyncioGor
然后在代碼內定義三個函數(shù),分別負責請求,響應,重播的處理
以下是一個簡單的demo,具體的使用可以查看官方文檔,gor官網(wǎng)文檔
# coding: utf-8
import sys
from gor.middleware import AsyncioGor
def on_request(proxy, msg, **kwargs):
proxy.on('response', on_response, idx=msg.id, req=msg)
def on_response(proxy, msg, **kwargs):
proxy.on('replay', on_replay, idx=kwargs['req'].id, req=kwargs['req'], resp=msg)
def on_replay(proxy, msg, **kwargs): # do anything you want with msg
# msg is a GorMessage object
passif __name__ == '__main__':
proxy = AsyncioGor()
proxy.on('request', on_request)
proxy.run()具體代碼細節(jié)實現(xiàn),代碼里實現(xiàn)了三個函數(shù)分別處理請求、響應、重播等
請求部分,對請求進行重寫消息頭,body,param參數(shù)等,把處理完的請求url的數(shù)量
響應部分,對響應進行判斷,狀態(tài)碼是否等于200,等于200的記錄url的數(shù)量記錄到日志,不等于200的url,req,res記錄到日志
重播部分,對重播進行判斷,狀態(tài)碼是否等于200,等于200的記錄url的數(shù)量記錄到日志,不等于200的url,req,res記錄到日志使用命令啟動python的middleware
goreplay中間件使用
中間件跟命令結合使用,先后順序為,先中間件處理,處理完再使用命令進行過濾,過濾的命令應該是中間件處理完的數(shù)據(jù),具體順序如下
需要同時處理req、res、rep,可以使用如下命令
sudo gor --input-raw :5000 --output-file 'test.gor' --output-stdout --middleware 'python3 middleware.py' --output-http-track-response --input-raw-track-response
到此這篇關于GoReplay中間件python版本使用的文章就介紹到這了,更多相關GoReplay中間件python使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
基于Python?pathlib庫的路徑/文件/目錄常用操作
pathlib 模塊提供了文件路徑對象抽象,不僅僅是替換os.path模塊對文件的操作,可以說是路徑處理的好手,這篇文章主要介紹了基于Python?pathlib庫的路徑/文件/目錄常用操作的相關資料,需要的朋友可以參考下2025-12-12
pyinstaller?pathex參數(shù)引發(fā)打包no?module?name異常
這篇文章主要為大家介紹了一個關于pyinstaller的?pathex?參數(shù)所引發(fā)的打包執(zhí)行報no?module?name的異常錯誤解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05
實例講解Python腳本成為Windows中運行的exe文件
在本篇文章里小編給大家分享了關于Python腳本成為Windows中運行的exe文件的相關知識點內容,有興趣的朋友們學習下。2019-01-01

