Как настроить симуляцию браузера на веб-сайте Azure - PullRequest
0 голосов
/ 07 февраля 2019

Я хотел бы проверить, учел ли я все свои варианты, прежде чем пытаться решить, какой маршрут выбрать.

В настоящее время я развернул небольшой веб-сайт на бесплатной службе приложений Azure (.NET).Core + SQL Server, на бесплатной крошечной базе данных SQL, которую они вам предоставят)

Я хочу, чтобы этот сайт мог извлекать некоторые данные за кулисами, что требует имитации браузера.

  • Моя браузерная симуляция в конечном итоге состоит в том, чтобы собирать некоторую информацию с экрана браузера, загружать и сохранять файл, но мне нужно симулировать логины и сложную навигацию, поэтому я считаю, что это должна быть полная симуляция браузера, а не просто отправкаHTTP-запросы вручную, чтобы работать без огромного количества реверс-инжиниринга целевого сайта.
  • Снимаемый мной сайт не ожидает удаления и не имеет API, которые я могуиспользуйте вместо.
    • Во избежание каких-либо сомнений, я делаю соскоб определенно , не незаконный или аморальный.Можно предположить, что это нарушает некоторые вопросы и ответы, но я уже проверяю это отдельно.
  • Это личный проект, поэтому важно, чтобы я соответствовал тому, что может бытьразмещен бесплатно.

Я думал, что это очень просто - мне просто нужно запустить Selenium на моем сайте.

Увы, я обнаружил, что AppServices не поддерживает установку Chrome или аналогичногои что Selenium может не работать в любом случае.( Цитирование )


Какие подходы доступны для решения этой проблемы? Я думаю, что могу:
  • Настроить Azure в качестве виртуальной машины
    • Дает мне полный контроль над средой хостинга.
    • Множество усилий DevOps.
    • Я не вижу очевидного варианта свободной виртуальной машины в Azure.
  • «Сделай это в контейнерах».
    • Я нашел источник, предполагающий, что контейнеры будут позволять устанавливать браузеры, но при этом сохраняются низкие издержки DevOps.
    • Я думаю, Azure поддерживает Kubernetes бесплатно.
  • Перестройте мой код, чтобы он не пытался симулировать браузер, а просто угадал правильные HTTP-запросы.
    • (я думаю, что этоневероятно большой объем работы разработчика)
  • Воспользуйтесь другим симулятором браузера на чистом C #.? CefSharp?
    • Я думаю, что текущим камнем преткновения является то, что Selenium требует, чтобы Chrome существовал отдельно от приложения C #, которое я запускаю.Если я смогу сделать «браузер» прямой частью C #, может, это будет работать лучше?
    • Похоже, что CefSharp может позволить имитировать Chromium без установки отдельного экземпляра Chrome, поэтомучто жизнеспособный вариант?
    • Может столкнуться с теми же "неподдерживаемыми" проблемами с AppServices.
    • Я думаю, что этот подход, вероятно, теряет очень приятный в использовании интерфейс IWebDriver, хотя: (
  • Не размещать на Azure.
    • Вероятно, подразумевает некоторый тип собственного хостинга, при котором я настраиваю свой персональный компьютер для размещения сайта и выставляю этот сайт мирусоответствующее сопоставление IP-адресов, открытие брандмауэра и другие ошибки DevOps.

Есть ли другие варианты, о которых я не знаю? (особенно встроенные вAzure!)

Есть ли какие-либо другие соображения в перечисленных выше параметрах?

1 Ответ

0 голосов
/ 07 февраля 2019

Я сделал это, используя:

  • CefSharp (вы можете настроить пользовательский агент для имитации версии Chrome) (режим без головы).

  • Приложение .NET Core Console в док-контейнере (агенте), обрабатывающем запросы, поступающие из очереди обслуживания Azure.Это позволит вам масштабировать своих агентов и иметь больше возможностей.Без ВМ я не думаю, что вы не можете просто из-за ограничений графической поддержки без серверов.

Вот пример докера для этого образа для загрузки и установки .net framework при сборке:

FROM microsoft/windowsservercore
ADD . /ScrapingService
WORKDIR /ScrapingService
ADD https://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x64.exe /vc_redist.x64.exe
RUN C:\vc_redist.x64.exe /quiet /install
ENTRYPOINT ["cmd.exe", "/k", "Scraper.exe"]
  • Selenium с ChromeDriver.

Проверьте это локально (без режима без головы), когда все работает, создайте образ докера и разверните его в Azure.

Это можно сделать, создав контейнерное консольное приложение .net, запустив его локально и развернув.Одно из предупреждений для вашего подхода: если веб-сайт изменит свою структуру, вам придется пересмотреть правила очистки, также, если веб-сайт использует капчу, вы не можете ее очистить, если вы отправляете много запросов, это может вызвать предупреждение на веб-сайте.как возможная атака.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...