【问题标题】:Can chrome be used, from the command-line, to retrieve a URL's content to a file?可以从命令行使用 chrome 将 URL 的内容检索到文件中吗?
【发布时间】:2019-01-28 06:52:43
【问题描述】:

我一直在疯狂地尝试获取 curl、wget、python 请求模块和其他模块,只是为了让我登录到一个网站并在那里提取页面文本。我当然可以从站点请求 HTML,但只能作为匿名用户。我花了几个小时使用 chrome 的“复制 cURL”功能等技巧,但该网站足够智能,可以防御登录回放。

我想要的只是一种方式,从命令行,做类似的事情:

chrome.exe --output_to_file page.html https://www.endpoint.com/auth_access_only.html

本质上,我正在寻找 chrome 来为我做 cURL 所做的事情,但我希望命令行调用能够像我一样执行。我可以看到这可能如何打开一个潜在的安全问题,但我完全不介意我必须做一些神奇的事情来授权我的脚本。我不想做任何邪恶的事情——我只想能够编写像我一样“我”的脚本。

我想,如果它真的无法避免,我可以把它吸干并从 Internet Explorer 中清除灰尘。我真的不想那样做。我会觉得很脏。

【问题讨论】:

    标签: google-chrome cookies command-line cmd scripting


    【解决方案1】:

    这是可能的,但并不像你想的那么简单。

    您可以使用Chrome Debugging Protocol远程控制Chrome。

    您需要编写一些代码来完成这项工作 - 我使用 Node.js 的 chrome-remote-interface 库完成了类似的任务。

    确保您了解browser profile 是什么以及您的个人资料文件夹所在的位置。

    如果 Chrome 已经在使用您的浏览器配置文件运行:确保它是使用 --remote-debugging-port=9002 或类似名称启动的。

    如果 Chrome 尚未使用您的浏览器配置文件运行:使用 --user-data-dir="C:\path\to\your\profile" --remote-debugging-port=9002 或类似名称启动它。

    “是否运行”部分有点棘手 - 您不能使用相同的浏览器配置文件启动多个 Chrome 实例,但您需要使用此用户配置文件,因为您的登录数据存储在那里。实际上,最简单的方法可能是创建一个单独的浏览器配置文件,该配置文件仅用于此自动化任务,然后也登录到那里的站点。

    然后,概括地说,您的 Node.js 代码需要连接到 Chrome、加载页面、等待响应并将其保存到文件中。看看chrome-remote-interface 库的示例代码 - 你绝对可以从那里拼凑出你需要的东西。


    另一个使用相同底层技术的选项是使用puppeteer,这是另一个自动化 Chrome 的工具。它旨在每次都从一个新的配置文件开始。如果这样做,则需要编写更多交互脚本:

    • 访问网站的登录页面
    • 在表单中输入登录凭据并单击登录按钮
    • 访问网站的认证页面并将其保存到文件中。

    这种方法的好处是结果应该更可靠,防止出现登录会话过期等问题。

    【讨论】:

      猜你喜欢
      • 2010-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 2021-09-14
      • 1970-01-01
      • 2019-02-20
      • 2023-01-28
      相关资源
      最近更新 更多