我与一个团队一起工作,该团队的唯一方法是让用户进入他们公司的数据库,在浏览器中浏览并填写约5页左右的网页表单。真是野蛮的东西。我已经在VBScript,Java(带Selenium WebDriver)和iMacro中开发了Web自动化脚本,但所有这些解决方案都是慢。他们还依赖于我试图摆脱的浏览器。
我正在寻找一个新平台,可能是一些脚本技术/语言,它允许我发出HTTP请求并读取HTTP响应,然后在那里构建我的脚本。该脚本将对HTTP响应执行计算,使用文件I / O并使用此数据发出进一步的HTTP请求。再一次,我只是在这里吐痰。如果其他人有更好的解决方案,我全都耳朵!
我的问题是:接受团队的限制(只读数据库访问),您将如何处理解决方案以及您将使用哪些工具/语言/平台?
欢迎广泛而模棱两可的答案。感谢您的时间。
答案 0 :(得分:2)
我同意@Grisk使用NodeJS / ioJS作为平台。它是一个功能强大的工具,专为I / O而设计,非常适合解决您的问题。此外,节点社区非常活跃,npm是nodejs包管理器,托管着数千个易于访问的模块。为了避免将来出现任何混淆:不要将NodeJS误认为语言或后端框架;它是在Google的V8引擎上构建的本机JavaScript解释器,以及一组用于构建强大I / O应用程序的内置模块。在线阅读有关节点的信息。
至于你的具体问题,我想你有两个选择:
对于前一个选项,您需要在每个页面上提交表单时手动确定将哪些cookie发送到服务器,然后在脚本中生成这些cookie并将其包含在http请求中。有关自定义请求标头的详细信息,请查看nodejs http documentation。
你的标题需要看起来像这样:
var headers = {
'host': < website host address here > ,
'origin' : <website origin here>
'referer' : <website origin here>
'User-Agent': 'Opera/9.52 (X11; Linux i686; U; en)',
'Cookie': <cookie sent over by server here>
}
我最近遇到了node-icloud
库,它使用我上面介绍的第一种方法来提供对某个icloud帐户的编程访问。我强烈建议您阅读其代码以了解其工作原理here。
此外,我建议您阅读有关http标头here
的信息对于第二个选项,请查看phantomjs和zombiejs。幻影是好的,因为它没有浏览器。我不确定这两个库的速度与你已经做过的速度相比,但它们值得测试。
最后一件事:我建议构建一个自定义(JSON)DSL,以便自动与网页进行交互,这样您就可以非常轻松地重新设计浏览器交互工作流程。
此外,如果您选择使用nodejs,理解节点流及其事件循环背后的细节将是有益的。
祝你好运!
答案 1 :(得分:1)
我会开始将NodeJS作为一个平台。 HTTP库是一种非常强大的方法,用于编写需要以不寻常的结构制作多个http请求的应用程序,并且它可以轻松地与浏览器或基本上您可能需要的任何其他内容进行通信。如果需要执行文件I / O,请查看使用FileSystem类。
如果您想真正想到并使用websockets构建一个可用作工具前端的动态网络应用程序,您甚至可以do that,所以有&#39; sa很多灵活性。