Как начать создавать веб-браузер? [закрытый]

Вы могли бы написать собственный валидатор и использовать комбинацию filter_var и parse_url?

Что-то следующее сделает эту работу ...

<?php

$url = "http://example.com/page/blahblahblah";

if (!filter_var($url, FILTER_VALIDATE_URL)) {
    return false;
}

$parts = parse_url($url);

echo "{$parts['scheme']}://{$parts['host']}";
66
задан Poxls88 30 July 2017 в 11:11
поделиться

9 ответов

Хорошо разломайте его на части. Что такое веб-браузер? Что это делает? Это:

  • Выборки внешнее содержание. , Таким образом, Вам нужна библиотека HTTP или (не рекомендуемый) пишут это самим. Существует большая сложность/тонкость к протоколу HTTP, например, обработка истекает заголовки, различные версии (хотя это главным образом 1.1 в эти дни), и т.д.;
  • Дескрипторы различные типы контента. существует реестр Windos для такого рода вещи, которую можно перевезти по железной дороге. Я говорю, интерпретируя на основе содержимого на типе MIME здесь;
  • HTML Синтаксических анализов и XML: создать DOM (Объектная модель документа);
  • Синтаксические анализы и применяет CSS : это влечет за собой понимание всех свойств, всех единиц измерения и всех способов, которыми могут быть определены значения (например, "граница: 1 пкс, чистый черный" по сравнению с отдельной шириной рамки, и т.д. свойства);
  • Реализации W3C визуальная модель (и это - настоящая строка над заголовком); и
  • Имеет механизм JavaScript .

И это - в основном веб-браузер вкратце. Теперь некоторые из этих задач невероятно сложны. Даже легкие звучащие могут быть твердыми. Возьмите выбирающее внешнее содержание. Необходимо иметь дело с вариантами использования как:

  • , Сколько параллельных соединений для использования?
  • Сообщение об ошибке пользователю;
  • Прокси;
  • опции User;
  • и т.д.

причиной I и другие является colletively, повышение наших бровей является механизмом визуализации, твердо (и, как кто-то отметил, годы человека вошли в свою разработку). Главные механизмы визуализации вокруг:

  • Трайдент: разработанный Microsoft для Internet Explorer;
  • Геккон: используемый в Firefox;
  • WebKit: используемый в Safari и Chrome 0-27;
  • KHTML: используемый в настольной среде KDE. WebKit, разветвленный от KHTML несколько лет назад;
  • Elektra: используемый в Opera 4-6;
  • Престо: используемый в Opera 7-12;
  • Мигание: используемый в Chrome 28 +, Opera 15 +, ветвление WebKit;

лучшие три нужно считать главными механизмами визуализации, используемыми сегодня.

механизмы JavaScript также тверды. Существует несколько из них, которые имеют тенденцию быть связанными с конкретным механизмом визуализации:

  • SpiderMonkey: используемый у Геккона/Firefox;
  • TraceMonkey: заменит SpiderMonkey в Firefox 3.1 и представляет JIT (своевременная) компиляция;
  • кДж: используемый Konqueror, связанным с KHTML;
  • JScript: механизм JavaScript Трайдента, используемого в Internet Explorer;
  • JavascriptCore: используемый в WebKit браузером Safari;
  • SquirrelFish: будет использоваться в WebKit и добавляет JIT как TraceMonkey;
  • V8: механизм JavaScript Google, используемый в Chrome и Opera;
  • Opera (12. X и меньше), также использовал его собственное.

И конечно существует весь материал пользовательского интерфейса: навигация между страницами, историей страницы, очищая временные файлы, вводя в URL, автоматически заполняя URL и так далее.

, Который является партия из работы.

114
ответ дан beppe9000 24 November 2019 в 14:49
поделиться

Походит на действительно интересный проект, но он потребует, чтобы Вы инвестировали огромное усилие.

Это не легкая вещь, но с академической точки зрения, Вы могли учиться так от него.

Некоторые ресурсы, которые Вы могли проверить:

, Но видящий его от реалистичный точка зрения, огромное усилие должно было кодировать, это с нуля напомнило мне этот комик:


(источник: geekherocomic.com )

Удачи:-)

23
ответ дан Glorfindel 24 November 2019 в 14:49
поделиться

Это - безумно амбициозный проект (специально для единственного разработчика), но что-то, что я хотел бы сделать когда-нибудь - Вы могли узнать о так много из него.

я не знаю много о том, как протоколы работают (что-то, что определенно необходимо исследовать), или очень о том, что продолжается в браузере, но великолепное место для запуска было бы источником браузеров с открытым исходным кодом, прежде всего, Chrome и Firefox. Chrome является особенно хорошим проектом посмотреть на то, поскольку они только делают то, с чего я ожидал бы, что Вы запуститесь: хром и бэкенд браузера. Забудьте создавать механизм визуализации сначала - используют WebKit или Gekko.

