返回首页

简介
有相当多的解决方案有网站自动化处理。一些免费或开源的,有些则不是。这些解决方案大多分为这些类别之一:自动捕捉浏览器的活动 - 例如,点击链接,填写表格,在浏览器的地址栏输入 - 或自动捕获HTTP请求的信息,通常是通过一个本地代理,。在这篇文章中提出的解决方案如下后者的方法,但使用一个HTTP头/请求捕捉工具,而不是代理。
那么是什么使得这个解决方案是值得考虑的?嗯,这取决于您的需要。如果你需要做的是自动化,其他的工具可以做的事情,或者如果您需要更多的功能,这种解决方案不提供的,那么你应该使用其他工具。不过,也有某些情况下,这些工具未能解决,此解决方案无效。一个例子是自动化的网路活动,其中涉及的Java applet或Flash内容的HTTP请求。更多详情请参见背景部分。此外,该解决方案已经在文章的结尾提到的特性部分附加功能。背景
我目前的解决方案来自一个愿望,一个特定的任务自动化:我需要在工作之前,他们可以通过自动化测试系统测试系统配置。那么,应该配置自动化,太?这就是我想这就是我所要做的。麻烦的是,该系统提供了自动化,没有直接的命令行配置界面。但是,我没有从配置界面,可以通过系统的Web服务器上的ASP页面,执行配置的接口配置工作的工程师学习。这是一个率先启动,但再有就是没有掌握API文档和Web配置界面加载一堆Java applets的用户界面功能。经过一番分析,我发现,这些小程序的沟通与通过GET和POST HTTP请求的ASP页。所以,我找到了解决办法。
与Perl,我可以创建一个用户代理作为一个浏览器做同样的事情,但我需要自动化动态页面请求的方式,产生一个Perl脚本,基于浏览器活动,并避免需要手动脚本自动化。这可能听起来很简单,权利?我可以这样做我自己,我做到了,或者找到一个在网络上现有的解决方案。嗯,这是我们遇到问题。
我搜索网络现有的解决方案,并尝试了一些,但他们并没有解决我的问题这样或那样的。捕获浏览器活动的工具,自动化 - 例如点击链接,填写表格,在浏览器的地址栏输入 - 没赶上Java applet的HTTP活动。通过捕获HTTP请求通过代理信息自动化的工具,无法处理转发到浏览器的代理的Java applet的。它是如此缓慢,它似乎从来没有负载,所以我退出之前加载,假设,它会在所有负载。我测试过,我的情况是{A}有些作品最好的软件替代。一些现有的解决方案,我试过的审查是张贴在一个线程,下面这篇文章。 使用脚本
脚本是在200行代码,是非常不言自明的,如果你是用Perl的libwww熟悉。因此,你可以读自己的代码和我联系,如果你有问题。我将重点介绍如何使用脚本,而不是。
包含的脚本源是广义的,我写了一个版本。它的设计工作ieHTTPHeaders工具的Internet Explorer。与其他HTTP分析工具,它可以工作,但可能需要一些编辑与其他工具的HTTP跟踪格式。这是旨在使HTTP GET和POST请求和接收响应。 HTTP身份验证,高级的Cookie放大器支持HTTPS会话管理,错误检查,响应数据解析,并保存到一个文件或数据库的响应,将需要手工定制。您可以自定义它很容易,如果你是用Perl熟悉的。咨询网站上的Perl的libwww库,以供参考的文档。
使用该解决方案,你首先需要下载并安装。然后启动浏览器。查看- GT;浏览器栏- GT; ieHTTPHeaders V1.6或类似的东西。这将打开该工具。现在只需您希望自动执行网页浏览活动。当你这样做,HTTP请求头将显示在工具。完毕后,右键单击工具的显示区域,选择"保存到一个文件中保存HTTP TRACE"。使用脚本ParseHTTPTrace.pl解析到一个动态生成的Perl用户代理脚本跟踪的HTTP请求。使用解析脚本的格式是:

ParseHTTPTrace.pl [trace input file path] 

    [optional generated output script path]

