296 Commits

Author SHA1 Message Date
samokrutka 1dcaa46659 Merge pull request #56 from samosvalishe/release-please--branches--master
chore(master): release 2.1.1
v2.1.1
2026-08-04 12:17:47 +03:00
samokrutka 7dc23ce3f0 chore(master): release 2.1.1 2026-08-04 12:11:53 +03:00
samosvalishe 1ca3451b76 refactor(captcha): убрать трассировку запросов
Разовая диагностика под сверку с виджетом; расхождения, которые она нашла,
закрыты коммитом выше.
2026-08-04 12:05:54 +03:00
samosvalishe 59a8c84157 fix(captcha): линтер в трассировке запросов 2026-08-04 12:01:46 +03:00
samosvalishe 4174f29c63 fix(captcha): блокировать рекламные хосты в ручном режиме
Внешние трекеры резались allowlist-ом и раньше, но ads.vk.com и ads.vk.ru
проходили по суффиксу домена. Captcha без них решается: adFp остаётся пустым,
ровно как у браузера с блокировщиком.
2026-08-04 11:56:03 +03:00
samosvalishe 4fa7810afa fix(captcha): привести запросы к поведению живого виджета 1.1.1388
Сверка протокола с бандлом вскрыла три расхождения.

Телеметрия: указатель виджет пишет только через externalCoords, а их заполняет
хост-страница iframe или нативный бридж мобильного SDK. Мы ходим на captcha
прямой навигацией, где живой браузер оставляет cursor и taps пустыми, - вместе с
ними ушла синтетическая траектория руки, недостижимая для этого режима. A/B на
живой captcha: 10/10 сессий против 9/10 со старым поведением.

Заголовки: навигация документа не несла Upgrade-Insecure-Requests и
Sec-Fetch-User, приоритет всем запросам ставился как у fetch, Origin уходил на
GET-ы, где Chrome его не шлёт, Referer навигации указывал на саму цель вместо
страницы-источника, а бандл тянулся профилем fetch вместо тега script. Cookie
отсутствовал в списке порядка и уезжал последним заголовком.

Куки: tls-client отбрасывает удалённые куки только по Max-Age - проверка Expires
в его jar закомментирована. Погашенная сервером remixir=DELETED из-за этого
уходила в каждом запросе. Обёртка в personanet транслирует протухший Expires в
Max-Age, который фильтр библиотеки понимает.

Трассировка запросов под FREETURN_CAPTCHA_TRACE - ей расхождения и найдены.
2026-08-04 11:56:03 +03:00
samosvalishe 8eb3873d27 fix(captcha): разносить попытки слайдера по дорожке
Соседние кандидаты отличаются одним свапом и получают почти равный скор,
поэтому топ-2 ранжирования - всегда пара соседей, и вторая попытка
промахивается вместе с первой. Вторая берётся не ближе трёх позиций от первой,
с откатом на соседей, если дальних кандидатов не хватило.
2026-08-04 10:37:08 +03:00
samosvalishe ee1356308b fix(captcha): не жечь персону на эскалации checkbox -> slider
Эскалация происходит в каждой сессии - слайдер в той же сессии проходит с тем
же browser_fp и device, значит отпечаток VK не отвергал. Сжигание на ней меняло
VisitorID каждый визит, хотя персона выводится из seed именно ради стабильности
между визитами. Сжигание по факту отказа в token_call.go сохранено.
2026-08-04 10:34:16 +03:00
samosvalishe d9a0554489 fix(captcha): убрать reverse-скор из ранжирования slider-кандидатов
Консенсус складывал ранги четырёх метрик с равным весом, но reverse-скор с
остальными не коррелирует: на корпусе из 8 пазлов luma/rgb/text сходились на
одном кандидате 8/8, reverse - 1/8. Кандидат, первый по всем трём рабочим
метрикам, уезжал в десятый ранг консенсуса и не попадал в две доступные
попытки. Побочно перестал считаться второй seam-скор на каждого кандидата.
2026-08-04 10:24:39 +03:00
samosvalishe ea477a3bc2 fix(captcha): обновить пин debug_info под виджет 1.1.1388 2026-08-04 10:24:39 +03:00
samokrutka 7c0112d494 Merge pull request #55 from samosvalishe/release-please--branches--master
chore(master): release 2.1.0
v2.1.0
2026-08-01 15:32:03 +03:00
samokrutka 2a9cf9a0c8 chore(master): release 2.1.0 2026-08-01 15:25:56 +03:00
samosvalishe cdc7ee8d3d fix(routes): linter 2026-08-01 15:25:22 +03:00
samosvalishe 8524284eb8 chore(ci): фикс тг анонса 2026-08-01 15:13:48 +03:00
samosvalishe a7798cd851 feat(proxy): встроенное управление маршрутами к TURN-серверам
- Добавлен пакет `internal/routemgr` для автоматического создания
  host-маршрутов (/32) через шлюз ОС (Windows, Linux, macOS).
- В `config.Client` и CLI добавлен флаг `-routes` (по умолчанию отключен).
- Интегрирован callback `OnTURNServer` в `udprelay` и `tcpfwd`
  для динамического добавления маршрутов при старте стримов.
- Для Android (и переименованных JNI-бинарей Linux) добавлено
  graceful-отключение менеджера маршрутов.
- Обновлена документация (`quickstart.md`): добавлены примеры с
  использованием `-routes` и `-client-id`.
