Как стать автором
Поиск
Написать публикацию
Обновить
24.03

Браузеры

Веб-обозреватели

Сначала показывать
Порог рейтинга
Уровень сложности

Кому жаловаться на вредоносный ресурс?

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров4.6K

Привет, Хабр!

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

Читать далее

А что, так можно было?

Время на прочтение5 мин
Количество просмотров17K

Привет Хабр!

Меня зовут Алекс, и я автор фронтенд-библиотеки для создания UI-компонентов-агностиков - Symbiote.js. Я не единственный разработчик, но главный контрибьютор и тот, кто отвечает за концепцию, развитие, документацию, деврел, DX все остальное. Мейнтейнер то есть. Всем этим я занимаюсь в свободное от другой работы время, на которой я фуллстек, R&D-инженер и техлид.

Сегодня, я бы хотел рассказать о том, как появился Симбиот, и почему он вообще существует, при наличии огромного зоопарка библиотек и фреймворков для фронтенда, с куда более значительной аудиторией и поддержкой от крупных IT-компаний. Ведь мы, инженеры, очень НЕ любим, когда вокруг нас начинают плодиться лишние сущности, и сразу начинаем угрожающе размахивать бритвой Оккама. Верно? (хитро прищурился)

Читать далее

Как я узнал номер паспорта и телефон премьер-министра по фото в Instagram*

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров26K

Акт 1: полдень воскресенья


Я занимался домашними делами, ни о чём плохом не думал, пил водичку и ни в коем случае не имел никаких намерений заниматься подрывной деятельностью против Австралийского Союза.

А потом я получил сообщение в «групповом чате»1.

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

Обладателем талона был Тони Абботт, один из множества бывших премьер-министров Австралии.
Читать дальше →

Встречаем нейроредактор в Браузере, или Как мы учили LLM-модели помогать пользователям с текстами

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров8.3K

Наверное, каждый знает, насколько порой бывает сложно справиться с написанием и редактированием текста: будь то банальная прокрастинация, «проблема чистого листа» или поиск ошибок и опечаток по всем правилам русского языка. А порой нам просто нужно сделать текст чуть попроще, чтобы случайно не перегрузить его сложными оборотами, или покороче, чтобы он вместился в маленький пост в соцсетях.

В начале года Браузер обновился и обзавёлся новыми нейросетевыми функциями. Сегодня мне бы хотелось остановиться на нейроредакторе, который облегчает монотонную и трудоёмкую работу с текстом. Под катом — история о том, как мы улучшали предыдущее решение и в итоге пришли к идее отдельного инструмента. Ещё расскажу, как мы обрабатываем кастомный промт и почему переписывание и генерация — это разные задачи.

Читать далее

HTML-теги с искусственным интеллектом

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров2.4K

Всем привет! Помните череду недавних анонсов от IT-гигантов, о различном ИИ-функционале, внедренном во все, что только можно? Среди этих анонсов, например, были помощники в написании текстов писем и сообщений для почтовых и других сервисов. Эти помощники могут проверить вас на ошибки, перевести текст на другой язык, поменять тональность и настроение текста, сделать его более кратким, либо, напротив, дополнить.

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

Итак, в этом материале, я предлагаю вам вместе со мной создать умный HTML-тег - текстовое поле, которое сможет помогать пользователю в настройке введенного текста. Этот тег можно будет использовать на любом сайте, в любом веб-приложении, созданном с помощью любого современного фреймворка, или даже, в простом статическом HTML-файле.

Читать далее

Использование стандарта ES5 в Интернете

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров3.9K

Что сейчас со стандартом ES5 и нужно ли его поддерживать?

В данной статье рассматривается распространенность транспилирования ES6+ кода в ES5

В 2017 году я написал статью, в которой показал веб-разработчикам, как они могут деплоить код ES6+ (он же ES2015) в продакшен, без необходимости транспилировать его в ES5. Этот метод был выходом для разработчиков веб-сайтов, которые хотели без ограничений писать современный код, не беспокоясь о раздувании транспилера или полифилла.

К сожалению, хотя многие разработчики веб-сайтов могли использовать этот метод, большинство авторов библиотек JavaScript не могли.

Читать далее

Необычные приёмы отладки, которые браузер от вас скрывает

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров20K

Список неочевидных, но при этом полезных хаков, которые позволят использовать отладчик вашего браузера1 более полноценно. Для понимания материала статьи потребуется как минимум средний уровень владения инструментами разработчика.
Читать дальше →

Как устроено хранение разных типов данных в веб-буфере обмена

Время на прочтение16 мин
Количество просмотров2.2K

