/
Class1_REMOTE_562.cs
127 lines (98 loc) · 3.84 KB
/
Class1_REMOTE_562.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using Fiddler;
using System.Windows.Forms;
using System.Web;
using System.IO;
using System.IO.Compression;
using Newtonsoft.Json.Linq;
[assembly: Fiddler.RequiredVersion("2.3.5.0")]
namespace DCviewer
{
public class Violin : IAutoTamper // Ensure class is public, or Fiddler won't see it!
{
string sUserAgent = "";
ViewPanel oView;
public showErrorForm showErrorForm = new showErrorForm();
//TabPage oPage = null;
public Violin()
{
/* NOTE: It's possible that Fiddler UI isn't fully loaded yet, so don't add any UI in the constructor.
But it's also possible that AutoTamper* methods are called before OnLoad (below), so be
sure any needed data structures are initialized to safe values here in this constructor */
sUserAgent = "Violin";
oView = new ViewPanel(); //UserControl1 is a Windows Forms UserControl class
}
//Required Function
public void OnLoad()
{
//oPage.ImageIndex = (int)SessionIcons.Timeline; //This sets the Icon image used in the tab
oView.Dock = DockStyle.Fill;
TabPage oPage = new TabPage("DCviewer");
oPage.Controls.Add(oView);
FiddlerApplication.UI.tabsViews.TabPages.Add(oPage);
}
//Required Function
public void OnBeforeUnload()
{
}
public void AutoTamperRequestBefore(Session oSession)
{
string url = oSession.fullUrl;
if (url.Contains("log.dc.cn"))
{
oSession.oRequest["User-Agent"] = sUserAgent;
}
}
public void AutoTamperRequestAfter(Session oSession)
{
//防止刚打开fiddler时,有数据进来但窗口还没初始化完成
while (!oView.IsHandleCreated)
{
;
}
oView.Invoke(new EventHandler(delegate
{
JArray jsons = new JArray();
string url = oSession.fullUrl;
if (url.Contains("log.dc.cn"))
{
string body = oSession.GetRequestBodyAsString();
try
{
body = HttpUtility.UrlDecode(body);
body = Lis2013HISWSTest.ZipHelper.GZipDecompressString(body);
body = body.Trim();
}
catch
{
showErrorForm.setErrorTextToRich("body解码 报错:\n");
showErrorForm.Show();
showErrorForm.TopMost = true;
}
if (body.Length > 10)
{
try
{
body = HttpUtility.UrlDecode(body);
body = body.Substring(13, body.Length - 14);
jsons = JArray.Parse(body);
}
catch
{
showErrorForm.setErrorTextToRich("body转JArray 报错:\n" + body);
showErrorForm.Show();
showErrorForm.TopMost = true;
}
oView.addData(jsons);
}
}
}));
}
public void AutoTamperResponseBefore(Session oSession) { }
public void AutoTamperResponseAfter(Session oSession) { }
public void OnBeforeReturningError(Session oSession) { }
}
}