如何建立一个Azure的托管网站上浏览器的模拟

问题描述 投票:0回答:1

我想检查我已经占了我的所有选项,试图决定采取哪条路线之前。

目前我已经部署了一个小网站到自由层Azure的应用服务(.NET核心+ SQL Server中,对自由的小SQL数据库,他们就会给你)

我希望这个网站能够幕后的需要浏览器的模拟获取的一些数据。

  • 我的浏览器的模拟最终是要刮从浏览器屏幕的一些信息,并下载和保存文件,但我必须模拟登录和复杂的导航,所以我相信它需要一个完整的浏览器仿真,不只是手动发送HTTP请求,为了不大量目标站点的反向工程的工作。
  • 我刮的网站不希望被划伤,没有,我可以使用,而不是任何API。 为了避免有任何疑问,我做的拼抢绝对不是非法或不道德的。这是可以想象的,它打破了一些商业条款,但我已经检查分开的过程。
  • 这是一个个人项目,所以很重要的是,我把它放在什么可以免费托管配件。

我认为这是很简单 - 我只是在我的网站上运行硒。

唉我发现,应用服务不支持安装Chrome或相似,而硒可以不反正工作。 (qazxsw POI)


What approaches are available to work around this? I think that I can:
  • 设置我的Azure中的VM 让我在托管环境的完全控制。 其它更多的DevOps的努力。 我看不出在Azure中无明显-VM选项。
  • “这样做在容器”。 我发现了一个源暗示容器将允许浏览器安装,但保持低的DevOps开销。 我认为Azure的不支持Kubernetes是免费的。
  • 重新设计我的代码,以便它不会试图模拟一个浏览器,只是猜测正确的HTTP请求。 (我认为这是一个令人难以置信大量的开发工作)
  • 使用一些其他的纯C#浏览器模拟。 ?CefSharp? 我认为目前的症结是,硒需要Chrome浏览器从我运行C#应用程序单独存在。如果我可以使“浏览器”是C#的直接参与,也许,这将更好地工作? 它看起来像Citation可能会使它可以模拟铬,而无需安装一个单独的浏览器实例,因此是一个可行的选择? 可能会遇到与AppServices相同的“不支持”的问题。 我觉得这个方法很可能失去了非常愉快的使用的IWebDriver接口,虽然:(
  • 不承载在Azure上。 可能涉及某种自托管的,由此我建立我的个人电脑主办的网站,揭露该网站向世界相应的IP映射,防火墙开放和其他的DevOps faff。

有没有我不知道其他的选择吗? (特别是那些内置到Azure的!)

有没有在我上面列出的选项任何其他考虑?

c# azure selenium browser hosting
1个回答
0
投票

我已经做到了这一点使用:

  • CefSharp(你可以设置用户代理来模拟铬版)(无头模式)。
  • 在码头工人容器(代理)从天青服务队列来该进程请求.NET核心控制台应用程序。这将允许你扩大你的代理商,并有更高的可用性。如果没有VM我不认为你不能因为简单地在无服务器的图形支持限制。

这里是这一形象泊坞窗例如建筑何时下载并安装.NET Framework:

CefSharp
  • 硒与ChromeDriver。

本地(不含无头模式)测试此当一切工作建立一个码头工人的图像,并将其部署到Azure上。

您可以通过创建一个集装箱.NET控制台应用程序做到这一点,运行它,然后在本地部署它。为您的方法的一个警告,就是如果网站改变其结构,你将不得不重新制定的规则刮,另外,如果网站使用验证码不能刮它,如果你发送许多请求,它可能在网站上触发警报作为可能的攻击。

© www.soinside.com 2019 - 2024. All rights reserved.