Если вы уже давно имеете дело с компьютерами, то, вероятно, знаете, что в буфере обмена (clipboard) могут храниться различные типы данных (изображения, текст с форматированием, файлы и так далее). Меня как разработчика ПО начало напрягать то, что я не знаю, как буфер обмена хранит и упорядочивает данные разных типов.

Недавно я решил решить эту загадку и написать пост на основании полученной информации. Мы рассмотрим буфер обмена в вебе и его API, а также коснёмся того, как он взаимодействует с буферами обмена операционных систем.

Начнём мы с изучения API веб-буферов обмена и их истории. API накладывают интересные ограничения, связанные с типами данных; мы узнаем, как некоторые из компаний обходят эти ограничения. Также мы рассмотрим некоторые из предложений, предназначенных для устранения этих ограничений (самое примечательное из них — это Web Custom Formats).

Если вы когда-нибудь задавались вопросом, как устроен веб-буфер обмена, то этот пост для вас.
Читать дальше →

Ultimatum — очередной форк chromium-а или сказ о том как я кеши приручал

Уровень сложностиСредний
Время на прочтение29 мин
Количество просмотров3.5K

image


Добрый день! Меня зовут Тимур и я программист.


Сегодня я предлагаю рассмотреть очередную мою работу. Я пробросил в js прямой доступ к кешам chromium-a и теперь ими можно манипулировать из расширений браузера (при наличии соотв. permissions). Если вас не интересуют кресты а хочется халяльного js кода — переходите сразу в конец статьи, там описано реализованное api и как им пользоваться.


Итак, о чем речь и зачем это нужно?

Читать дальше →

Буфер обмена веб-приложений и как он хранит различные данные

Уровень сложностиПростой
Время на прочтение17 мин
Количество просмотров5.2K

Если вы достаточно давно пользуетесь компьютером, вы, скорее всего, знаете, что буфер обмена может хранить различные данные (картинки, текст с форматированием, файлы и др.). Как разработчика, меня начало раздражать то, что у меня нет точного представления, как буфер обмена хранит и организует данные разных типов.

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

Давайте начнем с исследования различных API и их истории. Эти API имеют весьма интересные ограничения по типам данных, и мы увидим, как некоторые компании обошли эти ограничения. Мы также рассмотрим некоторые предложения, которые направлены на устранение этих ограничений (наиболее примечательное из них — Web Custom Formats).

Если вам хотя бы раз было интересно, как работает веб-буфер обмена, то эта статья для вас.

Читать далее

Vivaldi 6.9 для Android — Настройся по-новому

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров2.3K

Не всегда изменений должно быть много - иногда достаточно одного, но очень важного улучшения. Встречайте Vivaldi 6.9 для Android.

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

Читать далее

CORS — это тупо

Время на прочтение7 мин
Количество просмотров25K

Технология CORS и действующее в браузерах правило ограничения домена – те вещи, которые часто понимаются превратно. Ниже я объясню, что они собой представляют, и почему пора перестать волноваться по их поводу.

Замечание: я собираюсь рассказать о CORS и правиле ограничения домена как о единой сущности, поэтому далее часто буду употреблять эти термины как синонимы. Дело в том, что они, по сути – части одной системы, работают в сочетании друг с другом и помогают вам решать, что можно сделать с какими ресурсами смешанного происхождения. В принципе, если ваши запросы поступают из разных источников, то вам придётся иметь дело с правилами, политиками и механизмами CORS.

Прежде всего, отмечу, что CORS — это огромный костыль, помогающий снизить влияние ошибок, передающихся с унаследованным кодом. В этой системе защита предоставляется как по принципу отказа от участия (opt-out) в попытке частично купировать XSRF-атаки против незащищённых или немодифицированных сайтов, так и по принципу активного участия (opt-in), чтобы на сайте включалась активная самозащита. Но ни одной из этих мер не достаточно, чтобы решить целенаправленно созданную проблему. Если на вашем сайте используются куки, то вы обязаны деятельно позаботиться о его безопасности. (Ладно, это касается не любого сайта, но лучше перестрахуйтесь. Выделите время на тщательный аудит вашего сайта или выполните описанные ниже простые шаги. Даже придерживаясь самых разумных паттернов, вы всё равно можете подставиться под XSRF-уязвимости).

Читать далее

Как новичку поучаствовать в устранении багов Google Chrome

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров4.4K

Недавно я завершил процесс устранения бага в веб-браузере Chromium. Это был мой первый опыт контрибьютинга в проект Chromium, да и вообще в какой-либо опенсорсный проект такого масштаба, он сильно отличался от любой моей прошлой работы над open source.

