Node.JS加载一个html页面,填写表单,然后按提交button

我对node.js相对来说比较新,我正在看着我的公司的一些产品一起黑客攻击。 但是其中一个系统是为Node.js编写的,另一个系统是我无法访问的,由标准login页面控制。 这个login有几个关键的数据点,我想拉出HTML。 我想在幕后做到这一点,我不想显示的网页或任何东西。 我只是想执行从提交,并获取请求。

任何人都可以指出正确的方向?

根据您的loginstream程的复杂程度以及底层系统的构build方式,可能会有不同的自动化级别。

通过API来完成

首先,不要依靠屏幕刮取任何东西。 这是不好的,容易失败。 当底层的应用程序更新时,没有人会考虑屏幕刮板和事情的变化。 如果使用REST API或其他types的RPC(远程过程调用),请改用它。 如果没有,请求API。 只有在这之后你才能尝试屏幕抓取。

低级别的HTTP请求

您可能能够模拟HTTP请求而不尝试完全模拟浏览器。 开发者工具中的networking监视器打开时,首先在浏览器中完成请求。 find你需要的最less数量的请求。 有时这只是一个POST /login usernamepassword字段。 有时你需要存储一个cookie,然后用你的用户会话请求所需的页面。

使用针或更常见,但更重的要求 。

无头浏览器

无头浏览器是进入用户界面的第一步,使您不必担心后端HTTP请求会做什么。 您告诉API填写login字段和password字段并提交表单。 一个无头浏览器将为你做后台工作,如cookies和redirect,并返回一个渲染的网页。

使用Zombie.js , PhantomJS , CasperJS 。

全浏览器自动化

更复杂的网站自动化有时需要一个完整的浏览器正常工作。 这通常是当你严重依赖Javascript呈现的网页和更高级的用户交互时。

Webdriver是用于控制浏览器的标准API。 Webdriver客户端是可以与Webdriver服务器通信的语言API实现。 Webdriver服务器启动一个完整的浏览器实例,并将API调用转换为实际的浏览器操作。

Webdriver.io和Selenium独立服务器将覆盖你所需要的大部分。
Internet Explorer有一个本地服务器可用。
Chrome也发布了他们自己的本地webdriver服务器。