Обновить
16K+

Amazon Web Services *

Инфраструктура платформ облачных веб-сервисов

2,07
Рейтинг
Сначала показывать
Порог рейтинга

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

Я запустил скрапер вечером, он собрал пару тысяч страниц, я ушёл спать. Утром в логах сплошные 403 и капчи, а в базе за ночь легло страниц двести. Ок, думаю, прокси спалили. Поменял пул на резидентный, накинул puppeteer-stealth, сверху ещё пачку заплаток с гитхаба. Проработало ровно до следующего вечера. Потом опять тыква.

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

Осмотрим пациента

Любой стелс устроен одинаково: поверх Chrome вешается слой JavaScript, который переписывает то, на что смотрит антибот. navigator, canvas, WebGL и ещё десятки поверхностей. И вот тут первая засада.

Берём подменённую функцию и просим показать её исходник через toString(). Настоящая функция браузера отвечает [native code]. А моя заплатка честно показывает мой же JavaScript. Спалился на первой строчке.

Ладно, стелс это тоже патчит. Но детектор не дурак и лезет глубже.

  • Сверяет главный фрейм с воркером и iframe. Заплатка живёт в одном контексте, а тот же объект, вытащенный из другого, её не видит.

  • Ловит утечку Runtime.enable, по ней сразу понятно, что браузером кто-то рулит по CDP.

  • Смотрит на форму TLS-хендшейка (JA3/JA4) и сверяет её с тем, что обещает User-Agent. Заявляешь Chrome на Windows, а рукопожатие выдаёт питоновский клиент.

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

Где-нибудь да разъедется. И так будет всегда, потому что я крашу браузер сверху, а не меняю его изнутри. Это не «кривая заплатка», это тупик подхода: маскировка и то, что её просвечивает, написаны на одном языке. Тот, кто читает страницу, всегда на уровень ниже того, кто патчит её из той же страницы.

Вскрытие

Раз проблема в слое поверх браузера, надо убрать слой и лезть в сам браузер. Я взял исходники Chromium и пошёл править фингерпринт прямо в C++, в Blink, V8 и BoringSSL.

Идея простая. Каждое значение, которое читает детектор, должно быть не подменено сверху, а просто другим внутри, ровно как оно было бы на чужой машине. Тогда никакого слоя нет. Подменённый геттер это настоящий C++ геттер, поэтому toString() в любом реалме честно отдаёт [native code]. Сверка «фрейм против воркера» ничего не находит, потому что находить нечего: значение одно и то же везде, оно вкомпилировано в движок. Браузер, который изучает сам себя, видит обычный Chrome. Потому что это и есть обычный Chrome, просто с другими числами внутри.

Что заработало, а что нет

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

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

  • CreepJS: 0% headless, 0% stealth.

  • Sannysoft: всё зелёное.

  • BrowserScan: пишет «Normal».

  • Живой Cloudflare Turnstile: проходит без клика мышкой.

Всё это воспроизводится одним скриптом tools/gauntlet.py из репозитория, так что можно прогнать самому и убедиться. Персона при этом собирается когерентно: платформа, GPU, таймзона, язык, набор голосов, раскладка клавиатуры и форма TLS съезжаются в один правдоподобный Windows-девайс, а не в ме

По коду менять нечего

Движок поднимает сырой CDP на порту 9222, без утечки Runtime.enable. Я цепляю к нему свой ж остальной код работает как работал. Меняется одна строчка, адрес подключения.

Патчей тридцать четыре, каждый маленький и на одну задачу, читается за минуту. Всё открыто единому слову, соберите движок сами и проверьте, что внутри ровно то, что заявлено.

github.com/tiliondev/fortress

Теги:
+1
Комментарии0

💀 Когда диаграмма - источник истины, архитектура умирает первой.

📝 Аналитики, использующие PlantUML, Miro, Draw.io, Visio, Structurizer и прочее, забывают что знания в диаграммах - всё равно что код в скриншотах.

