Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для URL, имени файла, имени объекта в каком-то софте и тд. Требования совместимости простые: в тексте должны быть только допустимые символы. Обычно это a-z, 0-9 и "_" или "-". То есть, только прописные буквы латинского алфавита и цифры (как пример).
Допустим, нам нужно название статьи в блоге преобразовать в slug для добавления его в URL этой статьи. Как это лучше всего сделать?
В Django по умолчанию есть готовая функция slugify для таких случаев.
Но я её никогда не использую. Почему? Потому что её недостаточно!
Приведём пример
>>> from django.utils.text import slugify
>>> slugify('This is a Title')
'this-is-a-title'
Пока всё отлично
>>> slugify('This is a "Title!"')
'this-is-a-title'
Спец символы удалились, всё хорошо.
>>> slugify('Это заголовок статьи')
''
Вот и приехали 😢. Если текст не английский то буквы просто игнорируются. Можно это поправить
>>> slugify('Это заголовок статьи', allow_unicode=True)
'это-заголовок-статьи'
Но тогда мы не вписываемся в условие. У нас появилась кириллица в тексте.
Так как я часто пишу сайты для русскоязычных пользователей эта проблема весьма актуальна. Я не использую стандартную функцию и всегда пишу свою.
Оригинал я не беру в расчёт и пишу полностью свою функцию. И так, по порядку:
🔸1. Исходный текст:
>>> text = 'Мой заголовок №10 😁!'
Взял специально посложней со специальными символами.
🔸2. Транслит
Необходимо сделать транслит всех символов в латиницу. Здесь очень выручает библиотека unidecode. Помимо простого транслита кириллицы в латиницу она умеет преобразовывать спец символы и иероглифы в текстовые аналоги.
from unidecode import unidecode
>>> unidecode("Ñ Σ ® µ ¶ ¼ 月 山")
'N S (r) u P 1/4 Yue Shan'
Очень крутая библиотека, советую👍
В нашем случае получаем такое преобразование:
>>> text = unidecode(text)
>>> print(text)
'Moi zagolovok No. 10 !'
Отличный транслит. Смайл просто удалился, хотя я ждал что-то вроде :). Ну и ладно, всë равно невалидные символы.
А еще наш код уже поддерживает любой язык, будь то хинди или корейский.
🔸4. Фильтр символов
Unidecode не занимается фильтрацией по недопустимым символам. Это мы делаем в следующем шаге через regex. Просто заменим все символы на "_" если они вне указанного диапазона.
>>> text = re.sub(r'[^a-zA-Z0-9]+', '_', text)
>>> print(text)
'Moi_zagolovok_No_10_'
Символ "+" в паттерне выручает когда несколько недопустимых символов идут рядом. Все они заменяются на один символ "_".
🔸5. Slugify
Осталось удалить лишние символы по краям и сделать нижний регистр
>>> text = text.strip('_').lower()
>>> print(text)
'moi_zagolovok_no_10'
Получаем отличный slug! 😎
🌎 Полный код в виде функции.
______________
PS. Проверку что в строке остался хоть один допустимый символ я бы вынес в отдельную функцию.
#libs#tricks#django
Acabo de leer esta nota de Marcos Mansueti y no puedo no compartirla! Sobre el DESASTRE de la gestión de Cambiemos en Argentina 🇦🇷 en materia de protección de datos personales y seguridad de la información #infosec#ciberseguridad
Es un poco larga, pero recupero cuatro partes a modo de síntesis de lo que cuenta (igual, les invito a leerla porque es LA MEJOR HISTORIA DE TERROR😱 , con el triste toque de que es todo REAL 😵‼️)
😈 "La Argentina pasó ser un descontrol en materia de datos personales, información de los ciudadanos, contratos con empresas multinacionales, sistemas de control, gestión y seguridad informática en el estado."
👿 "El Ministerio de Modernización sirvió solamente para recolectar información de manera indiscriminada como aparato de inteligencia de big data dentro del estado."
💸 "No hay ni existe registro ni control de uso de webservices ni de traspaso de base de datos entre organismos estatales, por una simple razón: no hay interés en el control amparándose en la falta de conocimiento y la falta de respeto hacia las leyes en quienes están "arriba". Saben que los datos y la información hoy equivalen a una mina de oro."
💀 "Las principales problemáticas que podemos encontrar hoy en cualquier organismo son:
a) falta de control del tráfico de datos,
b) redes inseguras,
c) utilización de emails personales y/o gratuitos,
d) cero controles en credenciales y accesos para personas que ya no trabajan más o usuarios duplicados y falta de control de registro de accesos.
d) códigos inseguros y servidores desactualizados,
e) falta de documentación de desarrollos e infraestructura,
f) falta de backups y políticas de disaster recovery,
g) comunicación de funcionarios a través de Whatsapp como lo hace cualquier hijo de vecino
h) no hay nada ni nadie que ante un evento de ciberdelito actúe brindando una solución en tiempo y forma, tanto para un civil, organismo o una fuerza de seguridad."
ИИ находит уязвимости там, где обычные сканеры годами «вылизывали» код. И это меняет правила игры.
Один из крупнейших специалистов в кибербезопасности, Алексей Лукацкий, делится наблюдением: Anthropic и OpenAI признали, что их новые модели (Claude Opus 4.6 и GPT-5.3-Codex) перешли некую грань.
Они больше не просто генерируют текст. Они читают историю коммитов, находят слепые зоны в коде и сами пишут эксплойты. Anthropic уже нашла 500+ критических багов в проектах, которые годами проверяли стандартными средствами, но ничего не могли найти.
Главный вывод не в цифрах, а в смене парадигмы:
1. Скорость. 90-дневное окно на исправление уязвимостей может исчезнуть. Если ИИ находит баг за час, у команд просто нет традиционного запаса времени.
2. Испуг создателей. И Anthropic, и OpenAI вводят «Lockdown Mode» и режимы верификации личности. Они честно признаются: «Мы не знаем, пересекли ли мы черту, но будем действовать так, будто пересекли».
3. Главный вопрос. Обычных пользователей отключают от «кибер-функций». Но кто получит «лицензию на отстрел»? Кому дадут полную мощь этих моделей?
Раньше нас защищали от ИИ аргументом «модель еще слабая». Теперь нас защищают от ИИ... сами создатели ИИ, потому что модель стала слишком сильной.
#infosec#AI#кибербезопасность#уязвимости#тенденции
https://t.me/semasci
6 Best Secure Messaging Alternatives to WhatsApp | Avoid the Hack – https://avoidthehack.com/best-secure-messengers
The content of your messages and the metadata associated with them should be secure and private. Unfortunately many messengers out there fail to do this.
Telegram operates in the cloud, and while this does have good portability across multiple devices and device types, the service provider (or anyone with access to the cloud server) could theoretically read them at any time with relative ease; Telegram stores messages on the third-party cloud provider's server.
According to Telegram’s privacy policy, the service itself logs IP addresses and phone numbers.
#Infosec#Session#SimpleXchat#Briar#Threema
#Element#Telegram#privacy
#python#cli#cti#cybersecurity#forensics#hacktoberfest#information_gathering#infosec#linux#osint#pentesting#python#python3#reconnaissance#redteam#sherlock#tools
Sherlock is a powerful tool that helps you find social media accounts by username across over 400 networks. It's easy to use and works on many operating systems like macOS, Linux, and Windows. You can install it using methods like `pipx` or Docker, and then simply type the username you want to search for. Sherlock will show you where that username is used on different social media platforms. This tool is useful for gathering information quickly and can be run locally or even online through services like Apify. It saves time and effort in finding accounts across many platforms.
https://github.com/sherlock-project/sherlock