14
ответ дан strager 24 November 2019 в 14:49
поделиться

Вы имеете в виду как в записи Вашего собственного механизма визуализации?

я могу только сказать удачу. Много лет человека вошли в текущее поколение различных браузеров, Если Вы захотите добиться большего успеха, чем любой из них, то Вам будут нужны некоторые серьезные навыки. Если необходимо спросить, где запустить, у Вас, вероятно, есть больше, чем несколько лет исследования для движения, прежде чем имело бы любой смысл пробовать выполнить такую задачу.

Тем не менее вот некоторые (очевидные) указатели:

  1. запись много кода, который делает мелочи, как, решает весь projecteuler.net , проблемы
  2. изучают все, что Вы можете о своем инструментарии и его стандартах сообщества
  3. партии записи, больше кода
  4. получает реальное твердое схватывание конечных автоматов
  5. запись, еще больше кода
  6. узнает все о стопке tcp/ip и как это используется для http
  7. , изучают все, что Вы можете о http
  8. узнавать, что стандарты (HTML, xml, sgml, css)
  9. празднуют Ваш 150-й день рождения.
  10. начинают на фактическом проекте браузера.

редактирование ниже здесь

я не имел в виду, чтобы оно или мотивировало или демотивировало, просто попытка показать Вам, что браузер является действительно большим проектом и что действительно большие проекты требуют большой мысли. Тупая честность опрыснута юмором.

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

Ofcourse, если это - то, что Вы хотите сделать, не позволяйте моему комментарию стоять на Вашем пути. Можно, вероятно, добиться большего успеха, чем Internet Explorer.

14
ответ дан Kris 24 November 2019 в 14:49
поделиться

Как все остальные уже сказали, веб-браузер является огромным проектом. Необходимо волноваться о tcp/ip& сокеты, представляя HTML, с помощью css, создавая модель DOM, выполняя JavaScript, имея дело с уродливой разметкой и кодом, и обрабатывая все типы файлов, прежде чем можно будет даже думать обо всех вещах люди, ожидают от браузера (т.е. закладки, история, частный просмотр, безопасность, и т.д.) Это - огромный проект.

Однако это может быть сделано. Мое предложение состояло бы в том, чтобы пойти посмотреть на источник Firefox. Я знаю, что Вы сказали, что хотите создать браузер с нуля, но это было бы очень полезно для , узнают из проекта с открытым исходным кодом, сначала.

я загрузил бы источник Firefox и медленно разделял бы его вниз. Другими словами, я взял бы источник, и удаляют вся функциональность установки закладки. Затем я удалил бы способность обработать дополнения. Затем я удалил бы весь код относительно того, чтобы сохранить файлы. Я продолжил бы этот процесс, пока я не добрался очень основной веб-браузер. Я просмотрел бы тот код.

Затем я начал бы создавать свое собственное. Я взял бы знание, которое я получил от демонтирования Firefox, и я поместил его в создание нового браузера.

А все из удачи Вам!

8
ответ дан stalepretzel 24 November 2019 в 14:49
поделиться

Вы могли запустить с правильно построенного и допустимого XHTML, который должен быть легче, чем суп тега, с которым Ваш браузер встретится в реальной "жизни".

Тогда необходимо найти способ изогнуть реальный HTML от сети до потребностей.

, Но не разыгрывают себя: браузер не является маленьким проектом.

4
ответ дан stesch 24 November 2019 в 14:49
поделиться

... тогда начните волноваться о безопасности

(нефункциональный, и сквозные проблемы нужно обычно считать честными хотя:))

3
ответ дан Matt 24 November 2019 в 14:49
поделиться

очень амбициозный проект, но один разработчик не может сделать этого одного, Вам нужна команда (менеджер проектов, тестеры...), и возможно необходимо рассмотреть выбор языка c# работы только над окнами (я знаю моно на Linux, но это не то же), так или иначе, я желаю Вам удачи, и я буду рад использовать Ваш браузер: D

1
ответ дан Hannoun Yassir 24 November 2019 в 14:49
поделиться

У Вас действительно есть много свободного времени в Вашей руке, не так ли? AFAIK, большинство браузеров было записано в C++, не, всем пользователям установили платформу.NET на их компьютерах и если они делают это не могла бы быть версия, в которой Вы нуждаетесь.

Это могло взять Вас годы, но так или иначе, существует много браузеров с открытым исходным кодом там, FireFox, Google Chrome.. и т.д. Вы могли запустить, взглянув на код, удачу с этим:)

0
ответ дан Waleed Eissa 24 November 2019 в 14:49
поделиться
Другие вопросы по тегам:

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