使用Fiddler显示请求IP地址的代码片段
"fiddler--显示ip代码.txt" 在IT行业中,网络调试是开发者和运维人员经常遇到的任务,而Fiddler是一款强大的HTTP抓包工具,它可以帮助我们捕获、查看和修改网络流量,以便于分析接口信息和定位问题。本资源提供了一段JScript.NET代码,用于自定义Fiddler的列显示,特别是在列表中添加显示每个请求的IP地址,以增强对网络请求的直观理解。 首先,让我们了解Fiddler的基本功能。Fiddler是一个免费的Web调试代理,它可以记录所有客户端HTTP通信,支持HTTPS解密,并且可以对请求进行修改、断点调试等高级操作。Fiddler的核心特性包括: 1. **HTTP/HTTPS抓包**:Fiddler可以捕获并显示所有进出浏览器的HTTP和HTTPS请求,包括GET、POST等方法,以及响应状态码、头部信息和响应体。 2. **解密HTTPS**:通过配置,Fiddler能够解密HTTPS流量,这对于调试加密的Web应用程序非常有用。 3. **自定义规则**:Fiddler支持JScript.NET脚本,用户可以通过编写脚本来实现自定义的会话处理逻辑,如本资源提供的代码段。 4. **会话过滤**:可以根据各种条件筛选和排序会话,如URL、状态码、时间等,便于快速找到感兴趣的数据。 5. **会话操作**:可以修改请求头、请求体,甚至在请求发送前或响应接收后插入新的操作,这对于模拟不同场景的测试和调试很有帮助。 现在,我们来看这段代码的主要部分: - `function BeginRequestTime(oS: Session)` 是一个自定义列处理器,它返回客户端开始请求的时间。这个函数会被Fiddler用来填充“TimeTaken”列,提供关于请求开始时间的信息。 - `public static BindUIColumn("TimeTaken")` 是定义新列的语句,将“TimeTaken”列绑定到`BeginRequestTime`函数,使得该列显示每个会话的请求开始时间。 - `function CalcTimingCol(oS: Session)` 似乎是另一个未完成的函数,可能是用于计算请求处理所需时间,但代码片段在此处被截断了。 - 关键的部分是添加显示IP地址的功能,虽然这段代码中没有直接包含这部分,但根据描述,我们可以推断应该存在一段代码负责在会话列表中添加一个新的列,显示每个请求的IP地址。这通常涉及到解析请求头中的Host信息,或者检查响应头来获取服务器IP。 为了实现这个功能,可以创建一个新的`public static BindUIColumn`,比如`"RemoteIP"`,然后定义一个对应的函数,如`function DisplayRemoteIP(oS: Session)`。在这个函数里,你可以访问`oS.oRequest.headers.Host`来获取目标服务器的主机名,然后通过DNS解析得到IP地址。如果请求是HTTPS,可能需要更复杂的处理,因为Fiddler默认不会显示解密后的服务器IP。 这段代码和Fiddler的自定义扩展能力结合,可以极大地提升网络调试的效率。通过自定义列,我们可以定制Fiddler界面,使其更适合我们的特定需求,例如显示请求IP,以便更有效地分析接口和解决问题。
import System.Windows.Forms;
import Fiddler;
// GLOBALIZATION NOTE:
// Be sure to save this file with UTF-8 Encoding if using any non-ASCII characters
// in strings, etc.
//
// JScript Reference
// http://www.fiddler2.com/redir/?id=msdnjsnet
//
// FiddlerScript Reference
// http://www.fiddler2.com/redir/?id=fiddlerscriptcookbook
//
// FiddlerScript Editor:
// http://www.fiddler2.com/redir/?id=fiddlerscripteditor
class Handlers
{
// The following snippet demonstrates a custom-bound column for the web sessions list.
// See http://www.fiddler2.com/fiddler/help/configurecolumns.asp for more info
//public static BindUIColumn("Method", 60)
//function FillMethodColumn(oS: Session){
// if ((oS.oRequest != null) && (oS.oRequest.headers != null))
// return oS.oRequest.headers.HTTPMethod; else return String.Empty;
//}
function BeginRequestTime(oS: Session)
{
if (oS.Timers != null)
{
}
return String.Empty;
}
public static BindUIColumn("Time Taken")
function CalcTimingCol(oS: Session){
var sResult = String.Empty;
if ((oS.Timers.ServerDoneResponse > oS.Timers.ClientDoneRequest))
{
sResult = (oS.Timers.ServerDoneResponse - oS.Timers.ClientDoneRequest).ToString();
}
return sResult;
}
public static RulesOption("Hide 304s")
var m_Hide304s: boolean = false;
// Cause Fiddler to override the Accept-Language header with one of the defined values
public static RulesOption("Request &Japanese Content")
var m_Japanese: boolean = false;
// Cause Fiddler to override the User-Agent header with one of the defined values
RulesString("&User-Agents", true)
RulesStringValue(0,"Netscape &3", "Mozilla/3.0 (Win95; I)")
RulesStringValue(1,"&IEMobile", "Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.12)")
RulesStringValue(2,"&Safari (XP)", "Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1.2 Safari/525.21")
RulesStringValue(3,"IE &6 (XPSP2)", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)")
剩余12页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++多态实现机制详解:虚函数与早期绑定
- Java多线程与异常处理详解
- 校园导游系统:无向图实现最短路径探索
- SQL2005彻底删除指南:避免重装失败
- GTD时间管理法:提升效率与组织生活的关键
- Python进制转换全攻略:从10进制到16进制
- 商丘物流业区位优势探究:发展战略与机遇
- C语言实训:简单计算器程序设计
- Oracle SQL命令大全:用户管理、权限操作与查询
- Struts2配置详解与示例
- C#编程规范与最佳实践
- C语言面试常见问题解析
- 超声波测距技术详解:电路与程序设计
- 反激开关电源设计:UC3844与TL431优化稳压
- Cisco路由器配置全攻略
- SQLServer 2005 CTE递归教程:创建员工层级结构