feat(spoof): пер-аккаунтный спуф с тумблером и прокидыванием в веб-аппы

- спуф теперь свой на каждый аккаунт, вмораживается при входе
- тумблер вкл/выкл в настройках (по умолчанию выключен)
- новый аккаунт добавляется со своим включённым спуфом (другое устройство)
- UA спуфа прокинут в Сферум, Цифровой ID (вебвью + HTTP)
- генерация выбирает Android или iOS; iOS отдаёт deviceType IOS
- экран спуфа показывает текущую личность, а не свежесгенерированную
This commit is contained in:
klockky
2026-06-20 15:15:09 +00:00
parent 62b5d1b9f3
commit d055de268b
14 changed files with 535 additions and 150 deletions
+3
View File
@@ -58,6 +58,9 @@
"proxyInvalidHostOrPort": "Enter a valid proxy host and port (165535)",
"spoofScreenTitle": "Session spoofing",
"spoofEnableTitle": "Device spoofing",
"spoofEnableSubtitleOn": "Enabled for this account",
"spoofEnableSubtitleOff": "Disabled — using the real device",
"spoofInfoHint": "Tap \"Generate\":\n• Short tap: random preset.\n• Long press: real device data.",
"spoofMethodTitle": "Spoofing method",
"spoofMethodPartial": "Partial",
+18
View File
@@ -392,6 +392,24 @@ abstract class AppLocalizations {
/// **'Session spoofing'**
String get spoofScreenTitle;
/// No description provided for @spoofEnableTitle.
///
/// In en, this message translates to:
/// **'Device spoofing'**
String get spoofEnableTitle;
/// No description provided for @spoofEnableSubtitleOn.
///
/// In en, this message translates to:
/// **'Enabled for this account'**
String get spoofEnableSubtitleOn;
/// No description provided for @spoofEnableSubtitleOff.
///
/// In en, this message translates to:
/// **'Disabled — using the real device'**
String get spoofEnableSubtitleOff;
/// No description provided for @spoofInfoHint.
///
/// In en, this message translates to:
+9
View File
@@ -161,6 +161,15 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get spoofScreenTitle => 'Session spoofing';
@override
String get spoofEnableTitle => 'Device spoofing';
@override
String get spoofEnableSubtitleOn => 'Enabled for this account';
@override
String get spoofEnableSubtitleOff => 'Disabled — using the real device';
@override
String get spoofInfoHint =>
'Tap \"Generate\":\n• Short tap: random preset.\n• Long press: real device data.';
+10
View File
@@ -163,6 +163,16 @@ class AppLocalizationsRu extends AppLocalizations {
@override
String get spoofScreenTitle => 'Подмена данных сессии';
@override
String get spoofEnableTitle => 'Подмена устройства';
@override
String get spoofEnableSubtitleOn => 'Включена для этого аккаунта';
@override
String get spoofEnableSubtitleOff =>
'Выключена — используется реальное устройство';
@override
String get spoofInfoHint =>
'Нажмите \"Сгенерировать\":\n• Короткое нажатие: случайный пресет.\n• Длинное нажатие: реальные данные.';
+3
View File
@@ -58,6 +58,9 @@
"proxyInvalidHostOrPort": "Укажите корректный хост и порт прокси (1–65535)",
"spoofScreenTitle": "Подмена данных сессии",
"spoofEnableTitle": "Подмена устройства",
"spoofEnableSubtitleOn": "Включена для этого аккаунта",
"spoofEnableSubtitleOff": "Выключена — используется реальное устройство",
"spoofInfoHint": "Нажмите \"Сгенерировать\":\n• Короткое нажатие: случайный пресет.\n• Длинное нажатие: реальные данные.",
"spoofMethodTitle": "Метод подмены",
"spoofMethodPartial": "Частичный",