Обновить
4K+

CGI (графика) *

Изображения, сгенерированные компьютером

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

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

Я запустил скрапер вечером, он собрал пару тысяч страниц, я ушёл спать. Утром в логах сплошные 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

Разбор ошибки Blender has stopped working / Разбор похожих ошибок / Как защитить свои файлы от утери

Ошибка во время скульптинга / Ошибка во время попыток переноса сломанного файла
Ошибка во время скульптинга / Ошибка во время попыток переноса сломанного файла

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

У меня проблема возникла во время скульптинга, файл сам по себе имел большой вес, когда я хотел закрыть проект, произошёл автосейв и получился тайминг, который и сломал модель, это я сделал вывод исходя из поиска решения. Что я делал, чтобы исправить ошибку: Blender crashes opening certain file.

Проект весил более 80 mb, имел версию 4.5.1 LTS.

Пункты я расставил в приоритетном порядке. То, что поможет точно — принудительная выкачка файлов со сцены.

Та самая выкачка файлов.
1. Открыть новую сцену -> File -> Append -> выбираем наш файл -> выбираем и по пунктам добавляем файлы -> осторожно с файлом scene — он может быть багнутым, и программа вылетит. \
2. Зайти в папку autosave и открыть прошлые сохранения, но если вы, как я, их удалили случайно или у вас их нет, то задумайтесь. \ *Если вы их удалили, то даже не думайте о программах для восстановления удалённых данных, я через это прошёл и могу сказать, что файлы после восстановления будут сломаны, но на файлы сцены, которые весят меньше 2mb может и сработает, но это до сотни полигонов :)
3. Открыть дополнительные сохранения, они находятся там же, где и сам файл, имеют тег blend1, blend2 и т. д. Рекомендую вам настроить их количество. Это делается там же, где и autosave. Функция называется «Save versions». \


Решение проблемы без выкачки.
- Скинуть файл доверенному другу, если открывается и у него, то пробуем все остальные способы. Если нет, можно на способы ниже не надеяться (но лучше попробовать) и сразу приступать к выкачке данных со сцены.
- Пытался запустить файл от имени администратора, через командную строку, через различные запуски блендера со специфическими ограничениями (запустить на базе OpenGL и т. д.). Запустить blender можно по-разному, достаточно глянуть его расположение, и можно увидеть много приложений cmd для аварийного запуска программы.
- Пытался проверить абсолютно все обновления PC, переустановил разные версии обновлений для видеоядра.
- Пытался открыть проект на других версиях (на версии 4.3 он не запускается, на версии 5.0 крашится). Версия 5.0 имеет нововведения по устранению багов.
- Пытался отключить кастомные аддоны.
- Пытался переустановить Blender.
- Пытался использовать Steam-версию Blender.
- Пытался открыть файл в другом расположении. В другой папке под другим именем, поменяв русский на английский. «Мачете» -> «Machete».
- Были попытки перезапуска компьютера. (Несколько раз комбинируя разные методы.)
- Я не пробовал, но как способ — запустить blender на другой видеокарте или без неё.


Что мне помогло? -Выкачка файлов через append и только..
Что я поменял? -Я сделал расположение временных файлов в другом месте, там я точно их не удалю, я увеличил количество сохранений до 5 (которые имеют тег blend1, blend2 и т. д.)
Я узнал о других ошибках и о их решениях, чаще начал сохранять файлы, больше появилось доверия к сообществу 3d.
Я нашёл решение сам, но спустя 2 часа решения, мне написали много вариантов, из которых и было тоже моё решение, это не может не мотивировать делать также.


Сайт с багами сообщества Blender - https://projects.blender.org/blender/blender/issues
Сайт с новыми версиями Blender - https://builder.blender.org/download/daily/
Сайт с подробным списком версий Blender - https://download.blender.org/release/


Буду благодарен за распространение данной информации, сократим проблемы нашим коллегам.

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

Эффект Хичкока в игре

Добавил в игру эффект (на переход в режим "Матрицы"), который впервые использовался в фильме Альфреда Хичкока "Головокружение" (Vertigo), 1958. Эффект называют по разному: эффект "раздвигающегося пространства", "обратный трекинг", "контр-зум", и т.д.

В кино этот эффект достигается так:

  1. Камера приближается к объекту

  2. Одновременно вращается кольцо масштабирования

Причем (1) и (2) синхронизируются так, чтобы размеры объекта съемки оставались неизменными.

Я же пытаюсь повторить этот эффект у себя в игре путем хитрого манипулирования параметрами параллакса. Почти получилось (не совсем, конечно). Как сморится в игре? Интересно?

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

В пригороде Далласа расположен центральный офис id Software (г. Ричардсон) и Armadillo Aerospace (г. Мескит). Неудивительно, что и Джон Кармак, сооснователь обеих компаний, живёт (или хотя бы жил) где-то рядом. Местные рассказывают, что до сих пор иногда видят его в Далласе.

Международный аэропорт Даллас/Форт-Уэрт расположен, как следует из названия, между городами Даллас и Форт-Уэрт. В аэропорте установлены сразу несколько объектов искусства, все из которых перечислены на специальной странице на сайте аэропорта.

Один из объектов — инсталляция без названия от художника Тома Орра. Это серия алюминиевых труб, расположенных перед узором из параллельных линий. Когда глаза наблюдателя скользят по этому прямоугольнику 6×12 метров, возникает иллюзия движения.

Однако у Кармака совсем иные ассоциации. Когда он снял и выложил инсталляцию у себя в микроблоге, он снабдил её подписью «похожа на алиасинг компьютерной графики». Как пишет профессионал и ветеран CGI Джон Кармак, эффект ему глубоко неприятен.

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

Яри Комппа уже давно жалуется, что графические API усложнились и что молодому разработчику будет тяжело в них разобраться.

Впрочем, кому как не ему об этом задумываться? Яри вошёл в мир программирования без высшего образования. Первую работу после армии ему помогла найти победа в конкурсе Assembly1998. (В Технологический университет Эспоо-Вантаа Комппа поступил куда позднее, лишь в 2004 году.)

На протяжении своей карьеры Комппа занимался разработкой 3D-движков, портированием игр, просто программным и аппаратным обеспечением. Разработчик по сей день принимает участие в исследованиях и читает лекции.

В сентябре этого года Unity Technologies сменила тарифы, испытала волну негодования от разработчиков и была вынуждена пойти на попятную. Но многие задумались: а нужен ли вообще кем-то написанный движок? Почему бы не написать движок самостоятельно?

Комппа достал из загашников одну свою старую картинку. На ней представлен код Hello Triangle, демонстрационной программы для вывода на экран треугольника, для различных спецификаций программных интерфейсов. Яри сравнил шесть API графики: OpenGL 1.x, OpenGL 3, Vulkan и DirectX трёх версий.

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

Полная версия этой картинки по длине выходит за 20 тысяч пикселей.

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

Возвращение в будущее.

И если в таком случае полететь по маршруту вперёд и вернуться обратно снимая всё на камеру, то получится здравый мультик с крутой графикой))

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