【发布时间】:2019-02-07 17:15:07
【问题描述】:
在尝试决定采取哪条路线之前,我想检查一下我是否已经考虑了所有选项。
我目前已将一个小型网站部署到免费层级 Azure AppService(.NET Core + SQL Server,在他们将提供给您的免费微型 SQL DB 上)
我希望这个网站能够获取一些需要浏览器模拟的幕后数据。
- 我的浏览器模拟最终是从浏览器屏幕上抓取一些信息,下载并保存文件,但我必须模拟登录和复杂的导航,所以我相信它需要是一个完整的浏览器模拟,而不仅仅是发送 HTTP手动请求,以便在不对目标站点进行大量逆向工程的情况下工作。
- 我正在抓取的网站预计不会被抓取,并且没有任何我可以使用的 API。
- 为避免任何疑问,我所做的抓取绝对不是非法或不道德的。可以想象它违反了一些 Ts&C,但我已经在单独检查了。
- 这是一个个人项目,因此我必须让它适合可以免费托管的项目。
我认为这很简单 - 我只需要在我的站点中运行 Selenium。
唉,我发现 AppServices 不支持安装 Chrome 或类似的,而且 Selenium 可能无论如何都无法工作。 (Citation)
有哪些方法可以解决这个问题? 我认为我可以:
- 将我的 Azure 设置为 VM
- 让我可以完全控制托管环境。
- 更多的 DevOps 工作。
- 我在 Azure 中没有看到明显的免费 VM 选项。
- “在容器中进行”。
- 我发现一个消息来源暗示容器将允许安装浏览器,但保持较低的 DevOps 开销。
- 我认为 Azure 确实免费支持 Kubernetes。
-
重新构建我的代码,使其不会尝试模拟浏览器,而只是猜测正确的 HTTP 请求。- (我认为这是一项难以置信的大量开发工作)
- 使用其他一些纯 C# 浏览器模拟。 ?头孢夏普?
- 我认为当前的症结在于 Selenium 要求 Chrome 与我正在运行的 C# 应用程序分开存在。如果我可以让“浏览器”直接成为 C# 的一部分,也许效果会更好?
- 看起来
CefSharp可以在不安装单独的 Chrome 实例的情况下模拟 Chromium,这是一个可行的选择吗? - 可能会遇到与 AppServices 相同的“不受支持”问题。
- 我认为这种方法可能会失去使用起来非常愉快的 IWebDriver 界面,但 :(
- 不要在 Azure 上托管。
- 可能涉及某种自托管,我将个人计算机设置为托管站点,并通过适当的 IP 映射、防火墙开放和其他 DevOps 问题将该站点公开给全世界。
还有其他我不知道的选项吗?(尤其是 Azure 中内置的选项!)
我在上面列出的选项中还有其他注意事项吗?
【问题讨论】:
标签: c# azure selenium browser hosting