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

时间:2016-08-22 20:52:48

标签: node.js html-form execute

我对node.js比较陌生,我正在考虑将我公司的一些产品一起黑客攻击。然而,其中一个系统是为Node.js编写的,另一个系统,我也无法访问,由标准登录页面控制。此登录包含一些关键数据点,我想从HTML中删除。我想在幕后做这件事,我不想显示网页或任何东西。我只想执行提交,并获得请求。

有人能指出正确的方向吗?

1 个答案:

答案 0 :(得分:6)

根据您的登录流程的复杂程度以及底层系统的构建方式,可以实现不同级别的自动化。

通过API

进行

首先,不要依赖屏幕抓取任何东西。这很糟糕,很容易失败。当底层应用程序更新时,没有人会想到屏幕抓取器和事情发生变化。如果要使用REST API或某种其他类型的RPC(远程过程调用),请改用它。如果没有,请求API。只有在那之后才应该尝试屏幕抓取。

低级别HTTP请求

您可以在不尝试完全模拟浏览器的情况下模拟HTTP请求。在Network Monitor in your Developer Tools打开时,首先在浏览器中完成请求。找到您需要的最少数量的请求。有时这只是POST/login的{​​{1}}和username字段。有时您需要存储cookie,然后使用您的用户会话请求所需的页面。

使用needle或更常见但更重量级的request

无头浏览器

无头浏览器是进入UI的第一步,让您不必担心后端HTTP请求的作用。您告诉API填写password字段和login字段并提交表单。无头浏览器将为您完成后台工作,如cookie和重定向,并返回呈现的网页。

使用Zombie.jsPhantomJSCasperJS

完整浏览器自动化

更复杂的网站自动化有时需要完整的浏览器才能正常工作。这通常是在您依赖大量Javascript呈现的网页和更高级的用户交互时。

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

Webdriver.ioSelenium Standalone Server将涵盖您需要的大部分内容 Internet Explorer有一个原生服务器 Chrome也发布了自己的原生webdriver服务器。