Задать вопрос

Как создать браузер на C# или C++?

Здравствуйте.

Мне очень захотелось написать свой браузер, со своими фишками и т.п. Так вот, пробовал использовать стандартный компонент WForms, но он использует ядро IE, так еще и устаревшнее.
Попробовал использовать CefSharp, который работает с Chromium, но кушает больше оперативки, чем хотелось бы.

Так вот, мне бы хотелось узнать как написать свое ядро, если вы знаете книги посвященные эти темы, какие-то примеры, статьи или уроки - буду вам чрезвычайно благодарен.

* Если это невозможно реализовать на C#, то буду рад все тем же книгам, урокам, примерам и статьям на C++.

Заранее всем большое спасибо за ответы.
  • Вопрос задан
  • 12600 просмотров
Подписаться 3 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 8
Написать браузер - это огромный труд. Скачайте исходники браузера Chromium и посмотрите сколько там строк кода. Даже если каждую секунду писать по одной строке кода, то на такое количество строк удет как минимум пара лет. А еще же надо все отладить, написать тесты. Это не подъемная работа для одного человека.
Ответ написан
@SolidMinus
UPD: сообщение обрезает... почему-то
UPD2: Защита от cross-site-scripting, из-за блока
<script>
вне кода он удалил часть сообщения................


Народ, вы чего? Автор не говорил, что будет его кодить. Имхо, ему интересно как это делается. Я верно понял?

Чтобы сделать ядро для браузера надо идти от самого нуля:

0. Запросы к сети. Реализация http протокола. Прикрутить еще потом SSL/TLS и будет https.
1. Парсинг домена. распарсить вида domain_name:port, сделать DNS запрос на резолв домена, и в заголовках http указывать host:domain_name, подключаться на port. Он может быть отличным от 80-го, например.
2. Сделать рендер html. Пишешь движок анализатор хтмла который распределяет элементы по экрану. Если встречается блок script то передает в соответствующий интерпретатор языка, например, javascript.
3. Сделать обратную связь с юзером. Если он клацает по кнопке на экране, то надо сопоставить эту кнопку с тем, куда она ведет. Далее совершить запрос к той странице и получить ответ.

итого имеем:

* Анализатор html/css, рендер графики.
* Интерпретатор как минимум javascript

В итоге - свой браузер, это еще сложнее чем свой интерпретатор языка программирования... да...Поэтому если решились сделать свой браузер с нуля - лучше сделайте язык программирования :)))))))
Ответ написан
Комментировать
@asd111
Используйте blink. www.chromium.org/blink
В Qt framework есть компонент qt web engine, основанный на blink doc.qt.io/qt-5/qtwebengine-index.html
Или почитайте исходники blink https://chromium.googlesource.com/chromium/blink/+... Это форк webkit, на котором работает нынешний chrome.
Ответ написан
Комментировать
EnDeRJaY
@EnDeRJaY
cout >> "Hello World!" >> endl;
Господи, вы с Гугла рухнули?Писать на C# или C++ браузер конечно можно, но никто не даёт гарантии, что вы через месяц не прыгните из окна.Кстати, какой у вас этаж?
Лучше учите C++ больше, потом попрактикуйтесь на чём нибудь, найдите сторонников и может у вас выйдет что-нибудь.Конечно, это не будет убийца Хрома, и даже Эксплорера, но уже будет что-то
Ответ написан
@lastmac
Как человек который создаёт свой браузер.
"Курить" надо спецификации, а их не мало:
HTML, DOM, Encoding, URL and more
CSS and modules
Шрифты
сеть, js и ещё куча всего...

Но, самое главное, надо понять зачем тебе писать свой собственный браузер/ядро?!
Дело это не простое, браузер является сводом многих технологий и сложность написания его соответствующая.
Ответ написан
Комментировать
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
смотрите и подглядывайте на том же джите 1,048 repository results
Ответ написан
Комментировать
dio4
@dio4
team leader, system engineer, master of sports
Ответ написан
Комментировать
@holmssherlok0808
Умею практически все!Кроме того как фиксить баги)
Создать просто браузер без каких либо приколов можно.ДА но у тебя должен быть vs если его нету то да непосильный труд....Ну а если есть то просто гугли браузер на c# и все, там мореинфы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы