通过设置 cookie 使用 Phantom.Js 打开受密码保护的站点 (Passport.js)

Posted

技术标签:

【中文标题】通过设置 cookie 使用 Phantom.Js 打开受密码保护的站点 (Passport.js)【英文标题】:Opening password protected site (Passport.js) with Phantom.Js by setting cookie 【发布时间】:2014-03-25 19:44:02 【问题描述】:

我正在尝试使用 Phantom.js 脚本访问我的 Express.js 应用程序的受护照保护的页面。

如何在不知道护照的情况下模拟登录用户?

我使用 Passport.js 作为身份验证库,带有 LocalStrategyMongoStore 来保护 mongo 中的会话em> 数据库。我想知道是否可以在 sessions 集合中创建记录并使用 Phantom.js (phantom.addCookie(...)) 设置生成的 cookie,以模拟特定的登录用户,而无需用户密码?

我可以在后端为特定用户生成 connect.sid cookie 的内容并将其添加到 phantom.js 以模拟登录用户吗?

调查结果:

我发现 Passport.js 使用 Cookie-Signature 节点模块来签署 cookie 内容,我假设 Express.js 使用 Connect cookie 和 session 中间件来处理 cookie 和 session 创建并将它们插入到 HTTP 标头中。

【问题讨论】:

我想我找到了解决方案,稍后发布。 您能发布您的解决方案吗?我也有同样的问题。 【参考方案1】:

使用javascript,您应该能够填写您的登录字段并提交。 (模拟用户登录,而不是尝试重新创建登录 cookie)

这可能是你最好的选择。

有关如何填写表格,请参阅: How to fill in form field, and submit, using javascript? Automatic form fill using javascript

【讨论】:

这行不通,因为我只是在数据库中散列了密码。 其实我找到了解决办法,以后想写下来。 @BausTheBig 有什么解决办法? @BausTheBig 我正在使用会话 cookie(实际上,我正在使用请求中的所有 cookie),但仍然无法通过护照进行身份验证。你有没有让这个工作?

以上是关于通过设置 cookie 使用 Phantom.Js 打开受密码保护的站点 (Passport.js)的主要内容,如果未能解决你的问题,请参考以下文章

在phantom.js中同步page.evaluate

尝试在laravel 5.1 mac上安装php phantom js时,Composer安装错误

通过 ngrok 连接时未设置 Cookie

甚至通过 HTTP 在 RoR 中的会话 cookie 上设置“安全”标志

Flask 学习-62.Cookies 设置与使用

cookie