Fiddler - 发送代理客户端的请求

时间:2016-09-22 17:01:20

标签: fiddler jscript

我将Fiddler配置为反向代理,以便充当客户端和服务器之间的中间人。我有一个自定义规则,它会在给定特定响应的情况下从代理发送请求:

static function OnBeforeResponse(oSession: Session) {
    ...
    if (oSession.uriContains("something.aspx")) {

        var request = "..."
        FiddlerObject.utilIssueRequest(request);
    }
...
}

有没有办法将utilIssueRequest发出的请求路由回客户端机器?

2 个答案:

答案 0 :(得分:1)

你可以,但这样做非常复杂。通常,您只需修改OnBeforeRequest处理程序内的请求,以便URL / Host标头指向新目标服务器。

答案 1 :(得分:0)

我道歉 - 我的问题最终需要比我在询问时所知道的更多细节。如果有人有兴趣,我用这个奇怪的方法解决了这个问题:

拓扑:Windows客户端 - > Windows客户端上的Fiddler代理 - >中间人的提琴手反向代理 - > Windows Server

Windows客户端CustomRules.js中的代码:

static function OnBeforeResponse(oSession: Session) {

    //intercept response containing prefetch material
    if (oSession.uriContains("some_response")) {

        //parse response body for some prefetch info
        ...

        //compose request
        var request = "POST " + uri + " HTTP/1.1" + "\n" +
        "X-FiddlerOpt: test\n" +
        ...

        //send off to server
        FiddlerObject.utilIssueRequest(request);  
    }


    //detect the prefetch response, send to client 
    if (oSession.oRequest.headers.Exists("X-FiddlerOpt")) {

        oSession.utilDecodeResponse();
        var payload = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes);;

        //compose request
        var request = "GET " + "http://windows_client:8888/ HTTP/1.1" + "\n" +
        "Content-Length: " + payload.length + "\n" +
        "X-FiddlerPrefetch: test\n" +
        "\n" +
        payload

        //send request
        FiddlerObject.utilIssueRequest(request); 
    }
...

中间人CustomRules.js中的代码:

brew install llvm

我确信有更简单或更好的方法可以做到这一点,欢迎任何反馈。