问题标签 [zest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
88 浏览

zap - 如何通过重定向到已验证部分来验证 SPA

我目前正在对 React SPA 进行黑盒测试(登录页面位于 url 的根目录,例如https://myapp.com)。Webapp 通过 Firebase 进行身份验证,并且会话令牌存储在应用程序的索引数据库中。

在此处输入图像描述

React 应用程序根据会话令牌是否存在于这部分存储中,将请求路由到经过身份验证的部分。现在我尝试扫描 Webapp 的已验证部分。

我已经尝试为这个问题创建多个身份验证脚本。我的第一种方法是录制一个 ZEST 脚本。虽然它记录了获取令牌的发布请求,但我仍然无法扫描经过身份验证的部分。

然后我找到了这个谷歌论坛,用户遇到了类似的问题。我创建了一个新的登录脚本,该脚本输入了登录详细信息并按说明单击了登录按钮。在测试时,我正确地启动了浏览器,登录并被重定向到正确的页面。当尝试将此方法与 ajax 蜘蛛一起使用时,对于每个爬取的 URL,都会启动一个浏览器,该浏览器可以正确登录,但在后台蜘蛛仍然只爬取未经身份验证的网站,而不使用之后出现的经过身份验证的网站脚本已运行。

据我了解,我需要提取会话令牌,然后我可以将此令牌包含在所有经过身份验证的 http 请求中。不幸的是,我仍然无法访问 webapp 的受限部分,因为 ajax 蜘蛛不知道它必须将会话令牌放在应用程序的本地存储中。

我该如何实现这一点,或者是否有可能生成一个使用脚本登录的浏览器,然后使用这个生成的浏览器继续使用 ajax 蜘蛛?