Commit Graph

314 Commits

Author SHA1 Message Date
samosvalishe 65bc8a8993 fix: устранение предупреждений линтера 2026-08-18 00:15:52 +03:00
samosvalishe 53b8345aa0 fix: возврат фонового детектора сна для рецикла аллокаций 2026-08-18 00:07:34 +03:00
samosvalishe 0bef2e8ab5 fix: soft reconnect on network handover without tunnel drop 2026-08-17 23:29:19 +03:00
samosvalishe 5fdd8c3112 fix(vkauth): ловим 486 как auth-error для рецикла аллокации 2026-08-17 18:45:31 +03:00
samosvalishe d208a0d3df fix: readme 2026-08-17 17:33:43 +03:00
samosvalishe 6bc4faf942 fix: убрал лишний артефакт 2026-08-17 17:16:12 +03:00
samosvalishe 3cf78316df perf: меньше фоновых таймеров при поднятом туннеле и опрос метрик только при видимом окне 2026-08-17 17:14:10 +03:00
samosvalishe a033cfb9a2 fix(udprelay): рецикл аллокации на простое туннеля 2026-08-17 17:13:44 +03:00
samosvalishe 5b5c93fae1 fix(captcha): устранение регрессий 2026-08-17 15:45:21 +03:00
samosvalishe 74241de764 break!: выпил tcp-режим туннеля
убраны флаги -mode и -bond: остался только udp-релей для wireguard.
удалены tcpfwd, tcpfwdserver, bondclient, bondserver, bondframe, kcptun,
wire/relay; proxy/common переехал в udprelay/dial.

BREAKING CHANGE: флаги -mode и -bond удалены; конфиги и ссылки freeturn://
с tcp-режимом больше не принимаются.
2026-08-17 00:27:23 +03:00
samosvalishe 648c55415b feat: comment cleanup 2026-08-16 23:13:01 +03:00
samosvalishe 6b14a95434 fix(captcha): персонная модель PoW и кэш TURN-кредов 2026-08-16 21:19:15 +03:00
samosvalishe 681dde8a6d feat(mobile): переживание сна и рестарта на Android 2026-08-16 21:19:14 +03:00
samokrutka 0a6b0e0e85 Merge pull request #58 from samosvalishe/release-please--branches--master
chore(master): release 2.1.2
v2.1.2
2026-08-14 14:00:54 +03:00
samokrutka 25451e8e25 chore(master): release 2.1.2 2026-08-14 13:57:05 +03:00
samosvalishe 5bc164f78d fix(deps): обновить Go 1.26.5 -> 1.26.6 2026-08-14 13:56:43 +03:00
samosvalishe 95803f481a fix(captcha): fmt 2026-08-14 13:48:05 +03:00
samosvalishe 235ab1a646 fix(captcha): выровнять авторешение по живому браузеру 2026-08-14 13:46:39 +03:00
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