默认输出脚本写入到C:\ TEMP \ WebAutomaton.pl。一旦做到这一点,你可以只运行WebAutomaton.pl和应该做的,你想要什么。 {A3}现在支持,但我不会去在本文中如何使用它。它的工作原理非常作为ieHTTPHeaders相同。与livehttpheaders要使用它,你需要以下工具与转换livehttpheaders跟踪文件ieHTTPHeaders格式:{C}
默认输出是C:\ TEMP \ outTrace.txt,如果不指定。然后,您可以通过原分析器脚本运行跟踪文件,以获得所需的perl的输出脚本。对于不涉及浏览器的应用,自动化就需要一个像{A4}(以前抓包)的网络协议分析器生成HTTP TRACE文件。脚本的使用要求
注意:写脚本和测试下的ActivePerl v5.8.7仅iehttpheaders工具。在任何平台上,它应该适用于大多数Perl版本。您可以使用您自己的风险;我不能保证它是无缺陷。{A3},{A4}或其他HTTP跟踪/分析工具。代理可以使用同样的事情,但在我的经验,它不与Java applet和工作。请注意,使用任何工具比iehttpheaders或livehttpheaders其他,就需要修改脚本支持工具,使头得到正确的格式解析Perl中运行时,任何操作系统平台,发布5.8.7建议的Perl的LWP的UserAgent和HTTP:请求模块(的libwww的一部分)安装和工作这种解决方案的特点及其替代品可用于自动化的网路活动,涉及富媒体使HTTP请求的应用程序的Java Applet,Flash内容,其他的插件,AJAX和Web服务,如。输出脚本可以被编译成可执行文件 - 与第三方工具,如免费的Perl档案"体能"包,perl2exe或从ActiveState的工具 - 使最终用户可以无需安装任何运行。用Perl脚本是完全可定制的,包括解析器/发电机脚本和输出脚本。无需额外软件的独立脚本运行。只有Perl和的LWP模块是必需的。只需要捕捉Perl分析器脚本解析HTTP请求的HTTP分析器工具。脚本运行的自动化非常快。使用知名的和记录的Perl的LWP模块。为了测试Web应用程序,它可以被用来绕过自动化图形用户界面,网站等,以自动化测试的需要。有用的自动化一气呵成100 HTTP请求。你知道,一个单一的Web电子邮件阅读会议可能会占用100 HTTP请求呢?试想一下脚本,手动!解决方案无缝地工作,像MS Office的宏录制和播放,需要手动编辑只为定制和性能优化。注意,无缝执行假设所需的工具已经成立,并正。可能的应用自动化Web浏览器(HTTP)的活动,涉及的Java Applet,Flash内容等,将棘手的自动化。也可以用来作为一种替代的情况下,不涉及测试图形用户界面交互的GUI配置自动化。自动化Web浏览器为基础的配置,尤其是对永远不会改变的配置。自动化网站功能测试,即HTTP请求的输入和HTTP响应输出功能测试。自动化网站负载测试,即1工作站或运行对指定的目标服务器中的许多工作站上运行许多脚本。REST或REST的CSV基于Web服务测试自动化,这很像网站测试工程。自动化网页浏览活动,即检查电子邮件,查询帐户余额,检查的消息。历史08/10/06 - 初始版本06年8月11日 - HTTP GET请求支持;更新与使用要求的文章10/01/06 - 更新的文章10/31/06 - 更新的文章07年7月14日 - livehttpheaders工具新增支持额外pre-parsing/trace转换脚本

回答

评论会员:nairolf_bzh 时间:2011/12/06
!救了我这么多的时间
感谢
评论会员:fengyunfu 时间:2011/12/06
我的新成员,只是尝试不能在中国! {S0}
!我是新来的,我试下工程系不能用中文回复{S0}
评论会员:daluu 时间:2011/12/06
自从我上次写我的文章,似乎有新的工具来收集来自浏览器的HTTP痕迹。我没有测试过这些,但我们欢迎您到他们尝试用我的Perl解决方案。该解决方案可能要适应这些工具:

