【问题标题】:Node JS browser simulation (cookies, sessions, headers)Node JS 浏览器模拟(cookies, session, headers)
【发布时间】:2017-10-15 18:49:41
【问题描述】:

我需要像普通浏览器一样从节点 js 发出请求。 我是什么意思?

  1. 我可以设置任何 HTTP 信息,例如 cookie、标头、正文。所以按照我的意愿构建 HTTP 请求。
  2. 发出请求后,所有响应数据都应该是可读的,例如Set Cookie....
  3. 如果 cookie 可以在会话期间自动保存,那就太好了。因此,我不需要在每次提出所有进一步请求时都包含它们。
  4. 所以只需要模拟一个真实的浏览器来保持会话

是否有任何框架库可以提供此类功能?

【问题讨论】:

    标签: javascript node.js cookies browser request


    【解决方案1】:

    对于不需要解析 HTML 或运行客户端 JavaScript 的情况,可以使用 Request 或 SuperAgent 等简单工具:

    对于更复杂的场景,您可以使用 JSDom 等工具:

    对于更复杂的情况,您可以使用 PhantomJS 等工具:

    像 PhantomJS、Headless Chrome 或其他一些无头浏览器而不仅仅是一个 DOM 实现将是最灵活的,因为它是一个真正的浏览器,只是没有可见窗口。 JSDom 和类似工具是 DOM 实现,其中一些可以执行客户端 JavaScript,但它们不是真正的浏览器。 Request 和 SuperAgent 之类的东西是简单的 HTTP 客户端,它们不会自行解析 HTML 或执行客户端脚本,但它们仍然允许您处理 cookie 和标头。

    更多选项:

    【讨论】:

    • 很好的答案!感谢您的帮助
    • 如果您想完全模拟浏览器(它在引擎盖下使用电子),另请参阅nightmarejs
    • phantomjs 已弃用,更喜欢 WhiteAngel 答案
    【解决方案2】:

    使用最新版本的 Chrome/Chromium,您可以直接在 headless 模式下使用它们。
    这是将 Chromium 添加到您的 NodeJS 项目并允许在无头模式下执行自动化的包:https://github.com/dtolstyi/node-chromium

    【讨论】:

    • 在哪里可以找到这方面的文档?
    • 嗨@Leo。安装和使用包所需的所有文档都在 github 页面上。所有其他选项和用法都与包无关,而是与 webdriver 或任何其他控制您选择的浏览器的方法有关。
    猜你喜欢
    • 2015-01-17
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 2014-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多