Для использования браузера Awesomium в своих проектах необходимо скачать и установить SDK библиотеку. Теперь рассмотрим, как можно запустить и настроить браузер Awesomium, а также приведем примеры взаимодействия со страницей через встроенный функционал браузера.
Подключение библиотеки в C# проект:
using Awesomium;
using Awesomium.Core;
using Awesomium.Web;
using Awesomium.Windows;
using Awesomium.Windows.Forms;
using Awesomium.ComponentModel;
Инициализация ядра браузера:
if(!WebCore.IsRunning)
{
WebCore.Initialize(new WebConfig()
{
// Отключаем запись логов
LogLevel = Awesomium.Core.LogLevel.None,
// Добавляем настройки
AdditionalOptions = new string[] { "--enable-video-fullscreen=false" },
// При необходимости задаем путь к папке с плагинами
PluginsPath = "путь к папке с плагинами",
// Задаем UserAgent для браузера
UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"
});
}
При необходимости запрещаем браузеру загружать файлы из интернета. Для этого устанавливаем событие:
WebCore.Download += new DownloadEventHandler(WebCore_Download);
private void WebCore_Download(object sender, DownloadEventArgs e)
{
e.Cancel = true;
e.Handled = true;
}
Далее создаем и настраиваем сессию:
WebSession session = WebCore.CreateWebSession("путь к папке для кеша", new WebPreferences()
{
// Устанавливаем AcceptLanguage
AcceptLanguage = "ru-ru,ru;q=0.8,en-us;q=0.6,en;q=0.4",
// Отключаем плагины (Flash, Silverlight)
Plugins = false,
// Запрещаем открывать окна с помощью JavaScript
CanScriptsOpenWindows = false,
// Запрещаем закрывать окна с помощью JavaScript
CanScriptsCloseWindows = false,
// Отключаем звуки в браузере
WebAudio = false,
// Отключаем защиту для возможности взаимодействия с фреймами внутри страницы
WebSecurity = false,
// Код JavaScript, который будет выполняться каждый раз перед загрузкой страниц в браузере
// В данном примере подменяем Referrer и запрещаем открытие встроенных браузерных окон (alert, confirm, prompt)
UserScript = "delete window.document.referrer; window.document.__defineGetter__('referrer', function () {return 'https://info-less.ru';}); window.alert = function(){}; window.confirm = function(){return false;}; window.prompt = function(){return NULL;};"
});
Создаем контрол браузера и размещаем его на форме:
Awesomium.Windows.Forms.WebControl webControl1 = new Awesomium.Windows.Forms.WebControl(this.components);
webControl1.Location = new System.Drawing.Point(10, 10);
webControl1.Size = new System.Drawing.Size(400, 300);
this.Controls.Add(webControl1);
Применяем созданную ранее сессию к браузеру:
webControl1.WebSession = session;
Задаем отображение контрола и оборачиваем контрол во webview (для возможности делать прокрутку, клики, движения мыши и других взаимодействий с элементами страницы):
webControl1.ViewType = WebViewType.Offscreen;
IWebView webview = (IWebView)webControl1;
Способы очистки кук и кеша в браузере Awesomium:
// Очистка кук (перед этим должна быть установлена сессия)
session.ClearCookies();
// Очистка кук через контрол браузера
webControl1.WebSession.ClearCookies();
// Очистка кеша браузера (перед этим должна быть установлена сессия)
session.ClearCache();
// Очистка кеша через контрол браузера
webControl1.WebSession.ClearCache();
Открываем страницу в браузере:
webControl1.Source = new Uri("https://yandex.ru");
Программная прокрутка страницы:
// Вниз
webview.InjectMouseWheel(-120, 0);
// Вверх
webview.InjectMouseWheel(120, 0);
Перемещение курсора мыши на заданные координаты:
webview.InjectMouseMove(100, 200);
Кликаем мышкой:
webview.InjectMouseDown(MouseButton.Left);
webview.InjectMouseUp(MouseButton.Left);
Изменяем Referer при загрузке страницы:
WebCore.ResourceInterceptor = new ResourceInterceptor();
// Создаем класс
public class ResourceInterceptor : IResourceInterceptor
{
// Overwrites the HTTP_REFER request header
public virtual ResourceResponse OnRequest(ResourceRequest request)
{
request.Referrer = "https://info-less.ru";
return null;
}
// Optionally blocks any web browser requests by returning true
public virtual bool OnFilterNavigation(NavigationRequest request)
{
return false;
}
}
Сделать скриншот страницы и сохранить с именем screen.png:
using (Bitmap bmp = new Bitmap(webControl1.Width, webControl1.Height))
{
webControl1.DrawToBitmap(bmp, new Rectangle(0, 0, webControl1.Width, webControl1.Height));
bmp.Save("screen.png");
}
Способы выполнения JavaScript в браузере Awesomium:
// Выполнить JavaScript в браузере
webControl1.ExecuteJavascript("alert('Hello World!');");
// Выполнить JavaScript в браузере и вернуть результат переменную tmp
string tmp = webControl1.ExecuteJavascriptWithResult("document.links.length;");
// Выполнить JavaScript во фрейме и вернуть результат переменную tmp
string tmp = webControl1.ExecuteJavascriptWithResult("document.getElementsByTagName('frame')[0].contentWindow.document.links.length;");
// Выполнить JavaScript во фрейме c идентификатором myframe и вернуть результат переменную tmp
string tmp = webControl1.ExecuteJavascriptWithResult("document.links.length;", "//iframe[@id='myframe']");
// Выполнить JavaScript во фрейме по заданному расположению в DOM и вернуть результат переменную tmp
string tmp = webControl1.ExecuteJavascriptWithResult("document.links.length;", "//html/body/section/div/div/div/iframe");
Уничтожение браузера Awesomium:
webControl1.Dispose();