Я решил написать обзор всего процесса с начала до конца, чтобы о нём могли получить представление разработчики, сами стремящиеся к подобной работе.

Заранее скажу, что устранение этого бага стоило всех моих усилий, и я очень горд наличием этого достижения в моём портфолио разработчика ПО.
Читать дальше →

Ближайшие события

Как удалить JavaScript из файлов PDF

Время на прочтение3 мин
Количество просмотров8.6K
Как известно, внутри файлов PDF можно размещать скрипты JavaScript, которые будут запускаться на исполнение в браузере. Например, если загрузить этот PDF, то вы увидите результат выполнения скрипта:



Это стандартная функция формата. Все разработчики браузеров знают, что PDF подобно HTML является активным контентом и может содержать исполняемые скрипты.
Читать дальше →

ИИ как платформа

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров1.2K

Новая предметная область

ИИ - тема хайповая. Часто мы рассуждаем о том, сможет ли ИИ заменить мясных программистов и если сможет, то когда именно. Есть два базовых полярных мнения и множество комбинаций между ними: на одном полюсе считают, что скоро нам всем кирдык и интеллектуальный труд доживает последние дни. На другом полюсе - скептически ухмыляются, и говорят, что никакой особенной угрозы нет: у ИИ нет и никогда не будет того, что есть у человеческих мозгов.

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

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

Читать далее

Vivaldi 6.9 — Наглядный комфорт

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров3.7K

Как правило, основная работа по улучшению программного продукта всегда происходит внутри приложения и не попадает на глаза пользователей. Но ведь хочется наглядно увидеть, что изменилось к лучшему - и тут разработчики также готовят разные вкусности для тех, кто будет работать с программой ежедневно. В новой версии Vivaldi 6.9 для десктопов помимо большого числа внутренних изменений мы подготовили и несколько весьма удобных мелочей, которые будут радовать пользователей.

Читать далее

JPEG XL лучше всех, но Google против

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров28K

JPEG XL превосходит все форматы по уровню сжатия и визуальному восприятию (DSSIM), источник

Оригинальный формат JPEG разработан в далёком 1992 году и уже устарел. Вопрос в том, кто придёт ему на смену. Идеальной заменой казался JPEG XL, в сравнительных тестах он показывает превосходство над AVIF, WebP и другими форматами. Можно было бы сказать, что будущее за JPEG XL, если бы не один нюанс: в 2022 году корпорация Google почему-то удалила его поддержку из браузера Chrome. И не хочет возвращать обратно.
Читать дальше →

5 стадий принятия: как протестировать плагин на разных версиях браузера

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров1.6K

Плагины являются важной частью современных веб-сайтов, обеспечивая им дополнительные функциональные возможности. Однако чтобы обеспечить безопасную и стабильную работу плагина на различных версиях браузеров, необходимо проводить тщательное тестирование. Иногда приходится тестировать плагин на нескольких браузерах одновременно, но что еще страшнее — на нескольких версиях разных браузеров. Как это реализовать без потери нервных клеток? 

Меня зовут Ксения, я QA-специалист SimbirSoft. Поделюсь своим горьким опытом выбора способа установки разных версий браузера, а также советами по упрощению этого процесса — с помощью песочницы и виртуальной машины.

Читать далее

Понятно про браузер: критические этапы рендеринга, аппаратное ускорение и оптимизации

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров7K

В статье детально разобраны этапы браузерного рендеринга, от парсинга HTML до композиции, описана техническая работа на этапе лейаута, приведены практические советы по оптимизации, которые помогут выявлять и устранять узкие места в коде. Описана польза FLIP анимаций и дан пример ее реализации.

Читать далее

Можно ли отследить пользователя Telegram через отпечаток браузера в Mini App

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров7.7K

Недавно мне потребовалось запустить в обычном браузере встроенное в Telegram веб-приложение, называемое Mini App. Объектом изучения стал самый популярный на данный момент кликер Hamster Kombat. Решением стал скрипт для браузерного расширения TamperMonkey, в котором я реализую объект window.Telegram с подмененным свойством platform для обхода проверки того, что приложение запускается на мобильном устройстве. Но самым интересным оказалось другое.

В процессе поиска решения я наткнулся на любопытное поведение кликера. На этапе аутентификации фронтенд совершает POST-запрос к https://api.hamsterkombatgame.io/auth/auth-by-telegram-webapp. В теле запроса, помимо данных пользователя Telegram, необходимых для аутентификации, передается свойство fingerprint, содержащее хэш идентификатора пользователя, и набор информации, характерный для отпечатка браузера.

Читать далее

Вклад авторов