C# 捕获HTTP流量
短版本:C# 捕获HTTP流量,c#,http,C#,Http,短版本: 我希望确保请求URL(部分匹配)(客户端) 长版本: 我希望自动化我的部分测试。目前我使用Fiddler2手动验证 以下是场景: 用户导航到站点A 我的应用程序使用跟踪URL重定向(见Fiddler的HTTP流量) 用户最终到达站点A,参数现在已应用 我想在C#中验证第2步是通过进行部分匹配(例如包含{string})实现的 问题: 我该怎么做?我已经开始研究HttpWebRequest类和FiddlerCore,但我喜欢使用最简单的代码(因此其他团队成员可以在需要时进行更新),这让我
我希望确保请求URL(部分匹配)(客户端) 长版本:
我希望自动化我的部分测试。目前我使用Fiddler2手动验证 以下是场景:
我该怎么做?我已经开始研究
HttpWebRequest
类和FiddlerCore
,但我喜欢使用最简单的代码(因此其他团队成员可以在需要时进行更新),这让我问StackOverflow的用户会推荐什么。看看。它是基于pcap(Windows上的WinPcap)的,这是一个由流行应用程序使用的数据包捕获库
有一个关于CodeProject的非常棒的教程,其中包含了许多示例代码,可以帮助您入门:
一旦您掌握了数据包(SharpPcap会捕获数据包,而不是解析数据包),您就可以使用它将数据包解析为可用的内容(在您的情况下是HTTP通信)。听起来您想要嗅探HTTP流量。您可以使用winpcap之类的数据包捕获驱动程序,导入该DLL并进行测试,或者使用@SimpleCoder提到的SharpPcap
最省力的路径是写一个,检查请求并在必要时重定向 编辑:在我阅读问题时,没有将#2作为中间URL,看起来它是(唯一)重定向操作。根据您的需要,您可以使用Selenium读取页面引用并获得重定向
WebDriver;//分配到别处
JavascriptExecutor js=(JavascriptExecutor)驱动程序;
//调用任何javascript
var referer=js.executeScript(“document.referer”);
我建议您使用C#进行所有网站/应用程序测试。它与NUnit、MSTest和其他测试框架集成得非常好,非常易于使用 使用SeleniumWebDriver,您将从C#测试代码启动一个自动浏览器实例(Firefox、Chrome、Internet Explorer、PhantomJS和其他)。然后,您将使用简单的命令控制浏览器,如“转到url”或“在输入框中输入文本”或“单击按钮” 它对其他开发人员也没有太多要求——他们只需要运行测试套件,并且假设他们安装了浏览器,它就可以工作了。我已经成功地将它用于开发团队中的数百个测试,每个开发团队都有不同的浏览器首选项(甚至对于测试,我们每个人都进行了调整)和团队构建服务器 对于这个测试,我将在步骤3中读取url 下面是一些示例代码,改编自。由于我不知道您要查找的URL或
{string}
(“本例中的奶酪”),因此示例没有太大变化
使用OpenQA.Selenium;
使用OpenQA.Selenium.Firefox;
//需要对WebDriver.Support.dll的引用
使用OpenQA.Selenium.Support.UI;
类重定向ThenReadUrl
{
静态void Main(字符串[]参数)
{
//创建Firefox驱动程序的新实例。
//请注意,代码的其余部分依赖于接口,
//而不是执行。
//进一步注意,其他驱动程序(InternetExplorerDriver、,
//ChromeDriver等)将需要进一步配置
//在此示例开始之前,请参阅wiki页面了解
//个别司机http://code.google.com/p/selenium/wiki
//以获取更多信息。
IWebDriver=新的FirefoxDriver();
//请注意,导航与Java版本略有不同
//这是因为“get”在C中是一个关键字#
driver.Navigate().gotour(“http://www.google.com/");
//打印原始URL
System.Console.WriteLine(“页面url为:“+driver.url”);
//@kirbycope:在你的情况下,重定向发生在这里-你只有
//在读取新值之前等待加载新页
//等待页面加载,10秒后超时
WebDriverWait wait=新的WebDriverWait(驱动程序,TimeSpan.FromSeconds(10));
wait.Until((d)=>{return d.Url.ToLower().Contains(“cheese”);});
//打印重定向的URL
System.Console.WriteLine(“页面url为:“+driver.url”);
//关闭浏览器
driver.Quit();
}
}
跟进:
我最终使用Telerik的代理发送HTTP请求,并通过C#解析响应。这是一篇用作跳板的文章:
您是否考虑过使用类似selenium RC的东西,而不是通过浏览器执行此操作?这可能比检查交通量少。是的,我使用Telerik测试工作室。问题是,我在步骤2中的URL只在浏览器地址栏中出现了一瞬间。我的目标是监视/嗅探流量,这样我就可以确保在我的示例的第3步中在URL上结束之前,URL被命中。不过,谢谢!谢谢你的回复。然而,我们已经使用了一个名为Telerik的自动化套件。问题是,这不像访问URL并等待片刻那么容易。这是因为我正在寻找的URL是一种中间人,您的解决方案(上面)将在我的示例的步骤3中显示URL,而不是步骤2中显示的URL。谢谢您的回复。我将研究SharpPcap,因为我可以在我的自动化套件中作为测试步骤运行C#代码。不幸的是,为了让C#应用程序正常工作,必须运行一个安装程序/谢谢你的回复。我将放弃Fiddler路由,因为调用外部服务将导致我的自动化软件出现问题,因为它没有“阻止操作”来告诉测试脚本等待其他进程,然后继续下一个自动化步骤