HttpFox - 为Firefox
萤火虫 - 为Firefox
HttpWatch - Firefox和IE
"一个优秀的科学家,是一个与最初想法的人。,一个好的工程师是一个设计,用尽可能少的最初想法的人。" - 弗里曼 - 戴森
修改日(星期六),9月3日,2011 2:31
评论会员:游客 时间:2011/12/06
会员656280|嗨,我想我的网络服务器测试使用的JavaApplet开发自动化。我能够生成自动的Perl脚本,通过手工测试使用ieHTTPHeaders。之后,我执行生成的Perl脚本文件(WebAutomation.pl),它是产生某种蜂鸣声在我的系统。能否请您让我知道为什么它是这样发生的吗?我做正确的程序直接运行生成的脚本文件
?daluu
评论会员:游客 时间:2011/12/06
为了帮助您的问题,我需要看到生成的webautomaton.pl文件包含输出的话,你在运行脚本时。所以,请给我或张贴如果你想进一步调查这起。"一个优秀的科学家,是一个与最初想法的人。,一个好的工程师是一个设计,用尽可能少的最初想法的人。"-弗里曼-戴森
罗马Glaz
评论会员:游客 时间:2011/12/06
嗨,所有我需要协助执行的WebAutomation.pl没有,我的意思是:我记录网站活动文件(C:\http_recording.txt)后运行线 Perl的ParseHTTPTrase.plC:\http_recording.txt我看到新创建的C/Temp文件夹文件WebAutomation.pl它的外观在这一点上是好的,但如果我想执行WebAutomation.pl(命令:perlWebAutomation.pl)做什么我想怎么办??我做错了什么
??罗马Glaz
评论会员:游客 时间:2011/12/06
SOS救援中心......请我需要你的答案...应运行WebAutomation.pl结果打开新的浏览器??我怎么能看到运行结果
??daluu
评论会员:游客 时间:2011/12/06
默认情况下,自动化分析器脚本不显示输出。您将有行的注释,在它的"打印",显示你是访问返回的网站或Web服务器。输出记住返回的输出HTML代码,很可能在等,如果你不是那个熟悉的,它可能会出现混乱和隐秘。输出生成的Perl脚本,不喜欢你的浏览器的HTML格式和输出输出脚本被设计成定制的创建后,让你可以用它做你想要什么,目的是为Perl的知识的人或...它的目的的人要自动运行一些基于Web的配置,而无需手动打开一个浏览器,等(或使用GUI自动化做同样的事情)。对于一个假设的例子,也许你想自动删除从您的收件箱中的日常的电子邮件。你可以每天运行输出的Perl脚本,它会做它的工作,你不会做任何运行该脚本后(除非你想手动/直观地验证电子邮件与您的网页浏览器登录到您的电子邮件中删除)。"一个优秀的科学家,是一个与最初想法的人。,一个好的工程师是一个设计,用尽可能少的最初想法的人。"-弗里曼-戴森
罗马Glaz
评论会员:游客 时间:2011/12/06
Hellow,你有什么感想,我可以结合网页自动化类像"要求录音"的脚本:使用Win32::IE浏览器:机械化或使用Win32::IEAutomation这些类都可以打开新的浏览器,如果有任何方式"喂"HTTP请求记录你的脚本来打开浏览器窗口,这样我就可以看到sript的结果
?daluu
评论会员:游客 时间:2011/12/06
是的,但不直接如果你想直观地看到在行动像那些IE浏览器相关的类的GUI自动化,自动化,那么你将不得不修改ParseHTTPTrace.pl来解析输入的跟踪文件,并输出一个Perl脚本,而不是使用那些IE浏览器的自动化类的LWP:的UserAgent和HTTP:请求或者修改脚本,而不是你需要创建另一个脚本,将做同样的事情修改脚本应该不难。虽然在跟踪文件中的解析HTTP请求,你可以简单地更换为Win32等效代码的代码生成输出脚本代码:IE浏览器:机械化或Win32::IEAutomation。"一个优秀的科学家,是一个与最初想法的人。,一个好的工程师是一个设计,用尽可能少的最初想法的人。"-弗里曼-戴森
罗马Glaz
评论会员:游客 时间:2011/12/06
OK......感谢..我知道你的请求/响应设置工程propperly(WebAutomation.pl)以任何方式??或者做我想要做什么?以及如何
?daluu
评论会员:游客 时间:2011/12/06
。简单的方法是(拿出在该行的开头的"#")与"打印"在webautomation.pl脚本的注释行它会打印出请求时收到的HTTP响应。然而,这些反应可能HTML编码的文本。您还可以打开网络跟踪捕获工具Ethereal或Wireshark的像和HTTP请求/响应的实时发生的,当您运行webautomation.pl脚本。至于如何修改脚本,或创建您想要的IE浏览器的自动化版本,你需要找人来帮助你,如果你不熟悉如何自己做。您可以张贴到Perl论坛线上。我可以帮助你时,我有一段时间,不会有可能很快。或者,收费,我可以做,作为副业/项目,并让你在几天内或一个月的解决方案,根据您的要求。"一个优秀的科学家,是一个与最初想法的人。,一个好的工程师是一个设计,用尽可能少的最初想法的人。"-弗里曼-戴森
DesmondLim
评论会员:游客 时间:2011/12/06
您好,我不知道什么是错的。我是一个CGI创建从Excel中提取的数据,我尝试使用Win32启动Excel对象::OLE-GT,新(..).不幸的是,它并没有让我启动它。该错误是访问被拒绝。所以,我让我的IUSR_在Excel中的完全控制,使所有为我的网络服务器用户的权限。错误消失。但是,无论何时,我所谓的CGI文件,它会问我是否要下载文件,而不是立即执行的CGI文件。我不知道什么是错。请帮助。,德斯蒙德codepre#!c:\usr\bin\perl.exe-wusestrict;useCGI;useWin32::OLEqw(spanclass="code-keyword"in/spanwith);useWin32::OLE::Constspanclass="code-string"'/spanspanclass="code-string"MicrosoftExcel'/span; $Win32::OLE::Warn=spanclass="code-digit"3/span;#dieonerrors... my%allvarlist=&getcgivars(); #getalreadyactiveExcelapplicationoropenspanclass="code-keyword"new/spanmy$Excel=Win32::OLE-spanclass="code-keyword">/spanGetActiveObject(spanclass="code-string"'/spanspanclass="code-string"Excel.Application'/span)||Win32::OLE-spanclass="code-keyword">/spanspanclass="code-keyword"new/span(spanclass="code-string"'/spanspanclass="code-string"Excel.Application'/span,spanclass="code-string"'/spanspanclass="code-string"Quit'/span); printspanclass="code-keyword"</spanspanclass="code-keyword"</spanEOF;Content-type:text/html spanclass="code-keyword"</spanhtmlspanclass="code-keyword"</spanheadspanclass="code-keyword"</spantitlesssspanclass="code-keyword"</span/titlespanclass="code-keyword"</span/headspanclass="code-keyword"</spanbodyEOF #openExcelfilemy$Book=$Excel-spanclass="code-keyword">/spanWorkbooks-spanclass="code-keyword">/spanOpen(spanclass="code-string""/spanspanclass="code-string".."/span);spanclass="code-keyword"</span/bodyspanclass="code-keyword"</span/html/pre/code
daluu
评论会员:游客 时间:2011/12/06
对不起,这是错误的论坛发布消息的。它不涉及到的文章。不幸的是,我没有工作CGI和Win32的:OLE模块(特别适用于Excel)既然你在Windows上使用Perl中,我建议用Perl中使用ADO和ASP。ASP(因此ADO通过ASP暴露)允许您使用Perlscr​​ipt选择的语言中,VBScript或JavaScript。这是最简单的使用VBScript,但您可以使用ADO和ASP,PERL(脚本)。ADO允许您访问您的Excel文档通过SQL查询的结果。"一个优秀的科学家,是一个与最初想法的人。,一个好的工程师是一个设计,用尽可能少的最初想法的人。"-弗里曼-戴森
Enba
评论会员:游客 时间:2011/12/06
亲爱的朋友们,我感谢您有兴趣通过net.iam共享这样一个广泛的知识创建一个自动化工具使用Perl按照这个工具是关注我知道该怎么办好。有3可执行的Perl程序。如果我需要运行我的网站和自动化他们,我如何可以做的。请电话我的程序
daluu
评论会员:游客 时间:2011/12/06
请澄清,什么可执行程序,你指的是?你遇到什么问题?文章介绍了脚本运行,如何运行它们。"一个优秀的科学家,是一个与最初想法的人。,一个好的工程师是一个设计,用尽可能少的最初想法的人。"-弗里曼-戴森
弗雷德烧
评论会员:游客 时间:2011/12/06
我学到了很多。感谢。
Zaph0n
评论会员:游客 时间:2011/12/06
,这毫无疑问是最好的文章中,我曾经在CodeProject上读取。这是一个深刻的研究,以及挂接一块工作**最好的提供者(在我看来)在CodeProject之一。保持良好的工作!
daluu
评论会员:游客 时间:2011/12/06
我试图自动化拉动一些只通过HTTP从几个不同的供应商提供的报告。我一直在寻找在iOpus但我真的不想花$500,我是希望留在Unix上。我发现这一点,并尝试了。我录Firefox上使用LiveHTTP标头,清理输出(最新版本的LiveHTTP头不把页眉和POST请求的POST数据之间的一个空白行),比解析它。但经尝试运行自动脚本,Web服务器只是不断吐痰回来给我的Javascript被启用在浏览器中向前迈进。所以,我不是100%确定如何检测的JavaScript启用(我什至我的用户代理,我在我原来的捕捉使用的一个相匹配),但有没有人遇到此之前,拿出一个聪明的方式工作在它的周围?感谢
daluu
评论会员:游客 时间:2011/12/06
有趣的问题,你跑过。我从来没有想过,可以与许多网站的共同问题。不知道如果有人已经找到了一种方法解决它。但解决方法,如果有的话,可能是语言/平台的具体。浏览器或用户代理是一个指定是否启用JavaScript,而通常,网站或网页确定是否启用JavaScript是通过执行一个JavaScript测试页面的HTML内容,或在服务器端脚本处理。这方面的例子可以发现:{A6}因此,要解决这个问题,你可能会模仿一些在web客户端JavaScript的支持(例如JavaScript引擎)。默认情况下,我不认为大多数Web客户端库,包括对Perl的libwww提供这样的机制。最简单的办法来解决此是,如果你知道的网站实际上是通过JavaScript的Cookie设置。那么也许你可以创建相同的cookie通过请求头和发送您的要求来愚弄网站。或可能无法正常工作。另一种可能的解决方法是使用AJAX。可以工作在*nix但更多的选择在Windows。方法是使用XMLHttpRequest对象在Firefox/Mozilla或IE浏览器的DOM文档对象的结合。文档对象可能在一定程度上能够处理JavaScript?或者你可以使用IE浏览器的应用程序通过ActiveX对象。IE浏览器应用程序的对象仅仅是一个IE浏览器的纲领性实例(而不是图形化的运行)。有了这一点,你可能会得到它的工作,由于IE浏览器支持JavaScript,如果启用。您可以使用IE浏览器的应用程序对象或AJAX在网页或Windows命令行上通过了WindowsScriptingHost。顺便说一句,很高兴您能够使用我与LiveHTTP头解析解决方案。将是很好,如果所有这些实用工具在相同的格式输出,所以你没有解决这些问题或分析不同的格式。"一个优秀的科学家,是一个与最初想法的人。,一个好的工程师是一个设计,用尽可能少的最初想法的人。"-弗里曼-戴森
kumarprabhakar74
评论会员:游客 时间:2011/12/06
五月才有可能做你想做的,但您可能需要使用像其他的JavaMozilla的Rhino的JavaScript分析器平台或NETJScript.NET(从下面列出的第一个代码项目的一个部分演示。)一个简单的。NET支持JavaScript的WebClienthttp://www.codeproject.com/dotnet/CbWebC.asp"一个优秀的科学家,是一个与最初想法的人。,一个好的工程师是一个设计,用尽可能少的最初想法的人。"-弗里曼-戴森
daluu
评论会员:游客 时间:2011/12/06
如何实现净的Web/HTTP自动化。我想记录的链接,文本框或按钮自动生成的VBScriptABC
kumarprabhakar74
评论会员:游客 时间:2011/12/06
你能什么你想要做的正是的更具体?您的描述是有点含糊。无论如何,我不能真正帮助你,因为我不NET或VBScriptWeb服务的专家,但我可以提供在你需要做的一些提示:如果你想自动执行或执行就像一个浏览器。NET中的Web请求,您将需要采取的System.Net命名空间中的部分看,特别的WebRequest,WebResponse的,WebClient的,和Cookie类。然而,你需要环顾四周,或写自己的代码来构建一个框架,像我与这里的Perl。我看着自己的周围,但没有找到一个可用的解决方案,不幸的是,自己的。NET类不提供内置的或容易建立的框架,像我的Perl解决方案(支持多个Web请求,在一个Web会话cookie的支持)。如果你想生成一个VBScript,自动化或自动化与VBScript,你应该看看微软的XMLHTTP。同样,你会环顾四周,或建立自动化自己的框架。您可以结合Windows脚本宿主(而不是ASP的)从Windows桌面或命令行运行VBScript中的XMLHTTP。一些有用的XMLHTTP链接:http://en.wikipedia.org/wiki/XMLHttpRequesthttp://devguru.com/features/tutorials/XmlHttp/XmlHttp1.asp"一个优秀的科学家,是一个与最初想法的人。,一个好的工程师是一个设计,用尽可能少的最初想法的人。"-弗里曼-戴森
亚历克斯弗曼
评论会员:游客 时间:2011/12/06
帮助表示感谢ABC