我对node.js比较陌生,我正在考虑将我公司的一些产品一起黑客攻击。然而,其中一个系统是为Node.js编写的,另一个系统,我也无法访问,由标准登录页面控制。此登录包含一些关键数据点,我想从HTML中删除。我想在幕后做这件事,我不想显示网页或任何东西。我只想执行提交,并获得请求。
有人能指出正确的方向吗?
答案 0 :(得分:6)
根据您的登录流程的复杂程度以及底层系统的构建方式,可以实现不同级别的自动化。
首先,不要依赖屏幕抓取任何东西。这很糟糕,很容易失败。当底层应用程序更新时,没有人会想到屏幕抓取器和事情发生变化。如果要使用REST API或某种其他类型的RPC(远程过程调用),请改用它。如果没有,请求API。只有在那之后才应该尝试屏幕抓取。
您可以在不尝试完全模拟浏览器的情况下模拟HTTP请求。在Network Monitor in your Developer Tools打开时,首先在浏览器中完成请求。找到您需要的最少数量的请求。有时这只是POST
到/login
的{{1}}和username
字段。有时您需要存储cookie,然后使用您的用户会话请求所需的页面。
无头浏览器是进入UI的第一步,让您不必担心后端HTTP请求的作用。您告诉API填写password
字段和login
字段并提交表单。无头浏览器将为您完成后台工作,如cookie和重定向,并返回呈现的网页。
使用Zombie.js,PhantomJS,CasperJS。
更复杂的网站自动化有时需要完整的浏览器才能正常工作。这通常是在您依赖大量Javascript呈现的网页和更高级的用户交互时。
Webdriver是用于控制浏览器的标准API。 Webdriver客户端是一种语言API实现,可以与Webdriver服务器通信。 Webdriver服务器启动完整的浏览器实例,并将API调用转换为实际的浏览器操作。
Webdriver.io和Selenium Standalone Server将涵盖您需要的大部分内容 Internet Explorer有一个原生服务器 Chrome也发布了自己的原生webdriver服务器。