Fiddler:如何读取本地文件修改Request参数

来源:互联网 发布:华云数据待遇如何知乎 编辑:程序博客网 时间:2024/06/02 02:29

我将在学习Fiddler的路上,一路狂奔……

这里写图片描述

需求:读取本地文件,修改request的值

第一步:读取本地文件的方法

class Handlers{    ……    //读取本地文件的方法    static function readFile(filename)    {        //TODO:目前只支持了英文读写,后续需要支持中文        //FiddlerObject.alert("readFile");        var fso = new ActiveXObject("Scripting.FileSystemObject");        var f = fso.OpenTextFile(filename,1);        var s = "";        while (!f.AtEndOfStream)            s += f.ReadLine()+"\n";        f.Close();    //  FiddlerObject.alert(s);        return s;    }    ……}

知识点解析:

FileSystemobject

要在javascript中实现文件操作功能,主要就是依靠FileSystemobject对象。
var fso = new ActiveXObject(“Scripting.FileSystemObject”);

OpenTextFile

OpenTextFile 方法打开指定的文件,并返回可用来访问此文件的 TextStream 对象。
语法:
FileSystemObject.OpenTextFile(fname,mode,create,format)

参数 描述 fname 必需的。要打开的文件的名称。 mode 可选的。如何打开文件。 1=ForReading - 打开文件用于读取数据。您无法向此文件写数 2=ForWriting - 打开文件用于写数据。 8=ForAppending - 打开文件,并向文件的末尾写数据。 create 设置如果文件名不存在,是否创建新文件。True 指示可创建新文件,而 False 指示新文件不会被创建。False 是默认的。 format 可选的。文件的格式。 0=TristateFalse - 以 ASCII 打开文件。默认。 -1=TristateTrue - 以 Unicode 打开文件。 -2=TristateUseDefault - 使用系统默认格式打开文件。

var f = fso.OpenTextFile(filename,1);
打开filename文件用于读取数据,仅仅是读取数据。

AtEndOfStream

TextStream的属性
如果文件指针位于 TextStream 文件的末尾,AtEndOfStream 属性返回 True ,否则返回 False 。
注释:此属性仅工作于以只读方式打开的 TextStream 对象。

第二步:在OnBeforeRequest方法中调用readFile方法,获得文件内容,修改request的body

class Handlers{    ……        static function readFile(filename){        }        static function OnBeforeRequest(oSession: Session) {            ……            // 1. 匹配 url.                    if (oSession.HostnameIs("sdk.api.kaffnet.com") && oSession.uriContains("/v4/m.php")) {            oSession["ui-color"] = "orange";            // 2. 替换 request body             var body = oSession.GetRequestBodyAsString();            var string = readFile("D:\\jiemi_sdk.txt");            body = string;        //  FiddlerObject.alert(string);            oSession.utilSetRequestBody(body);        }            ……        }    ……}

就这样两步就实现了读取本地文件修改Request参数。可以举一反三,实现读取本地文件修改Response参数,你知道怎么做吗?