Знания должны храниться в виде взаимосвязанных элементов Модели, а диаграммы должны быть лишь их Проекциями. Разработчики ArchiVision.org это прекрасно понимают. Именно это делает систему ArchiVision значительно более эффективным инструментом для хранения знаний об ИТ системах чем все вышеназванные сервисы. При этом, генерируемые ею диаграммы живые, интерактивные и редактируемые. Система также поддерживает горячие клавиши для эффективной работы с моделью и диаграммами. Горячие клавиши позволяют рисовать быстрее, чем большинство перечисленных сервисов, тем более чем писать в PlantUML, Structurizer и аналогичных.

⚡ Ключевое отличия:
- 👎 в названных выше инструментах вы редактируете диаграммы;
- 👍 в ArchiVision вы работаете с моделью, а диаграммы - это её визуальная проекция, через которую тоже можно развивать модель.

🔄 За счет этого:
- 🧠 модель становится единственным источником истины;
- 🧱 диаграммы перестают быть хрупким артефактом;
- 🧩 структура модели позволяет устранять разночтения, дублирование и рассинхронизацию;
- ✅ система способна контролировать ввод и проверять полноту данных;
- 🧼 архитектура перестаёт расползаться по версиям и интерпретациям;
- ⌨️ навигация и горячие клавиши — это часть работы с моделью, а не удобство интерфейса.

🎥 Это видео - пример того, как сочетание модели, интерактивных диаграмм и горячих клавиш меняет процесс проектирования.

Ну а вот сам канал с видеоинструкциями находится здесь.

Теги:
Всего голосов 2: ↑1 и ↓1+2
Комментарии2

Анимация AWS сервисов ✨ 🎉

Парни из AWS Fundamentals запилили каталог AWS анимаций. В настоящее время он включает в себя 14 сервисов и паттернов, но, ожидается, что команда будет добавлять новые еженедельно!

В текущем каталоге:

  • The Dark Reader Deployment Pattern

  • Polling vs. WebSockets via Amazon API Gateway

  • Running Code on the Edge with CloudFront

  • Adaptive Capacity with DynamoDB

  • Bidirectional Sync across Regions with DynamoDB Global Tables

  • Async vs. Synchronous Invocations at AWS Lambda

  • What’s Happening at a Cold Start in AWS Lambda?

  • DNS Resolution with Route 53

  • Region Failovers with Route 53 DNS Records

  • Multi-Region Routing with Route 53 Latency Records

  • Lifecycle Policies at Amazon S3

  • Long vs. Short Polling with Amazon SQS

  • How Are You Charged at AWS Step Functions?

  • VPC Gateway Endpoints

Каталог смотреть тут: https://awsfundamentals.com/animations

Теги:
Рейтинг0
Комментарии0

AWS запустила инструмент чата Q AI, который позволит пользователям задавать вопросы о своей компании. Например, сотрудники смогут запросить у Q последние рекомендации компании по использованию логотипа или интерпретацию кода другого инженера. Инструмент распознаёт параметры безопасности и не даёт сотрудникам доступа к той информации, которую им видеть нельзя.

Amazon Q появится в консоли управления AWS, а также на страницах документации компаний, в средах разработки, таких как Slack, и других сторонних приложениях. Вопросы, заданные на Amazon Q, «не будут использоваться для обучения базовых моделей».

Amazon Q может работать с любой моделью, найденной в Amazon Bedrock, репозиториями моделей искусственного интеллекта AWS, в который входят Llama 2 Meta и Claude 2. 

Пока Q доступен только для пользователей Amazon Connect, сервиса AWS для контакт-центров. Со временем он появится в Amazon Supply Chain и Amazon QuickSight.

Цены на Amazon Q Connect начинаются от $40 за агента в месяц. Пользователи могут попробовать его бесплатно до 1 марта 2024 года.

Теги:
Рейтинг0
Комментарии0