我从一个我想与FiddlerCore解析的网站上得到了一个奇怪的答复。在chrome开发人员工具中,如果我检查响应,则看起来是完全正常的,而在fiddler中则不是。代码片段如下(过去工作正常)

String html = oSession.GetResponseBodyAsString();

返回以下内容(不是html),请注意,这是一个示例,而不是完整的巨大字符串。
JRHwJNeR\0���\0\0\u0001��D\0�2�\b\0�\u0016�7]<!DOCTYPE html>\n win\">

它也到处都是“\n”和html
\n\n\n\n\n  \n    <meta name=\"treeID\" content=\"dwedxE+pgRQAWIHiFSsAAA==\">\n

响应头如下:
Cache-Control:no-cache, no-store
Connection:keep-alive
Content-Encoding:sdch, gzip
Content-Language:en-US
Content-Type:text/html;charset=UTF-8
Date:Fri, 28 Oct 2016 10:17:02 GMT
Expires:Thu, 01 Jan 1970 00:00:00 GMT
Pragma:no-cache
Server:Apache-Coyote/1.1
Set-Cookie:lidc="b=VB87:g=518:u=60:i=1477649823:t=1477731496:s=AQG-LTdly5mcIjAtiRHIOrKE1TiRWW-l"; Expires=Sat, 29 Oct 2016 08:58:16 GMT; domain=.thedomain.com; Path=/
Set-Cookie:_lipt=deleteMe; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/
Strict-Transport-Security:max-age=0
Transfer-Encoding:chunked
Vary:Accept-Encoding, Avail-Dictionary
X-Content-Type-Options:nosniff
X-Frame-Options:sameorigin
X-FS-UUID:882b3366afaa811400a04937a92b0000
X-Li-Fabric:prod-lva1
X-Li-Pop:prod-tln1-scalable
X-LI-UUID:iCszZq+qgRQAoEk3qSsAAA==
X-XSS-Protection:1; mode=block

fiddler 启动代码:
  Fiddler.FiddlerApplication.AfterSessionComplete += FiddlerApplication_OnAfterSessionComplete;
   Fiddler.FiddlerApplication.BeforeResponse += delegate(Fiddler.Session oS) {
         oS.utilDecodeResponse();
   };

    Fiddler.FiddlerApplication.Startup(0, FiddlerCoreStartupFlags.Default);


  }

最初我以为它是分块的/压缩的,所以我添加了utilDecodeResponse();到onBeforeResponse无效!

只是为了涵盖所有基础,我还尝试过以偶然的机会手动解码UTF-8,Unicode,Bigendian等中的responseBodyBytes,响应内容类型不正确并且禁用了javascript,并加载了页面以证明它不是一些时髦的模板没事,这也没什么区别。

有任何想法吗?

更新:

根据Developer&NineBerry在下面提供的信息,解决方案如下:

为了防止响应被SDCH编码,您可以添加一个处理程序,如下所示:
    Fiddler.FiddlerApplication.BeforeRequest += delegate (Fiddler.Session oS)
    {
        oS.oRequest["Accept-Encoding"] = "gzip, deflate, br";
    };

应当指出,这并不适合所有情况,因为您是手动设置 header ,而不是先检查是否存在SDCH,然后再将其删除,但出于我的目的,这很好,但是要使用Fiddler的常规代理功能,您可以在这里想要更多的逻辑。

最佳答案

内容编码显示为SDCH-共享字典压缩;因此在这种情况下,无法以UTF-8,Unicode,Bigendian等手动解码responseBodyBytes。

您可以在此处找到有关SDCH的更多详细信息-SDCH Ref 1SDCH Ref 2

来自上述网站的摘录:

关于c# - FiddlerCore解码sdch响应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40303374/

10-13 23:40