QR-коды: генерация и использование
Как работают QR-коды, типы данных (URL, WiFi, vCard), версии, уровень коррекции, применение.
Введение
QR-коды встречаются сегодня повсюду: на меню в ресторанах, на билетах в метро, на визитках, в платёжных приложениях, на вывесках магазинов. Этот компактный квадрат с чёрно-белыми точками умеет хранить сотни символов и мгновенно считывается камерой смартфона. В статье разберёмся, как устроен QR-код, какие типы данных он поддерживает, что такое версия и уровень коррекции ошибок, и как создать собственный код. Сгенерировать QR-код онлайн можно в нашемQR-генераторе.
Что такое QR-код
QR-код (Quick Response Code) — это двумерный штрих-код, разработанный в 1994 году японской компанией Denso Wave для отслеживания деталей на автопроизводстве. В отличие от обычного одномерного штрих-кода, который кодирует лишь десятки цифр, QR-код вмещает до 7089 цифр или 4296 буквенно-цифровых символов.
Стандарт QR-кода описан в ISO/IEC 18004. Алгоритм свободен от патентных ограничений, поэтому QR поддерживается во всех современных смартфонах и используется в тысячах приложений.
Анатомия QR-кода
Стандартный QR-код состоит из нескольких обязательных элементов:
- Поисковые узоры (Finder Patterns) — три больших квадрата в углах. Они помогают камере найти код и определить его ориентацию.
- Выравнивающие узоры (Alignment Patterns) — маленькие квадраты, помогающие при искажениях перспективы.
- Синхронизирующие полосы — пунктирные линии между поисковыми узорами, задающие шаг сетки.
- Данные и код коррекции ошибок (Reed-Solomon) — основная часть кода.
- Тихая зона (Quiet Zone) — белая рамка шириной не менее 4 модулей вокруг кода.
Версии QR-кода
Стандарт описывает 40 версий QR-кода — от 21×21 модулей (версия 1) до 177×177 (версия 40). Чем больше данных нужно закодировать, тем выше версия и крупнее сам код.
| Версия | Размер | Цифры | Буквы | Байты |
|---|---|---|---|---|
| 1 | 21×21 | 41 | 25 | 17 |
| 5 | 37×37 | 154 | 108 | 64 |
| 10 | 57×57 | 311 | 219 | 134 |
| 20 | 97×97 | 667 | 467 | 286 |
| 40 | 177×177 | 7089 | 4296 | 2953 |
Коррекция ошибок
QR-код устойчив к повреждениям благодаря коду Рида-Соломона. Существует четыре уровня коррекции, каждый из которых добавляет избыточные данные:
- L (Low) — восстанавливает до 7% потерянных данных.
- M (Medium) — до 15%.
- Q (Quartile) — до 25%.
- H (High) — до 30%.
Чем выше уровень, тем больше размер кода при тех же данных. Уровень M подходит для большинства случаев, H — для кодов на упаковке или улице, где код может повредиться. Например, QR на билете в музей лучше генерировать с уровнем H.
Типы данных
QR-код может содержать разные типы данных. Камера смартфона распознаёт формат автоматически и предлагает соответствующее действие.
1. URL
Самый частый сценарий — код содержит ссылку. Пользователь наводит камеру, нажимает «открыть» и переходит на сайт.
2. Текст
Произвольная строка. Подходит для заметок, промокодов, инструкций.
3. WiFi
Специальный формат WIFI:T:WPA;S:NetworkName;P:password;; позволяет гостям подключиться к сети, не вводя пароль вручную. Создать такой код можно в нашем WiFi-QR-генераторе.
4. Контакт (vCard)
QR-код с визиткой в формате vCard. Сканируешь — и контакт добавляется в адресную книгу.
5. SMS и email
Код формата smsto:+79991234567:Текст сообщения илиmailto:user@example.com?subject=...&body=... открывает соответствующее приложение с заполненными полями.
6. Геолокация
Код с координатами geo:55.7558,37.6173 открывает карты с указанной точкой.
7. Платёжные данные
В России платёжные QR-коды часто соответствуют стандарту СБП (Система быстрых платежей). В них зашит номер счёта, банк-получатель и сумма.
Генерация QR-кода
JavaScript (библиотека qrcode)
// npm install qrcode
const QRCode = require('qrcode');
// Генерация в Data URL (PNG)
QRCode.toDataURL('https://converthub.ru', {
errorCorrectionLevel: 'M',
width: 300,
margin: 2,
color: { dark: '#000000', light: '#ffffff' }
}, (err, url) => {
console.log(url); // data:image/png;base64,...
});
// Генерация SVG
QRCode.toString('https://converthub.ru', {
type: 'svg',
errorCorrectionLevel: 'M'
}, (err, svg) => {
console.log(svg);
});Python (qrcode)
import qrcode
img = qrcode.make('https://converthub.ru')
img.save('qr.png')
# С настройками
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_M,
box_size=10,
border=4,
)
qr.add_data('https://converthub.ru')
qr.make(fit=True)
img = qr.make_image(fill_color='black', back_color='white')
img.save('qr.png')Go (go-qrcode)
package main
import (
"github.com/skip2/go-qrcode"
)
func main() {
err := qrcode.WriteFile("https://converthub.ru",
qrcode.Medium, 256, "qr.png")
if err != nil {
panic(err)
}
}Дизайн QR-кодов
Современные QR-коды не обязаны быть чёрно-белыми квадратами. При сохранении читаемости можно:
- Менять цвета переднего и заднего плана (но сохранять контраст не ниже 4:1).
- Использовать скруглённые модули вместо квадратных.
- Вставлять логотип в центр кода (с учётом коррекции ошибок).
- Применять градиенты и паттерны.
Главное правило — проверяйте читаемость на нескольких смартфонах после любого дизайна. Красивый, но не сканируемый код — впустую потраченные деньги.
Безопасность QR-кодов
QR-код сам по себе нейтрален: он лишь хранит строку. Но атакующие могут использовать его для обмана пользователя. Основные угрозы:
- Phishing. Код ведёт на сайт, имитирующий банк, и просит ввести данные карты.
- Подмена ссылки. На наклейке поверх оригинального QR-кода наклеен другой.
- Автоматический запуск действий. QR с
mailto:илиtel:открывает приложения без подтверждения. - Сбор данных. Сервер по ссылке фиксирует IP, User-Agent, геолокацию.
Рекомендации пользователям: проверяйте URL перед нажатием «открыть», не вводите пароли и данные карт на сайтах, открытых через QR. Рекомендации бизнесу: держите QR-коды под прозрачной защитной плёнкой, периодически проверяйте наклейки.
Динамические vs статические QR-коды
| Свойство | Статический | Динамический |
|---|---|---|
| Содержимое | Зашито в коде | Короткая ссылка на сервер |
| Можно изменить | Нет | Да |
| Аналитика | Нет | Сканов, гео, время |
| Размер | Зависит от данных | Компактный |
| Зависимость от сервера | Нет | Да |
Динамические QR удобны для маркетинга: можно менять целевую страницу, собирать статистику сканирований и проводить A/B-тесты. Статические — для визиток, инструкций и случаев, когда код должен жить вечно без сервера.
Применение QR-кодов в бизнесе
- Меню в ресторанах и кафе.
- Электронные билеты в театр, кино, транспорт.
- Платёжные ссылки СБП на кассе.
- Инструкции к товарам и оборудованию.
- Логин через QR (WhatsApp Web, Telegram Desktop).
- Инвентаризация на складе.
- Подтверждение подлинности товара.
Заключение
QR-код — простой и универсальный инструмент для передачи короткой информации от физического объекта в смартфон. Он бесплатен в использовании, поддерживается всеми камерами телефонов и легко генерируется. Главное при работе с QR — помнить о безопасности: проверяйте ссылки перед открытием и не вводите конфиденциальные данные на сайтах, открытых через незнакомый код. Создать QR-код для своего проекта можно в нашемQR-генераторе, а специальный код для WiFi — в WiFi-QR-генераторе.
Попробуйте эти инструменты
Похожие статьи
Как создать надёжный пароль: генератор паролей
Правила создания паролей, длина, символы, энтропия, менеджеры паролей, двухфакторная аутентификация.
MD5 хеш: что это и безопасно ли использовать
Алгоритм MD5, хеширование, коллизии, почему MD5 не для паролей, где ещё можно использовать.
SHA-256: безопасное хеширование
Алгоритм SHA-256, применение в блокчейне, SSL, цифровые подписи, сравнение с MD5 и SHA-1.
UUID: генерация уникальных идентификаторов
UUID версии 1-5, GUID, использование в базах данных, распределённых системах, генерация.