【问题标题】:How can i edit a HTTP a request C# using fiddlercore如何使用 fiddlercore 编辑 HTTP 请求 C#
【发布时间】:2012-12-14 09:27:06
【问题描述】:

我希望能够做的:在将 HTTP 请求发送到服务器之前对其进行编辑

用户在浏览器中导航到他们选择的网页 > 他们遇到想要编辑的请求 > 他们编辑请求,然后将其发送到服务器而不是原始请求。

到目前为止我所做的:我已经捕获了请求,现在我需要帮助找到代码来编辑它。这是我到目前为止捕获请求的代码:

    Fiddler.FiddlerApplication.BeforeRequest += sess =>
    {
        //Code to detect user specified URL here
    }

我是否可以在实际发送请求之前对其进行编辑?如果只能使用 FiddlerCore API 来完成,我将不胜感激,但如果需要,我愿意下载更多二进制文件。

附加说明:我尝试过流式写入器,二进制写入器,将响应复制到内存流中编辑它然后将其复制回来,这些方法都不适合我。此外,当我尝试一些方法时,我的应用程序只是挂起并且不响应按下 X 之类的操作。

也许我只是不擅长解释我想要实现的目标,这似乎是我一直以来关于响应的唯一好答案:/

如果请求读取字符串“hello world”,那么我希望用户能够将请求更改为“hello there”

【问题讨论】:

    标签: c# http networking post request


    【解决方案1】:

    我犯了一个如此愚蠢的错误,我以为 RequestBody 是只读的!原来我可以像这样简单地编辑响应:

        session.RequestBody = myBytes;
    

    为此我真的很生气!

    【讨论】:

      【解决方案2】:

      在demo应用中,添加代理如图:

          Fiddler.FiddlerApplication.BeforeResponse += delegate(Fiddler.Session oS) {
              // Console.WriteLine("{0}:HTTP {1} for {2}", oS.id, oS.responseCode, oS.fullUrl);
      
              // Uncomment the following two statements to decompress/unchunk the
              // HTTP response and subsequently modify any HTTP responses to replace 
              // instances of the word "Microsoft" with "Bayden". You MUST also
              // set bBufferResponse = true inside the beforeREQUEST method above.
              //
              //oS.utilDecodeResponse(); oS.utilReplaceInResponse("Microsoft", "Bayden");
          };
      

      【讨论】:

      • 抱歉,我看到这里说修改 HTTP 响应,我正在尝试修改请求。
      • 感谢您的帮助,现在可以使用了,我觉得这是一个合适的工具!我认为这样做的明显方式是只读的.. facepalm
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多