Node JS浏览器模拟(cookies,sessions,headers)

15

我需要从Node.js发起请求,就像普通浏览器一样。什么意思?

  1. 我可以设置任何HTTP信息,比如cookies,headers和body等。因此可以按照自己的要求构建HTTP请求。
  2. 请求完成后,所有响应数据都应该是可读的,例如“Set Cookie”……
  3. 如果能自动保存cookie在会话期间,那就太好了,这样每次发出请求时就不需要再包含它们。
  4. 因此,只需模拟真实浏览器以保留会话。

是否有任何库或框架可以提供这样的功能?

2个回答

29

如果您不需要解析HTML或运行客户端JavaScript,可以使用简单的工具,例如Request或SuperAgent:

对于更加复杂的情况,您可以使用类似JSDom的工具:

对于更加复杂的情况,您可以使用像PhantomJS这样的工具:

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

更多选项:

  • Zombie-Phantom包:用于模拟浏览器行为的Node.js库。
  • Headless-Browser-Lite包:轻量级无头浏览器,适用于Web自动化测试。
  • Run-Headless-Chromium包:运行Google Chrome的无头版本,可通过命令行进行配置和控制。

  • 非常好的答案!!感谢您的帮助。 - user4391296
    1
    如果您想要完全模拟浏览器(它在底层使用了Electron),也可以查看nightmarejs - user993683
    1
    phantomjs已被弃用,请优先考虑WhiteAngel的答案。 - ThomasP1988

    5

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


    我在哪里可以找到这个的文档? - Leo
    嗨@Leo。安装和使用软件包所需的所有文档都在Github页面上。所有其他选项和用法与软件包无关,而是与您选择的webdriver或任何其他控制浏览器的方法有关。 - WhiteAngel

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接