[Fiddler] FiddlerScript を使用して、自作関数やいくつかの基本的なユーティリティ関数を実現します。


序文

关于FS

Fiddler は私たちにとって馴染みのあるパケット キャプチャ ソフトウェアですが、FiddlerScript の基本について説明している人は少ないため、ここでは FiddlerScript の自作関数の使用方法について簡単に説明したいと思います。


FS功能实现

1. FiddlerScript とは何ですか?

FiddlerScript は Fiddler によって提供される Jscript スクリプトです。Fiddler のベースを拡張して、他のより強力な関数を実装してみましょう。この記事では主に、Fiddler がリクエストを選択した後にカスタム関数の拡張を実現するための Fiddler の Jscript スクリプトの書き方を紹介します。この記事で言及されていない内容については、C# の関連コードを参照することもできます。

2、コード部分

コード部分を紹介する前に、Session が何であるかを理解する必要があります。私の考えでは、これは選択されたリクエストの応答です。oSession: Session[] は、選択されたリクエストの一部の配列です。私たちは勉強するときにこれに暫定的に同意しますが、実際にはほとんど同じです。次に具体的なコードを紹介します。

1. カスタム関数の関数名

コードは以下のように表示されます。

public static ContextAction("自定义功能")
    function Function_name(oSessions: Session[]) {
    
    
	//内部实现
    }

ContextAction はカスタム関数名を追加するもので、Function_name はカスタム関数名です。
前者はテキストの表示用であり、後者は Fiddler の関数参照用であるため、oSessions のみが同じ 1 つの入力パラメータを持つ場合、関数に繰り返し名前を付けることはできません (Function_name)。


2. セッショントラバーサルの実装

コードは以下のように表示されます。

if (oSessions.Length == 0) return;
//判断请求是否为空
for (var x:int = 0; x < oSessions.Length; x++)
{
    
    
    if()
    {
    
    
        var selected_1: Session = oSessions[x];         
    }
    else if()
    {
    
    
        var selected_2: Session = oSessions[x];
    }
}   

コードの説明:
まず、選択されたリクエストが空かどうかを判断し、空の場合は次の操作は実行されません。
for ループは最も基本的なトラバーサル方法であり、if 判定ステートメントと連携して、必要なセッションをフィルターで除外し、選択したセッション情報を割り当てて、完了する必要がある次の操作を容易にします。


3. 再送信リクエストを認識し、新しいリクエストを選択します

コードは以下のように表示されます。

var oSD = new System.Collections.Specialized.StringDictionary();
var res = FiddlerApplication.oProxy.SendRequestAndWait(selected.oRequest.headers, selected.RequestBody, oSD, null);

SendRequestAndWait は再送リクエストを実現する関数で、直接実装して res に代入することもできますし、別途リクエストを再送信してから res に代入することもできます。ここでは、リクエスト再送後の新規リクエストをresに直接代入しています。最も重要な部分は最初の 2 つのパラメータです。最初のパラメータは再送信するリクエストのヘッダー、2 番目のパラメータは再送信するリクエストの RequestBody です。


4. よく使われるFS機能

FiddlerObject.alert("显示内容");
//FIDDLER弹窗显示
FiddlerObject.prompt("内容提示","默认内容","窗口提示");
//FIDDLER输入参数,可用来赋值给变量
oSessions[x].fullUrl.Contains("TEXT");
//某请求的URL中是否含有TEXT,若有返回true,没有返回false
selected.GetResponseBodyAsString();
//获取请求的ResponseBody
selected.PathAndQuery
//仅获取响应的路径

関数が多すぎます。ここでは、一般的に使用される例をいくつか示します。さらに詳しく知りたい場合は、Fiddler の ClassView を使用して必要なものを表示できます。


5. フィドラーの遅延

C# の遅延関数は Thread.Sleep ですが、この関数はスレッドを一時停止することで遅延を実装するため、プログラムがフリーズします。そして多くの場合、フリーズしないマルチスレッドまたはシングルスレッドの方法で遅延を完了する必要があります。つまり、この遅延によってプログラムが応答しなくなることは望ましくありません。しかし、インターネット上には FS の遅延関数の実装に関するコンテンツがほとんどなく、インターネット上で提供されている C# のノンスタック遅延関数は CV から Fiddler へ直接使用できないようなので、ここで完璧なものを提供します。 FS.タイムコードにディレイ機能を実装。コードは以下のように表示されます。

var TIMEWAIT = 1000;
//延时1000ms,也就是1s
var timestart = System.Environment.TickCount;
while((System.Environment.TickCount - timestart) < TIMEWAIT)
{
    
    
	Application.DoEvents();
} 

このうち、TIMEWAIT は遅延する必要がある時間 (ミリ秒) です。


要約する

この記事では、FiddleScript を使用して応答を選択して完了するカスタム関数を実現する方法を簡単に紹介します。実現したい特定の関数の種類は常に変化するため、独自のニーズに応じて対応するコードを記述する必要があります。この記事はここにあります。ご覧いただきありがとうございます。

おすすめ

転載: blog.csdn.net/weixin_57807777/article/details/128191518