{"id":1303,"date":"2022-09-17T17:09:28","date_gmt":"2022-09-17T09:09:28","guid":{"rendered":"http:\/\/blog.xtaa.cn\/?p=1303"},"modified":"2022-09-17T17:09:28","modified_gmt":"2022-09-17T09:09:28","slug":"fiddler%e8%84%9a%e6%9c%ac","status":"publish","type":"post","link":"http:\/\/blog.xtaa.cn\/index.php\/2022\/09\/17\/fiddler%e8%84%9a%e6%9c%ac\/","title":{"rendered":"Fiddler\u811a\u672c"},"content":{"rendered":"\n<p>\u5199\u597d\u811a\u672c\u5219\u66f4\u80fd\u591f\u5e2e\u4f60\u6293\u53d6\u6570\u636e\u5230\u6587\u4ef6\u3001\u6570\u636e\u5e93\uff0c\u90e8\u5206\u5b9e\u73b0\u81ea\u52a8\u5316\uff0c\u751a\u81f3\u8fdc\u8d85\u4e00\u4e9b\u540c\u7c7b\u4e13\u4e1a\u4ea7\u54c1\u3002<\/p>\n\n\n\n<p>\u5e38\u89c4\u529f\u80fd<br>\u53ef\u4ee5\u7528\u6765\u6307\u5b9a\u6293\u53d6\u6240\u6709\u7684WEB\u901a\u8baf\uff0c\u4e5f\u53ef\u4ee5\u53ea\u6293\u53d6\u6307\u5b9a\u8fdb\u7a0b\u7684\u901a\u8baf\u3002<\/p>\n\n\n\n<p>File-Capture Traffic \uff1b Any Process \u6216\u62d6\u52a8\u9009\u5b9a\u8fdb\u7a0b\u7a97\u53e3<\/p>\n\n\n\n<p>2.\u53ef\u4ee5\u7528\u6765\u67e5\u770b\u4e00\u4e2aURL\u6253\u5f00\u540e\uff0c\u6d4f\u89c8\u5668\u4e0e\u540e\u7aef\u7684\u4ea4\u4e92<\/p>\n\n\n\n<p>3.\u53ef\u4ee5\u67e5\u770b\u4efb\u610f\u4e00\u4e2aHTTP\u4ea4\u4e92\uff0c\u770b\u8bf7\u6c42\u548c\u54cd\u5e94\u7684\u539f\u59cb\u62a5\u6587\uff0c\u5e2e\u52a9\u4f60\u4e86\u89e3HTTP\u534f\u8bae<\/p>\n\n\n\n<p>4.\u53ef\u4ee5\u8bbe\u7f6e\u4e30\u5bcc\u7684\u8fc7\u6ee4\u6761\u4ef6\uff0c\u786e\u4fdd\u805a\u7126<\/p>\n\n\n\n<p>5.\u53ef\u4ee5\u4ee5\u5404\u79cd\u5f62\u6001\u67e5\u770b\u6570\u636e\uff0c\u5e76\u63d0\u4f9b\u4e86\u5de5\u5177\u6765\u505a\u8f6c\u6362\u3010\u8fd9\u4e2a\u6bd4\u8f83\u4e30\u5bcc\uff0c\u4f46\u9690\u85cf\u8f83\u6df1\u3011<\/p>\n\n\n\n<p>6.\u53ef\u4ee5\u7f16\u5199\u811a\u672c\uff0c\u5b9e\u73b0\u5404\u4e2a\u9636\u6bb5\u7684\u5904\u7406<\/p>\n\n\n\n<p>\u53ef\u4ee5\u57fa\u4e8e\u7c7b\u4f3cWindows\u4e0b\u7684WScript\uff0c\u751a\u81f3\u4f7f\u7528\u4e00\u4e9bActiveX\u7ec4\u4ef6\u5b9e\u73b0\u5e76\u53d1\u673a\u5236\u3001\u901a\u8baf\u4e0e\u6570\u636e\u5b58\u50a8\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>OnBeforeRequest \u5728\u8bf7\u6c42\u53d1\u751f\u524d\u8c03\u7528\uff0c\u8bf7\u6c42\u7ecf\u8fc7Fiddler\u53d1\u9001\u7ed9\u670d\u52a1\u5668\u4e4b\u524d\u4f1a\u5148\u8c03\u7528\u8fd9\u4e2a\u51fd\u6570\uff0c\u56e0\u6b64\uff0c\u5982\u679c\u60f3\u8981\u4fee\u6539\u8bf7\u6c42\uff0c\u53ef\u4ee5\u5199\u5728\u8fd9\u4e2a\u51fd\u6570\u91cc<br>OnPeekAtResponseHeaders \u5728\u5934\u5230\u8fbe\u540e\u8c03\u7528<br>OnBeforeResponse \u5728\u5185\u5bb9\u5230\u8fbe\u540e\uff0c\u8fd8\u6ca1\u6709\u5904\u7406\u524d\u8c03\u7528\uff0c\u4ece\u670d\u52a1\u5668\u8bfb\u5b8c\u54cd\u5e94\u540e\uff0c\u4e14\u5728\u5c06\u54cd\u5e94\u53d1\u9001\u7ed9\u5ba2\u6237\u7aef\u4e4b\u524d\u6267\u884c\u7684\u3002\u901a\u8fc7\u4fee\u6539\u8fd9\u4e2a\u51fd\u6570\uff0c\u53ef\u4ee5\u4fee\u6539\u670d\u52a1\u5668\u7684\u54cd\u5e94\u5934\u6216\u8005\u54cd\u5e94\u4f53<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>\u628a\u7f51\u9875\u4e0a\u7684JSON\u6587\u4ef6\u4e0b\u8f7d\u5230\u672c\u5730<\/strong><\/p>\n\n\n\n<p>\u628a\u4ee5\u4e0b\u5185\u5bb9\u653e\u5165OnBeforeResponse\u91cc\u9762\uff0c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    if (m_Hide304s &amp;&amp; oSession.responseCode == 304) {\n        oSession&#91;\"ui-hide\"] = \"true\";\n    }\n\n    if (oSession.uriContains(\"https:\/\/www.tiktok.com\/api\/recommend\/item_list\/\")){\n        var strBodytk=oSession.GetResponseBodyAsString();\n        \/\/var spstk = oSession.PathAndQuery.slice(-58,);\n        \/\/FiddlerObject.alert(spstk)\n        var timestamptk=new Date().getTime();\n        var filenametk = \"D:\\\\tiktokzl\" + \"\\\/\" + timestamptk + \".json\";\n        \/\/var filename = \"D:\\\u6296\u97f3\u8bc4\u8bba\u8d44\u6599\" + \"\/\" + sps + timestamp + \".json\";\n        var curDatetk = new Date(); \n        var swtk : System.IO.StreamWriter; \n        if (System.IO.File.Exists(filenametk)){ \n            swtk = System.IO.File.AppendText(filenametk); \n            swtk.Write(strBodytk); \n        } \n        else{ \n            swtk = System.IO.File.CreateText(filenametk); \n            swtk.Write(strBodytk); \n        } \n        swtk.Close(); \n        swtk.Dispose(); \n\n    }<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>\u6293\u5230 \u8bf7\u6c42\u7684\u6570\u636e\u00a0 \u4fdd\u5b58\u672c\u5730txt \u6587\u4ef6\u91cc\u9762<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\u5c06\u4e0b\u4ee3\u7801\u00a0 \u7c98\u5230OnBeforeRequest \u7684\u51fd\u6570\u91cc\u5934<\/li><li><code>if<\/code>\u00a0<code>(oSession.fullUrl.Contains(\"\u586b\u5199\u9700\u8981\u6293\u53d6\u7684\u57df\u540d\")) {\u00a0\u00a0\u00a0\u00a0var<\/code>\u00a0<code>fso;\u00a0\u00a0\u00a0\u00a0var<\/code>\u00a0<code>file;\u00a0\u00a0\u00a0\u00a0fso =\u00a0new<\/code>\u00a0<code>ActiveXObject(\"Scripting.FileSystemObject\");\u00a0\u00a0\u00a0\u00a0\/\/\u6587\u4ef6\u4fdd\u5b58\u8def\u5f84\u53ef\u81ea\u5b9a\u4e49\u00a0\u00a0\u00a0\u00a0file = fso.OpenTextFile(\"\u586b\u5199\u4fdd\u5b58TXT\u6587\u4ef6\u5730\u5740\",8 ,true,\u00a0true);\u00a0\u00a0\u00a0\u00a0file.writeLine(\"Request url: \"<\/code>\u00a0<code>+ oSession.url);\u00a0\u00a0\u00a0\u00a0file.writeLine(\"Request header:\"<\/code>\u00a0<code>+\u00a0\"\\n\"<\/code>\u00a0<code>+ oSession.oRequest.headers);\u00a0\u00a0\u00a0\u00a0file.writeLine(\"Request body: \"<\/code>\u00a0<code>+ oSession.GetRequestBodyAsString());\u00a0\u00a0\u00a0\u00a0file.writeLine(\"\\n\");\u00a0\u00a0\u00a0\u00a0file.close();}<\/code><\/li><\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>\u81ea\u52a8\u5316\u6293\u53d6\u56fe\u7247\u5e76\u63d0\u51fa\u91cd\u590d\u7684<\/strong><br>static function FileExsitInDirectory(fso:Object, filename:String , dirpath:String )<br>{<br>var curPath = dirpath + &#8220;\/&#8221; + filename ;<br>var objset , objFolders , FolderName, ret;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    if (fso.FileExists(curPath)) \n    {\n        return  curPath;\n    }\n    else\n    {\n        var objset = fso.getFolder(dirpath);\n\n        var objFolders = objset.SubFolders;\n\n        var fenum = new Enumerator(objset.SubFolders); \n\n        for (var i = 0 ; !fenum.atEnd(); fenum.moveNext(),i++)\n        { \n\n            var FolderName = dirpath + \"\/\" + fenum.item().Name + \"\/\";\n\n            var ret = FileExsitInDirectory(fso, filename, FolderName);\n\n            if( ret != \"NULL\" ) \n            {\n                return ret\n            }                                   \n        } \n        return \"NULL\";  \n    } \n}<\/code><\/pre>\n\n\n\n<p>static function OnBeforeResponse(oSession: Session)<br>{<br>if (m_Hide304s &amp;&amp; oSession.responseCode == 304)<br>{<br>oSession[&#8220;ui-hide&#8221;] = &#8220;true&#8221;;<br>}<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    \/\/\u5982\u679c\u6765\u81ea\u6307\u5b9a\u7f51\u7ad9\uff0c\u4e14\u662fjpg\uff0c\u5219\u5199\u6587\u4ef6 image\/jpeg\n    if(\n        (oSession.RequestHeaders.AllValues(\"Host\").Contains(\".mm115.net\") ||\n        oSession.RequestHeaders.AllValues(\"Host\").Contains(\".jzsjwk.com\"))\n\n        &amp;&amp;\n        oSession.ResponseHeaders.AllValues(\"Content-Type\").Contains(\"image\/jpeg\") )\n    {      \n\n        var whindex = oSession.url.IndexOf ('?');           \n\n        if (whindex &lt;= 0)\n            whindex = oSession.url.Length;\n\n        var file_url = oSession.url.Substring (0,whindex);\n\n        whindex = oSession.url.IndexOf ('.jpg');            \n\n        if ((whindex &gt; 0) &amp;&amp; (oSession.GetResponseBodyAsString().Length &gt; 40000))\n        {\n            whindex = whindex+4;            \n\n\n            file_url = file_url.Substring (0,whindex).Replace ('\/','_').Replace('%','B').Replace('?','7').Replace('&amp;','-').Replace('img22.jzsjwk.com','img1.mm115.net');\n\n            var file_path  = \"d:\/PRVIT\/jpg\/\"+file_url;\n\n            try\n            {\n                var fso = new ActiveXObject(\"Scripting.FileSystemObject\"); \n\n                var retval = FileExsitInDirectory(fso,file_url,\"d:\/PRVIT\/jpg\/\");\n\n                FiddlerObject.log (retval);\n\n                if (\"NULL\" == retval)\n                {           \n                    var stream = new ActiveXObject('Adodb.Stream');  \n                    stream.Mode = 3;  \n                    stream.Open();  \n\n\n                    stream.Type = 1;  \n                    \/\/stream.Charset = 'unicode';  \n                    \/\/stream.WriteText(s);  \n\n                    stream.Position = 0;  \n                    stream.Type = 1;  \n                    \/\/stream.Position = 2;  \n                    \/\/var bs = stream.Read();  \n                    \/\/stream.Position = 0;  \n                    stream.Write(oSession.responseBodyBytes);  \n                    \/\/stream.SetEOS();  \n\n                    stream.SaveToFile(file_path,1);  \n\n                    stream.Close(); \n\n\n                    oSession&#91;\"ui-backcolor\"] = \"yellow\";\n                }\n                else\n                {\n                    oSession&#91;\"ui-strikeout\"] = \"true\";\n                    oSession&#91;\"ui-backcolor\"] = \"green\";\n                }\n\n            }\n            catch(err)\n            {\n                FiddlerObject.log (err.message);\n                oSession&#91;\"ui-backcolor\"] = \"red\";\n            }\n\n\n        }\n        else\n        {\n            oSession&#91;\"ui-color\"] = \"red\";\n        }\n\n    }\n\n\n\n\n\n}<\/code><\/pre>\n\n\n\n<p><strong>\u6293\u53d6\u5185\u5bb9\uff0c\u5e76\u5b58\u653e\u5230\u6570\u636e\u5e93<\/strong><br>var sql = &#8220;&#8221;;<br>try<br>{<br>var con =new ActiveXObject(&#8220;ADODB.Connection&#8221;);<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>            \/\/con.Provider=\"Microsoft.ACE.OLEDB.18.0\";\n\n\n\n            var rs=new ActiveXObject(\"ADODB.Recordset\");\n\n            \/**\n            Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Y:\/TEST\/fiddler_web_service_analysis.accdb;Persist Security Info=False;\n            **\/\n\n            \/\/var access_db_path = \"d:\/fiddler_web_service_analysis.accdb\" ;\n\n            \/\/con.ConnectionString=\"Data Source=\"+access_db_path;\n\n    \/\/ODBC DSN name ,config by windows odbc\n            con.open(\"DSN=db_hsb_vs_ahs;\") ;\n\n\n            \/\/FiddlerObject.alert(1);\n\n\n\n\n            sql = \"insert into  t_call_record (call_timestamp,request_send_timestamp,response_recv_timestamp,sitename,url,request,response,spend_second,content_type,content_length) values(\" +\n                strVar1(oSession.Timers.FiddlerBeginRequest) + \",\" +\n                strVar1(oSession.Timers.ClientDoneRequest) + \",\" +\n                strVar1(oSession.Timers.ServerDoneResponse) + \",\" +\n                strVar1(oSession.RequestHeaders.AllValues(\"Host\")) + \",\" +\n                strVar1(oSession.url.Substring (0,whindex)) + \",\" +\n                strVar1(oSession.RequestHeaders.ToString ()+oSession.GetRequestBodyAsString()) + \",\" +\n                strVar1(oSession.ResponseHeaders.ToString ()+oSession.GetResponseBodyAsString()) + \",\" +\n                etimes*1000  + \",\" +\n                strVar1(oSession.ResponseHeaders.AllValues(\"Content-Type\")) +\",\" +\n                oSession.ResponseHeaders.AllValues(\"Content-Length\")+0\n\n                +\");\";\n\n            \/\/FiddlerObject.alert(sql);\n\n            rs.open(sql,con);\n\n            oSession&#91;\"ui-color\"] = \"red\";\n\n            \/\/rs.close();\n            \/\/ rs=NULL;\n\n            con.close();\n            \/\/ con = NULL;\n\n\n\n        }\n        catch(exp)\n        {\n\n            var txt=\"Error description: \" + exp.message + \"\\n\\n\" + sql;\n            FiddlerObject.log(txt);\n            oSession&#91;\"ui-strikeout\"] = \"true\";\n\n        }<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\"><li>\u5728\u6b64\u5904\u3010\u91cd\u5b9a\u5411urlplace\u3011host\u548curl\u7684\u5224\u65ad<\/li><\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>  if(oSession.HostnameIs(\"host\") &amp;&amp; oSession.url.IndexOf(\"url_path\") &gt; -1){\n\t    oSession.hostname = \"api.mobile.xxx.com\"\n\t\t  }\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\"><li>\u5728\u6b64\u5904\u3010\u8bbe\u7f6e\u8bf7\u6c42\u7684header\u3011\uff0c\u6d4b\u8bd5\u7f51\u7edc\u722c\u866b\u65f6\u5019\u4f1a\u7528\uff0c<\/li><\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ TSET FOR Spider\uff1a \u6839\u636e\u7f51\u7ad9\u6765\u9650\u5b9a\u8bf7\u6c42\nif (oSession.HostnameIs(\"test.com\")) {\n    \/\/ \u6a21\u62df\u4fee\u6539\u8bf7\u6c42\u7684\u7528\u6237\u7aefip\uff0c\u8fd9\u79cd\u60c5\u51b5\u5bf9\u72ec\u7acb\u7684\u7f51\u7edc\u6709\u6548\uff0c\u5bf9\u4e8e\u516c\u53f8\u7ea7\u7684\u7f51\u7edc\uff0c\u8fd8\u662f\u6709\u4e00\u4e9b\u95ee\u9898\uff0c\u9700\u8981\u501f\u52a9vpn\n    oSession.oRequest&#91;\"X-Forwarded-For\"]=\"16.12.23.16\";\n    \/\/ \u4fee\u6539\u8bf7\u6c42\u7684header\n    oSession.oRequest&#91;\"User-Agent\"] = \"spider Mozilla\/5.0 (Windows NT 6.1; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/72.0.3626.81 Safari\/537.36 SE 2.X MetaSr 1.0\";\n\n}\n<\/code><\/pre>\n\n\n\n<p>2019.04.26 \u624b\u673a\u6a21\u62df\u6dfb\u52a0cookie\uff08\u533a\u522b\u4e8e\u79cdcookie \u5728onBeforeResponse\u91cc\uff09<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\u5220\u9664\u6240\u6709\u7684cookie&nbsp;<code>oSession.oRequest.headers.Remove(\"Cookie\");<\/code><\/li><li>\u65b0\u5efacookie&nbsp;<code>oSession.oRequest.headers.Add(\"Cookie\", \"username=testname;testpassword=P@ssword1\");<\/code><\/li><\/ul>\n\n\n\n<p>\u6ce8\u610f: Fiddler script\u4e0d\u80fd\u76f4\u63a5\u5220\u9664\u6216\u8005\u7f16\u8f91\u5355\u72ec\u7684\u4e00\u4e2acookie\uff0c \u4f60\u9700\u8981\u7528replace\u65b9\u6cd5\u6216\u8005\u6b63\u5219\u8868\u8fbe\u5f0f\u7684\u65b9\u6cd5\u53bb\u64cd\u4f5ccookie\u7684string<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if (oSession.HostnameIs(\"******\") &amp;&amp; oSession.oRequest.headers.Exists(\"Cookie\") ) {\n\n    var sCookie = oSession.oRequest&#91;\"Cookie\"]; \n    \/\/\u7528replace\u65b9\u6cd5\u6216\u8005\u6b63\u5219\u8868\u8fbe\u5f0f\u7684\u65b9\u6cd5\u53bb\u64cd\u4f5ccookie\u7684string\n    \/\/sCookie = sCookie.Replace(\"cookieName=\", \"ignoreme=\"); \n    sCookie = sCookie + \";tt_spver=1\";\n\n    oSession.oRequest&#91;\"Cookie\"] = sCookie; \n}\n\n\n\u5728\u6b64\u5904\u4fee\u6539response\u7684bady\u5185\u5bb9\u3010\u4f7f\u7528\u6b63\u5219\u5339\u914d\u65b9\u5f0f\u3011\n   if(oSession.HostnameIs(\"host\") &amp;&amp; oSession.url.IndexOf(\"url_path\") > -1){\n        \/\/ \u83b7\u53d6response\u4e2d\u7684body\u5b57\u7b26\u4e32\n        var strBody=oSession.GetResponseBodyAsString();\n        \/\/ \u7528\u6b63\u5219\u8868\u8fbe\u5f0f\u6216\u8005replace\u65b9\u6cd5\u53bb\u4fee\u6539string\n        var regx = '\"stream_mode\":\\d*?'\n        strBody=strBody.replace(regx,'\"stream_mode\":0');\n        \/\/ \u5f39\u4e2a\u5bf9\u8bdd\u6846\u68c0\u67e5\u4e0b\u4fee\u6539\u540e\u7684body               \n        FiddlerObject.alert(strBody);\n        \/\/ \u5c06\u4fee\u6539\u540e\u7684body\uff0c\u91cd\u65b0\u5199\u56deRequest\u4e2d\n        oSession.utilSetResponseBody(strBody);\n    }\n\u5728\u6b64\u5904\u4fee\u6539json\u4e2d\u7684\u6570\u636e\u3010\u4fee\u6539\u63a5\u53e3\u5b57\u6bb5\u7684\u503c\u3011\n    if(oSession.HostnameIs(\"host\") &amp;&amp; oSession.url.IndexOf(\"url_path\") > -1){\n        \/\/ \u83b7\u53d6Response Body\u4e2dJSON\u5b57\u7b26\u4e32\n        var responseStringOriginal =  oSession.GetResponseBodyAsString();\n        \/\/ \u8f6c\u6362\u4e3a\u53ef\u7f16\u8f91\u7684JSONObject\u53d8\u91cf\n        var responseJSON = Fiddler.WebFormats.JSON.JsonDecode(responseStringOriginal);\n        \/\/ \u4fee\u6539JSONObject\u53d8\u91cf\uff0c\u4fee\u6539\u5b57\u6bb5\u6570\u636e\n        responseJSON.JSONObject&#91;\"new_core\"] = \"True\";  \n        responseJSON.JSONObject&#91;\"stream_mode\"] = 5;\n        \/\/ \u91cd\u65b0\u8bbe\u7f6eResponse Body\n        var responseStringDestinal = Fiddler.WebFormats.JSON.JsonEncode(responseJSON.JSONObject);\n        oSession.utilSetResponseBody(responseStringDestinal);\n\t}\n\u5728\u6b64\u5904\u4fee\u6539json\u4e2d\u7684\u6570\u636e\u3010\u589e\u52a0\u63a5\u53e3\u5b57\u6bb5=\u503c\u3011\n    if(oSession.HostnameIs(\"host\") &amp;&amp; oSession.url.IndexOf(\"url_path\") > -1){\n        \/\/ \u83b7\u53d6Response Body\u4e2dJSON\u5b57\u7b26\u4e32\n        var responseStringOriginal =  oSession.GetResponseBodyAsString();\n        \/\/ \u8f6c\u6362\u4e3a\u53ef\u7f16\u8f91\u7684JSONObject\u53d8\u91cf\n        var responseJSON = Fiddler.WebFormats.JSON.JsonDecode(responseStringOriginal);\n        \/\/ \u4fee\u6539JSONObject\u53d8\u91cf\uff0c\u4fee\u6539\u5b57\u6bb5\u6570\u636e\n        responseJSON.JSONObject&#91;\"type_arr\"] = &#91;\"bullet\"];\n        \/\/ \u91cd\u65b0\u8bbe\u7f6eResponse Body\n        var responseStringDestinal = Fiddler.WebFormats.JSON.JsonEncode(responseJSON.JSONObject);\n        oSession.utilSetResponseBody(responseStringDestinal);\n        }\n\u4f7f\u6307\u5b9aURL\u652f\u6301CORS\u8de8\u57df\u8bf7\u6c42\u6709\u65f6\u5019\uff0c\u4f60\u8c03\u7528\u4e00\u4e2a json \u63a5\u53e3\uff0c\u53d1\u73b0\u8de8\u57df\u4e86\uff0c\u4f60\u9700\u8981\u53bb\u627e\u63a5\u53e3\u7684\u5f00\u53d1\u4eba\u652f\u6301\u8de8\u57df\uff0c\u663e\u7136\u50bb\u50bb\u7b49\u5f85\u540e\u7aef\u5f00\u53d1\u5b8c\u6bd5\u518d\u8054\u8c03\u662f\u4f4e\u6548\u7387\u7684\uff0c \u8fd9\u4e2a\u65f6\u5019\u5c31\u5c31\u8981\u5728\u540e\u53f0\u6539\u5b8c\u4e4b\u524d\u5c31\u81ea\u5df1\u5b9e\u73b0\u8de8\u57df\u7684\u6a21\u62df\uff0c\u6b64\u65f6 fiddler \u663e\u7136\u662f\u518d\u597d\u4e0d\u8fc7\u7684\u5229\u5668\u3002\u652f\u8981\u6301 CORS \u8de8\u57df\uff0c \u5c31\u662f\u8981\u4e3a\u8bf7\u6c42\u7684\u8fd4\u56de\u5934\u589e\u52a0 Access-Control-Allow-Origin \u5c5e\u6027\uff0c\u56e0\u6b64\u9700\u8981\u4fee\u6539 OnBeforeResponse\u51fd\u6570\uff0c\u5728\u8be5\u51fd\u6570\u7684\u672b\u5c3e\u6dfb\u52a0\u4f60\u7684 CORS \u903b\u8f91\n    static function OnBeforeResponse(oSession: Session) {\n        \t...\n\n        \tif(oSession.uriContains(\"\u8981\u5904\u7406\u7684url\")){\n        \t\toSession.oResponse&#91;\"Access-Control-Allow-Origin\"] =  \"\u5141\u8bb8\u7684\u57df\u540d\";\n        \t\toSession.oResponse&#91;\"Access-Control-Allow-Credentials\"] = true;\n        \t}\n    }\n\n\n\n\n\n\n\n\noSession\u5e38\u7528\u7684\u76f8\u5173\u5c5e\u6027\u548c\u65b9\u6cd5\n \/\/ \u4fee\u6539session\u4e2d\u7684\u663e\u793a\u6837\u5f0f\n oSession&#91;\"ui-color\"] = \"orange\";\n \/\/ \u79fb\u9664http\u5934\u90e8\u4e2d\u7684MQB-X5-Referer\u5b57\u6bb5\n oSession.oRequest.headers.Remove(\"MQB-X5-Referer\");\n \/\/ \u4fee\u6539http\u5934\u90e8\u4e2d\u7684Cache-Control\u5b57\u6bb5\n oSession.oRequest&#91;\"Cache-Control\"] = \"no-cache\";\n \/\/ \u4fee\u6539host\n oSession.host = \"example.domain\"; \n \/\/ \u4fee\u6539Origin\u5b57\u6bb5\n oSession.oRequest&#91;\"Origin\"] = \"http:\/\/domain\";\n \/\/ \u5220\u9664\u6240\u6709\u7684cookie\n oSession.oRequest.headers.Remove(\"Cookie\");\n \/\/ \u65b0\u5efacookie\n oSession.oRequest.headers.Add(\"Cookie\", \"username=cookiename;\");\n \/\/ \u4fee\u6539Referer\u5b57\u6bb5\n oSession.oRequest&#91;\"Referer\"] = \"https:\/\/yoururl\";\n \n \/\/ \u83b7\u53d6Request\u4e2d\u7684body\u5b57\u7b26\u4e32\n var strBody=oSession.GetRequestBodyAsString();\n \/\/ \u7528\u6b63\u5219\u8868\u8fbe\u5f0f\u6216\u8005replace\u65b9\u6cd5\u53bb\u4fee\u6539string\n strBody=strBody.replace(\"aaaa\",\"bbbbbb\");\n \/\/ \u5c06\u4fee\u6539\u540e\u7684body\uff0c\u91cd\u65b0\u5199\u56deRequest\u4e2d\n oSession.utilSetRequestBody(strBody);\n\/\/ \u5224\u65ad\u8fde\u63a5\u4e2d\u662f\u5426\u5305\u542b\u5b57\u7b26\u4e32str\noSession.uriContains(str)\n\/\/ \u7ed9\u8fde\u63a5\u8bf7\u6c42\u6dfb\u52a0\u4e00\u4e2a\u5b57\u6bb5TEST\noSession.oRequest&#91;\"TEST\"]=\"TEST NEW Request\";\n\n\n\n\n\n\u53ef\u53c2\u8003\nhttps:&#47;&#47;github.com\/gitjayzhen\/FiddlerUseScript<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u5199\u597d\u811a\u672c\u5219\u66f4\u80fd\u591f\u5e2e\u4f60\u6293\u53d6\u6570\u636e\u5230\u6587\u4ef6\u3001\u6570\u636e\u5e93\uff0c\u90e8\u5206\u5b9e\u73b0\u81ea\u52a8\u5316\uff0c\u751a\u81f3\u8fdc\u8d85\u4e00\u4e9b\u540c\u7c7b\u4e13\u4e1a\u4ea7\u54c1\u3002 \u5e38\u89c4\u529f\u80fd\u53ef\u4ee5\u7528\u6765\u6307\u5b9a\u6293 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-1303","post","type-post","status-publish","format-standard","hentry","category-11"],"_links":{"self":[{"href":"http:\/\/blog.xtaa.cn\/index.php\/wp-json\/wp\/v2\/posts\/1303","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.xtaa.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.xtaa.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.xtaa.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.xtaa.cn\/index.php\/wp-json\/wp\/v2\/comments?post=1303"}],"version-history":[{"count":0,"href":"http:\/\/blog.xtaa.cn\/index.php\/wp-json\/wp\/v2\/posts\/1303\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.xtaa.cn\/index.php\/wp-json\/wp\/v2\/media?parent=1303"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.xtaa.cn\/index.php\/wp-json\/wp\/v2\/categories?post=1303"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.xtaa.cn\/index.php\/wp-json\/wp\/v2\/tags?post=1303"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}