Fiddle扩展-HttpPing-批量检测web服务器是否正常
工作原因维护一系列网站,需要隔段时间测试一下网站是否都能正常打开。一个一个网址的输入,然后回车测试太累了,也很繁琐。于是开发了此扩展,暂且叫它HttpPing吧。
先看截图
Fiddler提供了扩展接口,详情参考http://www.fiddlertool.com/Fiddler/dev/IFiddlerExtension.asp
大家都知道,Fiddler的 RequestBuilder已经可以ping单个网站了,当然 我会在调用RequestBuilder的方法,这是最好的选择。
Reflector查看Fiddler,找到代码
1: ///<summary>
2: ///RequestBuilder 输入地址 回车调用方法 核心在session.Execute
3: ///<summary>
4: private bool actSendRequestFromWizard()
5: {
6: ....................
7: Session session = new Session((HTTPRequestHeaders) oHeaders.Clone(), bytes);
8: ....................
9: ThreadPool.UnsafeQueueUserWorkItem(new WaitCallback(session.Execute), null);
10: return true;
11: }
把这个方法拷贝到扩展的程序集,OK,session.Execute找不到,继续reflector
1: internal void Execute(object objThreadState)
2: {
3: try
4: {
5: this.InnerExecute();
6: }
7: catch (Exception exception)
8: {
9: FiddlerApplication.ReportException(exception, "Uncaught Exception in Session #" + this.id.ToString());
10: }
11: }
12:
internal的方法 只好继续看 InnerExecute()
private void InnerExecute() { .......... }
OK,反射调用
1: ThreadPool.UnsafeQueueUserWorkItem(new WaitCallback(a => {
2: session.GetType().InvokeMember("InnerExecute", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.InvokeMethod
3: , null, session, null);
4: }), null);
编译dll,拷贝到 Fiddler的Scripts目录,运行Fiddler,OK。
代码稍后上传送上 点击下载源代码