ГлавнаяСтатьиWebFAQОбучениеКонтакты
Web
CSS
JavaScript
HTML
C#
jQuery
PHP
Flash
Yii / Yii2
Java
Net
CMS
3D
Parallax
MySQL
Ajax
XML
SEO
FTP
JSON
Design
Python
Back-end
Front-end
ASP
Perl
Template
Domain
Hosting
Plugin
Browser
DNS
SVG
Effect
Опрос
Насколько сложно изучить язык программирования?





Авторизация
Логин:
Пароль:

Примеры кода для браузера Awesomium

Опубликовано 20.02.2020

Для использования браузера 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();