【问题标题】:Using deathbycaptcha with phantomjs without interrupting sessions在不中断会话的情况下将 deathbycaptcha 与 phantomjs 一起使用
【发布时间】:2015-09-02 22:21:23
【问题描述】:
考虑到 PhantomJS 不完全是 node.js(所以像 deathbycaptcha2 这样的模块)因为它们使用本机请求而被淘汰,是否可以简单地打开另一个 webpage 实例并使用它来发送 POST 请求到验证码 API 不影响其他页面实例?
这个新的page.open() 会保留第一页收集的 cookie 吗?
【问题讨论】:
标签:
javascript
testing
phantomjs
captcha
headless-browser
【解决方案1】:
这个新的page.open() 会保留第一页收集的 cookie 吗?
是的,每个 PhantomJS 进程只存在一个 CookieJar。因此,您创建的每个 page 都共享相同的 cookie。将这些 page 实例视为传统浏览器中的窗口或选项卡。
[我]是否可以简单地打开另一个网页实例并使用它向验证码 API 发送 POST 请求而不影响其他页面实例?
这并不容易,因为 cookie 是共享的。如果您不访问相同的页面,您可以安全地创建第二个实例。如果您想在第二个实例中访问同一页面,则可以通过 child_process module 启动第二个 PhantomJS 进程(例如使用 execFile)。
考虑到 PhantomJS 并不完全是 node.js [...]
没错,但是 PhantomJS 和 node.js 之间有几个桥梁,例如 phantom、node-phantom、nightmare 等。您可以使用它们与 PhantomJS 交互并额外调用所需的节点模块。