-
Notifications
You must be signed in to change notification settings - Fork 3
/
hsb_vs_ahs.js
293 lines (224 loc) · 11.6 KB
/
hsb_vs_ahs.js
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
static function strVar1(var1:String)
{
return "\"" + var1.Replace('\\','\\\\').Replace('\"','\\\"').Replace ('\n','\\n').Replace('\r','\\r').Replace('\'','\\\'') + "\"";
}
static function OnBeforeResponse(oSession: Session)
{
if (m_Hide304s && oSession.responseCode == 304)
{
// I don't know this meaning ... so baidu it
// https://www.cnblogs.com/hushaojun/p/6944962.html
/**
ui-hide
Hide the session from the Session List.
The session will continue to run.
Breakpoints on hidden sessions are ignored.
Note: hiding a session will free up the memory that would otherwise be used to hold the session data in memory.
ui-color
The value of this flag determines the font color used to render this session in the Session List.
ui-backcolor
The value of this flag determines the background color used behind this session's entry in the Session List.
ui-bold
If present, this session's entry will be bolded in the Session List.
ui-italic
If present, this session's entry will be italicized in the Session List.
ui-strikeout
If present, this session's entry will be struck out in the Session List.
ui-customcolumn
The value of this flag is shown in the Fiddler Session List's "User-defined" column.
ui-comments
The Comment, if any, which the user set on this session.
**/
oSession["ui-hide"] = "true";
}
// store beauties
var img_dir = "y:/PRVIT/";
// if content-type is image/jpeg and from mm115.net then store this file named url without ? and replace / with _
if
(
(
oSession.RequestHeaders.AllValues("Host").Contains(".huishoubao.com") ||
oSession.RequestHeaders.AllValues("Host").Contains(".aihuishou.com")
) &&
(
oSession.ResponseHeaders.AllValues("Content-Type").Contains("image/jpeg")
)
)
{
// find ? and trim it to generate url without parameters named file_url
var file_url ;
var whindex = oSession.url.IndexOf ('?');
if (whindex > 0)
file_url = oSession.url.Substring (0,whindex);
else
file_url = oSession.url;
// only jpg and size bigger than 70k will be stored, so ..
whindex = oSession.url.IndexOf ('.jpg');
if ((whindex > 0) && (oSession.GetResponseBodyAsString().Length > 50000))
{
oSession["ui-backcolor"] = "yellow";
whindex = whindex+4;
// modi url to be the name which suit windows's rules
file_url = file_url.Substring (0,whindex).Replace ('/','_').Replace('%','B').Replace('?','7').Replace('&','-');
// you can enum and confire not store duplicated
var file_path = img_dir+"jpg/"+file_url;
var fso = new ActiveXObject("Scripting.FileSystemObject");
// if not exist file_url
if
(
(false == fso.FileExists(file_path ))
)
{
var stream = new ActiveXObject('Adodb.Stream');
stream.Mode = 3;
stream.Open();
stream.Type = 1;
//stream.Charset = 'unicode';
//stream.WriteText(s);
stream.Position = 0;
stream.Type = 1;
//stream.Position = 2;
//var bs = stream.Read();
//stream.Position = 0;
stream.Write(oSession.responseBodyBytes);
//stream.SetEOS();
stream.SaveToFile(file_path,1);
stream.Close();
}
else
{
oSession["ui-strikeout"] = "true";
}
}
}
// store json
var json_dir = "y:/TEST/";
if
(
// from certain site like weixin.qq.com ...
(
oSession.RequestHeaders.AllValues("Host").Contains(".weixin.qq.com") ||
oSession.RequestHeaders.AllValues("Host").Contains(".growingio.com") ||
oSession.RequestHeaders.AllValues("Host").Contains(".huatuo.qq.com") ||
oSession.RequestHeaders.AllValues("Host").Contains(".aihuishou.com") ||
oSession.RequestHeaders.AllValues("Host").Contains(".huishoubao.com")
) &&
// and content-type is text/html or application/json
(
oSession.ResponseHeaders.AllValues("Content-Type").Contains("application/json") ||
(
oSession.ResponseHeaders.AllValues("Content-Type").Contains("text/html") &&
// and not htm ,png,ico and jpg . (some developers are so chedan ,they can give an ico for json)
(
(! oSession.url.Contains(".htm")) &&
(! oSession.url.Contains(".png")) &&
(! oSession.url.Contains(".ico")) &&
(! oSession.url.Contains(".jpg"))
)&&
(
// even blank should be store ,otherwise should be json structure
(oSession.GetResponseBodyAsString()+"{ ").Substring(0,3).Contains ("{")
)
)
)
)
{
// earse the confusion codes...
oSession.utilDecodeResponse();
oSession["ui-backcolor"] = "yellow";
var fso;
var file;
var whindex = oSession.url.IndexOf ('?');
if (whindex <= 0)
whindex = oSession.url.Length;
var file_url = oSession.url.Substring (0,whindex).Replace ('/','_').Replace('%','B').Replace('?','7').Replace('&','-');
var etimes = (oSession.Timers.ServerDoneResponse-oSession.Timers.ClientDoneRequest).ToString().Replace(':','');
try
{
fso = new ActiveXObject("Scripting.FileSystemObject");
//FiddlerObject.log(file_url+"create");
// file path ,and the site dir
if(oSession.RequestHeaders.AllValues("Host").Contains(".aihuishou.com"))
{
if( ! fso.FolderExists(json_dir+"aihuishou/"+oSession.RequestHeaders.AllValues("Host")))
fso.CreateFolder (json_dir+"aihuishou/"+oSession.RequestHeaders.AllValues("Host"));
//FiddlerObject.log(file_url+"open");
file = fso.OpenTextFile(json_dir+"aihuishou/"+oSession.RequestHeaders.AllValues("Host")+"/"+file_url+".txt",8,true,true);
}
else if(oSession.RequestHeaders.AllValues("Host").Contains(".huishoubao.com"))
{
if( ! fso.FolderExists(json_dir+"huishoubao/"+oSession.RequestHeaders.AllValues("Host")))
fso.CreateFolder (json_dir+"huishoubao/"+oSession.RequestHeaders.AllValues("Host"));
file = fso.OpenTextFile(json_dir+"huishoubao/"+oSession.RequestHeaders.AllValues("Host")+"/"+file_url+".txt",8,true,true)
}
else
{
if( ! fso.FolderExists(json_dir+oSession.RequestHeaders.AllValues("Host")))
fso.CreateFolder (json_dir+oSession.RequestHeaders.AllValues("Host"));
file = fso.OpenTextFile(json_dir+oSession.RequestHeaders.AllValues("Host")+"/"+file_url+".txt",8,true,true)
}
//oSession.WriteResponseToStream(fso,false);
//FiddlerObject.log(file_url+"write begin");
//file.writeLine( oSession.ResponseHeaders.AllValues ("Content-Type"));
//file.writeLine( "\r\n fullUrl: "+ oSession.fullUrl.ToString () );
file.writeLine("{{======"+oSession.Timers.FiddlerBeginRequest.ToString() + " :" + oSession.Timers.FiddlerGotResponseHeaders.ToString() );
file.writeLine( oSession.RequestHeaders.ToString ());
file.writeLine( oSession.GetRequestBodyAsString() );
file.writeLine( oSession.ResponseHeaders.ToString());
file.writeLine( oSession.GetResponseBodyAsString() );
file.writeLine( etimes+"======}}" );
//FiddlerObject.log(file_url+"write end ");
file.close();
//FiddlerObject.log(file_url+"close");
oSession["ui-color"] = "blue";
}
catch(exp)
{
var txt="Error description: " + exp.message + "\n\n" + file_url;
FiddlerObject.log(txt);
oSession["ui-strikeout"] = "true";
}
// write access t_call_record
var sql = "";
try
{
var con =new ActiveXObject("ADODB.Connection");
//con.Provider="Microsoft.ACE.OLEDB.18.0";
var rs=new ActiveXObject("ADODB.Recordset");
/**
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Y:/TEST/fiddler_web_service_analysis.accdb;Persist Security Info=False;
**/
//var access_db_path = "d:/fiddler_web_service_analysis.accdb" ;
//con.ConnectionString="Data Source="+access_db_path;
//ODBC DSN name ,config by windows odbc
con.open("DSN=db_hsb_vs_ahs;") ;
//FiddlerObject.alert(1);
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(" +
strVar1(oSession.Timers.FiddlerBeginRequest) + "," +
strVar1(oSession.Timers.ClientDoneRequest) + "," +
strVar1(oSession.Timers.ServerDoneResponse) + "," +
strVar1(oSession.RequestHeaders.AllValues("Host")) + "," +
strVar1(oSession.url.Substring (0,whindex)) + "," +
strVar1(oSession.RequestHeaders.ToString ()+oSession.GetRequestBodyAsString()) + "," +
strVar1(oSession.ResponseHeaders.ToString ()+oSession.GetResponseBodyAsString()) + "," +
etimes*1000 + "," +
strVar1(oSession.ResponseHeaders.AllValues("Content-Type")) +"," +
oSession.ResponseHeaders.AllValues("Content-Length")+0
+");";
//FiddlerObject.alert(sql);
rs.open(sql,con);
oSession["ui-color"] = "red";
//rs.close();
// rs=NULL;
con.close();
// con = NULL;
}
catch(exp)
{
var txt="Error description: " + exp.message + "\n\n" + sql;
FiddlerObject.log(txt);
oSession["ui-strikeout"] = "true";
}
return;
}
}