2026-08-01 15:07:37 +03:00
samosvalishe 1f86fda104 refactor: перенос логики сессии в internal/session и обновление mobile-фасада 2026-08-01 03:05:14 +03:00
samokrutka 68485cbee7 chore: update README.md 2026-07-31 00:37:20 +03:00
Anton c5bb9c4d9d Merge pull request #53 from samosvalishe/release-please--branches--master
chore(master): release 2.0.2
2026-07-30 23:08:20 +03:00
Anton f2b689b81d chore(master): release 2.0.2 2026-07-30 23:03:49 +03:00
samosvalishe 7c28498f23 fix(captcha): адаптация под новую версию виджета 2026-07-30 23:03:17 +03:00
Anton 760c511fe8 Merge pull request #51 from samosvalishe/release-please--branches--master
chore(master): release 2.0.1
2026-07-29 02:17:01 +03:00
Anton 2e08a2bfab chore(master): release 2.0.1 2026-07-29 01:59:54 +03:00
samosvalishe d1b769a062 fix(captcha): дожимать эскалацию checkbox -> slider в той же сессии
VK меняет тип челленджа на captchaNotRobot.check, а решатель считал это
фатальным и переигрывал сессию целиком (новый PoW + settings + initSession).
Теперь content_settings читается и из check-ответа, слайдер решается на месте.
2026-07-29 01:59:27 +03:00
samosvalishe 1d5eb2cdf2 ci: почистить телеграм-анонс релиза
Ссылки на коммиты из чейнджлога срезаются, заголовок - FreeTurn (Go).
2026-07-29 01:59:27 +03:00
samosvalishe 9734b37f38 chore(deps): обновить зависимости и версии инструментов
pion/turn 5.0.12, pion/dtls 3.1.5, x/crypto 0.54.0, x/net 0.57.0 + indirect.
govulncheck v1.6.0, goreleaser v2.17.1, task 3.52.0.
2026-07-29 01:59:27 +03:00
Anton 2506aece56 Merge pull request #49 from samosvalishe/release-please--branches--master
chore(master): release 2.0.0
2026-07-29 00:30:06 +03:00
Anton a63032d42c chore(master): release 2.0.0 2026-07-28 17:42:25 +03:00
samosvalishe 34746e27e0 fix: update deps for vuln pass 2026-07-28 17:41:38 +03:00
samosvalishe 3211ed9ad5 feat(captcha)!: телеметрия виджета и одна Chrome-персона на установку
Персона строится детерминированно из FingerprintSeed (Client ID) и живёт
между перезапусками; при отказе captcha сжигается, и цепочка проходится
заново новой личностью с чистыми куками.

Телеметрия captcha (internal/captcha/telemetry.go) собирает аналитику
виджета: сэмплы сенсоров, connection-поля, курсор/тапы. Жест проживается
в реальном времени, иначе тайминги массивов не сходятся.

internal/personanet - TLS-клиент персоны (JA3 + split ClientHello), общий
для VK-auth и ручной captcha; порядок заголовков задаёт browserprofile.

BREAKING CHANGE: флаг -browser убран, семейство персоны всегда Chrome -
только Chromium даёт NetworkInformation и Generic Sensors, без которых
телеметрия captcha неполна. Класс устройства по-прежнему за -platform.
2026-07-28 16:40:32 +03:00
Anton 62064a5eca Merge pull request #46 from samosvalishe/release-please--branches--master
chore(master): release 1.8.0
v1.8.0
2026-07-13 22:54:01 +03:00
Anton d67c829532 chore(master): release 1.8.0 2026-07-13 22:31:36 +03:00
samosvalishe e678ee1fd8 feat: автопубликация телеграм анонса при релизе 2026-07-13 22:31:06 +03:00
samosvalishe e5874e3c30 chore: lint fix 2026-07-13 21:48:45 +03:00
samosvalishe 8311a2e2f9 chore: fmt autofix 2026-07-13 21:37:22 +03:00
samosvalishe 5a347bece9 docs: флаг -platform, persona-модель и пунктуация по конвенции 2026-07-13 21:29:35 +03:00
samosvalishe 305754cd60 fix(captcha): persona-модель вместо захвата профиля браузера 2026-07-13 21:29:34 +03:00
Anton e009db0b9a Merge pull request #45 from samosvalishe/release-please--branches--master
chore(master): release 1.7.3
v1.7.3
2026-07-12 19:15:19 +03:00
Anton 321a0995c3 chore(master): release 1.7.3 2026-07-12 19:13:46 +03:00
samosvalishe 6f934f10f4 chore: fmt autofix 2026-07-12 19:13:26 +03:00
samosvalishe ea410a044a fix(deps): обновить Go 1.26.4 -> 1.26.5 2026-07-12 19:10:27 +03:00
samosvalishe b4189f8f43 fix(captcha): адаптировать авторешение под SPA-капчу VK 2026-07-12 18:54:08 +03:00
Anton 2121b55190 Merge pull request #44 from samosvalishe/release-please--branches--master
chore(master): release 1.7.2
v1.7.2
2026-07-08 01:10:30 +03:00
Anton 2df39d460e chore(master): release 1.7.2 2026-07-08 01:05:43 +03:00
samosvalishe 4c0bed1797 fix(captcha): linter 2026-07-08 01:04:39 +03:00
samosvalishe ea1cb930cc refactor(captcha): вынести inject.js из Go и убрать легаси image-капчу 2026-07-08 00:50:41 +03:00
samosvalishe adcf0a0d21 chore: update readme 2026-07-08 00:06:47 +03:00
Anton 15111ea72f Merge pull request #43 from samosvalishe/release-please--branches--master
chore(master): release 1.7.1
2026-07-07 21:15:54 +03:00
Anton 10e6b375c6 chore(master): release 1.7.1 2026-07-07 20:05:38 +03:00
samosvalishe 3b33d33b9e fix(captcha): устойчивый разбор debug_info и сигнал дрейфа версии скрипта 2026-07-07 20:05:12 +03:00
Anton 623d9a22c2 chore: update README.md 2026-07-07 12:56:45 +03:00