Dashboard
Аккаунты
| Аккаунт | App | Proxy | Статус | Last action | Comment |
|---|---|---|---|---|---|
|
luma-garden
⚪
Melle Vrogop · BOOTSTRAPPED 🟢 session 0.0d |
Luma Gardencom.mellevrogop.lumagarden
|
NL |
Waiting for Review
v1.0
submit 06-18 07:54
poll: 39 min ago
|
2026-06-18 07:54 | |
|
skate-district
⚪
Jasper Water · BOOTSTRAPPED 🟢 session 0.1d |
Skate Districtcom.jasperwater.skatedistrictmerge
|
NL |
Waiting for Review
v1.0
submit 06-17 11:10
poll: 44 min ago
|
2026-06-17 11:10 | |
|
emberfall-depths
⚪
ALISA SALONEN · BOOTSTRAPPED 🟢 session 3.5d |
Emberfall Depthscom.emberfalldepths.app
|
FI |
Ready for Sale
v1.0
submit 06-15 20:14
→ live 06-18 08:41 (60.5h)
poll: 3 d ago
|
2026-06-15 20:14 | |
|
velmora
⚪
SILVIO BRASNIC · BOOTSTRAPPED 🟢 session 0.0d |
Velmora Petscom.velmora.app
|
HR |
In Review
v1.0
submit 06-15 21:38
poll: 29 min ago
|
2026-06-15 21:38 | |
|
aeroledger
⚪
BJARNE CHRISTENSEN · BOOTSTRAPPED 🟢 session 3.4d |
AeroLedgercom.aeroledger.aeroledger
|
DK |
Rejected
v1.0
submit 06-15 20:29
poll: 3 d ago
|
2026-06-15 20:29 | |
|
noveris
⚪
Vatalie Sandu · BOOTSTRAPPED 🟢 session 0.0d |
Noveriscom.noveris.app
|
MD |
Waiting for Review
v1.0
submit 06-15 19:54
poll: 35 min ago
|
2026-06-15 19:54 | |
|
aether-grid
⚪
Mert Ramazan · BOOTSTRAPPED 🟡 session 5.8d |
Aether Gridcom.aethergrid.app
|
FR |
Rejected
v1.0
submit 06-15 19:47
poll: 5 d ago
Apple (2026-06-15 22:55):
(no explicit Guideline line — see thread)
📄 thread + reply form →
|
2026-06-15 19:47 | |
|
railway-district
⚪
FREDERIK JOHAN JOERGENSEN · BOOTSTRAPPED 🟢 session 0.1d |
Railway Districtcom.frederikjohanjoergensen.railwaydistrict
|
DK |
Waiting for Review
v1.0
submit 06-17 06:41
poll: 2 h ago
|
2026-06-17 06:41 | |
|
clockwork-vanguard
⚪
Teona Sanaro · BOOTSTRAPPED 🟢 session 3.4d |
Clockwork Vanguardcom.clockworkvanguard.app
|
GE |
Rejected
v1.0
submit 06-15 17:18
poll: 3 d ago
Apple (2026-06-18 08:07):
Guideline 4.3(a) - Design - Spam |
2026-06-15 17:18 | |
|
case-ledger
⚪
Lars Terent · BOOTSTRAPPED 🟢 session 3.9d |
Case Ledgercom.caseledger.app
|
FI |
Prepare for Submission
v1.1
Ready for Sale
v1.0
submit 06-15 11:59
→ live 06-17 22:03 (58.1h)
|
2026-06-19 01:21 | |
|
rune-delve
⚪
David Miller · BOOTSTRAPPED 🟢 session 2.9d |
Rune Delvecom.runedelve.app
|
US |
Ready for Sale
v1.1
submit 06-18 20:01
→ live 06-18 21:54 (1.9h)
Ready for Sale
v1.0
submit 06-15 11:51
→ live 06-17 22:17 (58.4h)
poll: 2 d ago
|
2026-06-18 20:01 | |
|
elunari
⚪
BARBORA PROCHAZKOVA · BOOTSTRAPPED 🟢 session 0.0d |
Elunaricom.elunari.app
|
CZ |
Waiting for Review
v1.0
submit 06-15 11:47
poll: 8 min ago
|
2026-06-15 11:47 | |
|
vorunel
⚪
Hakan Polat · BOOTSTRAPPED 🟢 session 3.1d |
Vorunelcom.vorunel.app
|
NO |
Ready for Sale
v1.1
submit 06-19 06:51
→ live 06-19 06:51 (0.0h)
Ready for Sale
v1.0
submit 06-15 09:34
→ live 06-17 20:18 (58.7h)
|
2026-06-19 06:51 | |
|
midnight-mini
⚪
ben schulz · BOOTSTRAPPED 🟢 session 2.7d |
Midnight Minicom.midnightmini.app
|
DE |
🚨 Removed from App Store
flagged 2026-06-19 00:13 UTC
Waiting for Review
v1.1
submit 06-18 02:41
Ready for Sale
v1.0
submit 06-10 17:44
→ live 06-15 20:18 (122.6h)
poll: 25 min ago
|
2026-06-18 02:41 | |
|
constellation-weaver
⚪
JARI VUORINEN · BOOTSTRAPPED 🟡 session 6.0d |
Constellation Weavercom.weaver.constellationweaver
|
FI |
Ready for Sale
v1.1
submit 06-18 07:11
→ live 06-18 07:11 (0.0h)
Ready for Sale
v1.0
submit 06-10 15:06
→ live 06-15 19:51 (124.8h)
|
2026-06-18 07:11 | |
|
timing-control
⚪
ADLEY PRAIS · BOOTSTRAPPED |
Timing Controlcom.timingcontrol.app
|
IL |
Ready for Sale
v1.1
submit 06-16 06:31
→ live 06-16 06:31 (0.0h)
Ready for Sale
v1.0
submit 06-09 14:50
→ live 06-12 19:17 (76.5h)
|
2026-06-16 06:31 | |
|
hue-sort
⚪
Logan Kazi · BOOTSTRAPPED |
Hue Sortcom.privetai.huesort
|
US |
Ready for Sale
v1.1
submit 06-16 17:01
→ live 06-16 17:01 (0.0h)
Ready for Sale
v1.0
submit 06-09 00:24
→ live 06-11 15:28 (63.1h)
|
2026-06-16 17:01 | |
|
hex-realm
⚪
OORD CROES · BOOTSTRAPPED |
Hex Realmcom.hexrealm.hexrealm
|
FI |
Ready for Sale
v1.1
submit 06-12 14:13
→ live 06-12 15:22 (1.1h)
Ready for Sale
v1.0
submit 06-04 23:24
→ live 06-09 14:58 (111.6h)
poll: 9 d ago
|
2026-06-12 14:13 | |
|
table-rush
⚪
Erik Schäfer · BOOTSTRAPPED 🟢 session 3.8d |
Table Rushcom.tablerush.tablerush
|
DE |
🚨 Removed from App Store
flagged 2026-06-17 06:38 UTC
Waiting for Review
v1.1
submit 06-15 20:41
Ready for Sale
v1.0
submit 06-02 15:40
→ live 06-03 14:59 (23.3h)
poll: 56 min ago
|
2026-06-15 20:41 | |
|
pixel-picross
⚪
Olavi Lahti · BOOTSTRAPPED |
Pixel Picrosscom.pixelpicross.pixelpicross
|
FI |
Rejected
v1.0
submit 06-01 18:26
poll: 19 d ago
Apple (2026-06-02 07:09):
Guideline 4.3(a) - Design - Spam |
2026-06-01 18:26 | |
|
word-grid
⚪
Yuval Malka · BOOTSTRAPPED |
Word Trailcom.wordtrail.wordtrail
|
IL |
Ready for Sale
v1.1
submit 06-12 15:01
→ live 06-12 15:01 (0.0h)
Ready for Sale
v1.0
submit 06-04 23:36
→ live 06-09 14:40 (111.1h)
|
2026-06-12 15:01 | |
|
guild-saga-rpg
⚪
Tarkanay Zeybekoglu · BOOTSTRAPPED |
Guild Saga Rpgcom.guildsagarpg.guildsagarpg
|
RO |
Ready for Sale
v1.0
submit 06-01 16:38
→ live 06-02 09:25 (16.8h)
poll: 19 d ago
|
2026-06-01 16:38 | |
|
silk-road-trader
⚪
LEVENT KARDES · BOOTSTRAPPED 🟢 session 2.7d |
Silk Road Tradercom.silkroadtrader.silkroadtrader
|
TR |
🚨 Removed from App Store
flagged 2026-06-18 13:45 UTC
Ready for Sale
v1.0
submit 05-27 16:38
→ live 05-28 07:50 (15.2h)
poll: 24 d ago
|
2026-05-27 16:38 | |
Meadow Idlecom.meadowidle.app
|
TR |
🚨 Removed from App Store
flagged 2026-06-18 13:45 UTC
Waiting for Review
v1.1
submit 06-18 01:11
Ready for Sale
v1.0
submit 06-10 18:02
→ live 06-15 20:21 (122.3h)
poll: 6 min ago
|
2026-06-18 01:11 | ||
|
deep-mine
⚪
EETU MAKINEN · BOOTSTRAPPED 🟡 session 5.8d |
Tycoon Deep Minecom.tycoondeepmine.tycoondeepmine
|
FI |
🚨 Removed from App Store
checked 2026-06-21 03:01 UTC
Ready for Sale
v1.1
submit 06-15 20:21
→ live 06-16 01:30 (5.2h)
Ready for Sale
v1.0
submit 06-10 22:39
→ live 06-12 06:27 (31.8h)
poll: 5 d ago
|
2026-06-15 20:21 | |
|
jade-mahjong-solitaire
⚪
Elias Koskinen · BOOTSTRAPPED 🟢 session 2.2d |
Jade Mahjong Solitairecom.jademahjongsolitaire.jademahjongsolitaire
|
FI |
🚨 Removed from App Store
flagged 2026-06-18 23:02 UTC
Ready for Sale
v1.0
submit 05-28 14:57
→ live 06-05 15:37 (192.7h)
poll: 16 d ago
|
2026-05-28 14:57 | |
Compost Idlecom.compostidle.app
|
FI |
🚨 Removed from App Store
flagged 2026-06-18 23:02 UTC
Waiting for Review
v1.1
submit 06-18 10:41
Ready for Sale
v1.0
submit 06-11 21:55
→ live 06-16 10:35 (108.7h)
poll: 4s ago
|
2026-06-18 10:41 | ||
|
coin-press-tycoon
⚪
LIOR SABAN · BOOTSTRAPPED |
Coin Press Tycooncom.coinpresstycoon.coinpresstycoon
|
IL |
🚨 Removed from App Store
checked 2026-06-21 00:11 UTC
Ready for Sale
v1.1
submit 06-16 03:31
→ live 06-16 03:31 (0.0h)
Ready for Sale
v1.0
submit 05-26 15:46
→ live 05-28 19:57 (52.2h)
|
2026-06-16 03:31 | |
|
scribe-world
⚪
OSCAR MADSEN · BOOTSTRAPPED |
Scribe Worldcom.scribeworld.scribeworld
|
DK |
🚨 Removed from App Store
checked 2026-06-21 13:41 UTC
Ready for Sale
v1.1
submit 06-04 16:31
→ live 06-04 16:31 (0.0h)
Ready for Sale
v1.0
submit 05-25 15:10
→ live 05-28 08:22 (65.2h)
|
2026-06-04 16:31 | |
|
gem-duel
⚪
OLIVER LARSEN · BOOTSTRAPPED |
Gem Duelcom.gemduel.gemduel
|
DK |
🚨 Removed from App Store
checked 2026-06-21 12:21 UTC
Ready for Sale
v1.1
submit 06-04 10:29
→ live 06-04 10:29 (0.0h)
Ready for Sale
v1.0
submit 05-25 14:58
→ live 05-28 08:42 (65.7h)
|
2026-06-04 10:29 | |
|
ledger-cross
⚪
Atanas Stefanov · BOOTSTRAPPED |
Ledger Crosscom.ledgercross.ledgercross
|
BG |
🚨 Removed from App Store
flagged 2026-06-01 13:22 UTC
In Review
v1.1
submit 06-01 09:57
Ready for Sale
v1.0
submit 05-21 14:22
→ live 05-26 07:35 (113.2h)
poll: 2 d ago
|
2026-06-01 09:57 | |
|
amber-box
⚪
Stuart Gelman · BOOTSTRAPPED |
Amber Boxcom.amberboxgame.app
|
LV |
🚨 Removed from App Store
checked 2026-06-19 00:21 UTC
Ready for Sale
v1.2
submit 06-02 10:01
→ live 06-02 10:01 (0.0h)
Ready for Sale
v1.1
submit 06-01 14:25
→ live 06-01 14:25 (0.0h)
|
2026-06-02 10:01 | |
|
inn-common
⚪
Timo Postma · BOOTSTRAPPED |
Inn Commoncom.inncommon.inncommon
|
NL |
🚨 Removed from App Store
checked 2026-06-18 23:41 UTC
Ready for Sale
v1.1
submit 06-01 11:23
→ live 05-28 18:25 (-89.0h)
Ready for Sale
v1.0
submit 05-21 16:30
→ live 05-26 08:23 (111.9h)
poll: 24 d ago
|
2026-06-01 11:23 | |
|
cloister-curator
⚪
Sully Ramsbottom · BOOTSTRAPPED |
Cloister Curatorcom.cloister.curator
|
IL |
🚨 Removed from App Store
checked 2026-06-20 19:51 UTC
Ready for Sale
v1.1
submit 06-03 11:31
→ live 06-03 11:31 (0.0h)
Ready for Sale
v1.0
submit 05-19 17:07
→ live 05-20 22:51 (29.7h)
|
2026-06-03 11:31 | |
|
lighthouse-keeper
⚪
KAJAL ZHUS · BOOTSTRAPPED |
Lighthouse Keepercom.lighthouse.keeper
|
HR |
🚨 Removed from App Store
checked 2026-06-20 19:31 UTC
Rejected
v1.1
submit 06-03 09:31
Ready for Sale
v1.0
submit 05-19 17:40
→ live 05-19 22:41 (5.0h)
poll: 11 d ago
|
2026-06-03 09:31 | |
|
Mountain-Apiary
⚪
Arel Akcan · BOOTSTRAPPED |
Mountain Apiary ARcom.mountain.apiary
|
TR |
🚨 Removed from App Store
checked 2026-06-18 10:41 UTC
Ready for Sale
v1.1
submit 06-04 07:39
→ live 06-04 07:39 (0.0h)
Ready for Sale
v1.0
submit 05-19 00:34
→ live 05-20 08:50 (32.3h)
|
2026-06-04 07:39 | |
|
Valley-Winemaker-Legacy
⚪
Ufukhan Atesli · BOOTSTRAPPED |
Valley Winemaker Legacycom.valleywinemakerlegacy.valleywinemakerlegacy
|
UA |
🚨 Removed from App Store
checked 2026-06-17 19:31 UTC
Ready for Sale
v1.2
submit 06-01 14:49
→ live 06-01 14:49 (0.0h)
Ready for Sale
v1.1
submit 06-01 14:49
→ live 06-01 14:49 (0.0h)
|
2026-06-01 14:49 | |
|
orbital-grid
⚪
Oguzhan Tuncel · BOOTSTRAPPED |
Orbital Gridcom.orbital.grid
|
US |
🚨 Removed from App Store
checked 2026-06-18 02:11 UTC
Ready for Sale
v1.2
submit 06-03 07:21
→ live 06-03 07:21 (0.0h)
Ready for Sale
v1.1
submit 06-01 12:48
→ live 06-01 12:48 (0.0h)
|
2026-06-03 07:21 | |
|
frozen-catch
⚪
LUKAS POKORNY · IN_PROGRESS |
Frozen Catchcom.frozencatch.frozencatch
|
CZ |
🚨 Removed from App Store
checked 2026-06-20 21:01 UTC
Waiting for Review
v1.2
submit 06-09 06:48
Ready for Sale
v1.1
submit 06-01 10:26
→ live 06-06 06:38 (116.2h)
poll: 33 min ago
|
2026-06-09 06:48 | |
|
frostlake-days
⚪
Selman Yorukoglu · IN_PROGRESS |
Frostlake Dayscom.frostlakedays.frostlakedays
|
PL |
🚨 Removed from App Store
checked 2026-06-20 21:51 UTC
Waiting for Review
v1.2
submit 06-09 00:58
Ready for Sale
v1.1
submit 06-01 10:46
→ live 06-06 07:26 (116.7h)
poll: 23 min ago
|
2026-06-09 00:58 | |
|
fortress-grid-td
⚪
noa smit · BOOTSTRAPPED |
Fortress Grid Tdcom.fortressgridtd.fortressgridtd
|
AE |
🚨 Removed from App Store
checked 2026-05-28 13:23 UTC
In Review
v1.1
Ready for Sale
v1.0
submit 05-14 16:51
→ live 05-14 19:41 (2.8h)
poll: 24 d ago
|
2026-05-28 10:10 | |
|
winter-fishing-idle
⚪
Mithat Pekdemir · BOOTSTRAPPED |
Winter Fishing Idlecom.winterfishingidle.winterfishingidle
|
AE |
🚨 Removed from App Store
flagged 2026-06-01 14:10 UTC
Waiting for Review
v1.1
submit 06-01 10:10
Ready for Sale
v1.0
submit 05-14 14:14
→ live 05-14 22:31 (8.3h)
poll: 9 d ago
|
2026-06-01 10:10 | |
|
lane-clash
⚪
Stanislav Popova · BOOTSTRAPPED |
Lane Clashcom.laneclash.laneclash
|
AE |
🚨 Removed from App Store
flagged 2026-06-01 14:12 UTC
In Review
v1.1
submit 06-01 10:05
Ready for Sale
v1.0
submit 05-13 13:39
→ live 05-14 00:17 (10.6h)
poll: 9 d ago
|
2026-06-01 10:05 | |
|
skyline-mint
⚪
Virel Ashcroft · BOOTSTRAPPED |
Skyline Mintcom.skylinemint.skylinemint
|
US |
🚨 Removed from App Store
flagged 2026-06-01 14:15 UTC
In Review
v1.1
submit 06-01 09:54
Ready for Sale
v1.0
submit 05-14 16:38
→ live 05-15 17:50 (25.2h)
poll: 9 d ago
|
2026-06-01 09:54 | |
|
sign-saga-atlas
⚪
julia mary perez · BOOTSTRAPPED |
Sign Saga Atlascom.signsagaatlas.signsagaatlas
|
US |
🚨 Removed from App Store
checked 2026-06-16 08:51 UTC
Ready for Sale
v1.1
submit 05-19 11:17
→ live 05-19 20:15 (9.0h)
Ready for Sale
v1.1
submit 06-01 14:49
→ live 06-01 14:49 (0.0h)
poll: 32 d ago
|
2026-05-19 11:17 |
Recent jobs (auto-refresh каждые 10s)
| Kind | State | Account / App | Created | Error |
|---|---|---|---|---|
| RELOGIN_VM | NEEDS_OPERATOR | railway-district | 2026-06-21 18:25 | relogin agent failed: RuntimeError: proxy preflight failed for socks5://178.93.44.120:54044 → https://appstoreconnect.ap |
| RELOGIN_VM | NEEDS_OPERATOR | railway-district | 2026-06-21 18:25 | relogin agent failed: RuntimeError: proxy preflight failed for socks5://178.93.44.120:54044 → https://appstoreconnect.ap |
| RELOGIN_VM | NEEDS_OPERATOR | railway-district | 2026-06-21 18:25 | relogin agent failed: RuntimeError: proxy preflight failed for socks5://178.93.44.120:54044 → https://appstoreconnect.ap |
| CHECK_RC_THREADS | NEEDS_OPERATOR | railway-district | 2026-06-21 18:24 | session expired (ASC redirected to /login). Re-bootstrap or use the relogin button to refresh cookies. [transient retrie |
| CHECK_RC_THREADS | COMPLETED | noveris | 2026-06-21 18:17 | |
| CHECK_RC_THREADS | COMPLETED | luma-garden | 2026-06-21 18:14 | |
| CHECK_RC_THREADS | COMPLETED | velmora-pets | 2026-06-21 18:06 | |
| CHECK_RC_THREADS | COMPLETED | elunari | 2026-06-21 17:44 | |
| CHECK_RC_THREADS | COMPLETED | skate-district | 2026-06-21 16:51 | |
| CHECK_RC_THREADS | COMPLETED | noveris | 2026-06-21 16:21 | |
| CHECK_RC_THREADS | COMPLETED | railway-district | 2026-06-21 16:17 | |
| RELOGIN_VM | COMPLETED | luma-garden | 2026-06-21 15:59 | |
| CHECK_RC_THREADS | COMPLETED | luma-garden | 2026-06-21 15:58 | |
| CHECK_RC_THREADS | COMPLETED | velmora-pets | 2026-06-21 15:53 | |
| CHECK_REMOVED_FROM_SALE | COMPLETED | railway-district | 2026-06-21 15:41 |
📐 Как работает система
Архитектура
- Rental Mac на Apple Silicon — единая физическая машина, на ней крутится orchestrator (FastAPI + SQLite + Alembic) и набор VM через Tart.
- Один Apple Developer аккаунт = одна VM = одно приложение (модель 1:1:1:1). Это изоляция identity на железо-близком уровне: каждая VM имеет свой serial, MAC, IOPlatformUUID (рандомизирует Tart) и свой residential proxy с sticky session.
- Orchestrator — управляет всем флоу: создание аккаунтов, bootstrap VM, регистрация приложений в ASC, build/upload/submit. Хранит state в SQLite (WAL).
- VM-агент — крутится внутри каждой публишер-VM, выполняет ASC web flows через Patchright (login, генерация API key, screenshots, set privacy, validate for review) и обмен с Apple через ASC REST API.
- Resolution Center опрашивается периодически на предмет реджектов; если приложение получило DEVELOPER_REJECTED / METADATA_REJECTED — orchestrator парсит ответ Apple и кладёт в БД.
Workflow одного приложения (от 0 до App Store)
POST /accounts— оператор создаёт аккаунт. Orchestrator: генерит fingerprint profile (детерминировано изaccount.id), шифрует Apple ID password через sops+age, создаёт DB-row.- BOOTSTRAP_VM — клонирует Tart VM из base image, ставит ssh known_hosts pin, шлёт SOPS-блоб с identity, заходит в ASC через Patchright, проходит 2FA по SMS, создаёт ASC API key, выгружает .p8 обратно на хост зашифрованным через age.
POST /apps— оператор регистрирует приложение (slug, bundle_id, repo URL, и т.д.). Orchestrator запускает PROVISION_APP — создаёт bundle_id и app row в ASC через REST API.- BUILD_IPA — git clone репо на rental, fetch_signing_files (codemagic-cli-tools достаёт signing assets из ASC), use_profiles, xcodebuild → .ipa. Логи + sha256 сохраняются.
- UPLOAD_BUILD — Transporter app загружает .ipa в ASC, ждёт processing, привязывает к версии через REST.
- PUSH_METADATA — описание, keywords, скриншоты (per-locale per-device-set), age rating, pricing ($0), availability (175 территорий минус 6: CHN, HKG, KOR, LBY, OMN, YEM), review contact info.
- SET_APP_PRIVACY — VM-агент через Patchright проходит privacy questionnaire в ASC web (нет API), отвечает "No data collected".
- SUBMIT_FOR_REVIEW — UI probe в VM проверяет readiness, потом REST: создать reviewSubmission, прикрепить version, PATCH submitted=true.
- POLL_REVIEW_STATE — периодически опрашивает Apple; при изменении state обновляет DB, при rejected — запускает FETCH_REJECTION (парсит resolution center messages).
Что хранится в БД
accounts— Apple ID + first_name/last_name + country + phone + proxy + vm_name + bootstrap_state + asc_key_id/issuer_id + fingerprint_profile_json (детерминирован из id, immutable).apps— slug + bundle_id + repo + scheme + project_path + privacy/support URL + categories + age rating + review contact + excluded_territories + deploy proxy + asc_app_id (после PROVISION).versions,localizations,screenshots— per-version-locale данные, версия → локализации → скриншоты.builds— сырые .ipa: путь, sha256, версия из CFBundleShortVersionString/CFBundleVersion, asc_build_id (после upload).jobs— очередь работ, state machine: PENDING → RUNNING → COMPLETED / NEEDS_OPERATOR / CANCELLED. Поддерживает depends_on_job_id для цепочек.proxies— endpoint + name + country (для fingerprint coherence) + notes.resolution_center_threads/messages— переписка с Apple review team при реджектах.
Секреты
- sops + age для всего: Apple ID passwords (per-account), .p8 ASC API keys (зашифрованы внутри VM, выгружаются на rental), bootstrap-blob с identity на VM.
- Plaintext-секрет НИКОГДА не пишется на диск (sub-project B "secret hygiene").
🛡️ Уникализация (anti-correlation)
Цель: вести 10–50+ Apple Developer аккаунтов так, чтобы Apple's correlation engine не смог объединить их в один кластер по shared device-fingerprint / network / behavioral сигналам. Failure mode, который защищаем: один реджект по контенту → каскадный бан всей фермы потому что correlation engine видит общие сигналы у виновного аккаунта и его соседей.
Что Tart рандомизирует автоматически
- Mac serial number (per VM)
- MAC адреса
- IOPlatformUUID
- Hostname (мы ставим
publisher-{slug})
Чего у Tart НЕ хватает (наш слой добавляет)
Sub-project A — Browser fingerprint per-VM ✅ ВНЕДРЕНО
Реализована полная hybrid-схема:
- Persona pick — детерминировано из
sha256(account.id)[:8] mod 31. 31 hand-curated Mac конфигурация: M1/M1 Pro/M1 Max, M2/M2 Pro/M2 Max, M3/M3 Pro/M3 Max, macOS 14.4–15.2, Chrome 122–125, экраны от MBA 13" до Studio Display. - Per-account jitter — детерминирован из
sha256(account.id)[8:24]черезrandom.Random. Сиды для:- Canvas noise — ~3% pixels nudge ±1 LSB
- AudioContext noise — 1e-7 magnitude perturbation на FloatFrequencyData
- WebGL precision jitter ±1 LSB
- WebRTC ICE candidate seed
- Battery level (15-95%) + charging
- Шрифты — random subset optional fonts (drop 0-3)
- Coherence — TZ + locale + accept-language + ui_languages выводятся из
proxy.country. ~50 стран замаплены в COUNTRY_TZ + COUNTRY_LOCALE. - Покрыто 24 dimensions: navigator.userAgent / userAgentData / Sec-CH-UA / platform / languages / hardwareConcurrency / deviceMemory / plugins / mimeTypes / connection / getBattery, screen.{width/height/availWidth/availHeight/colorDepth/pixelDepth}, window.{devicePixelRatio/outerWidth/outerHeight}, Intl.DateTimeFormat timezone, Date.getTimezoneOffset, Canvas getImageData/toDataURL/toBlob, WebGL UNMASKED_VENDOR/RENDERER/getShaderPrecisionFormat/getExtension/getSupportedExtensions, AudioContext AnalyserNode + OfflineAudioContext, document.fonts API, WebRTC ICE.
- Защита от tampering —
Object.defineProperty(... {configurable: false})+ поддельныйtoString = "[native code]"на каждом override. - Storage —
Account.fingerprint_profile_jsonimmutable после создания,/var/appstore-automation/fingerprint.jsonв VM.stealth.launch_persistentчитает файл и применяет на каждом launch Patchright.
Sub-project B — OS-level identifier scrub 🟡 ПЛАНИРУЕТСЯ
На уровне macOS внутри VM при bootstrap нужно перегенерить:
/var/db/SystemPolicyConfigurationtoken- Имя + UUID локального юзера (сейчас все
admin) - Spotlight metadata, SystemConfiguration history
- persistent
com.apple.uuidlaunchd
Это закрывает leaks вне браузера — Transporter, devicecheck token, ASC web в Safari (если когда-нибудь понадобится).
Sub-project C — Proxy + ASN diversification 🟡 ПЛАНИРУЕТСЯ
Сейчас все аккаунты на одном провайдере residential proxies, один диапазон IP. Server-side кластеризация по ASN — один SQL join. Решение:
- Multi-vendor: 3+ провайдеров, разные ASN
- Города распределены (US East/West/Central, не один)
- GeoIP probe (через сам proxy → ipapi.co) для авто-заполнения
Proxy.country - Per-proxy validation: latency + last-checked + IP-country mismatch detection
Sub-project D — TLS/JA3 variation ⚪ ОТЛОЖЕНО (низкий ROI)
Все VM используют один Patchright/Chromium build → identical TLS ClientHello → один JA3 hash. Решение — разные Chromium версии на разных VM. Maintenance-нагрузка высокая, marginal ROI ниже A/B/C/E. Сделаем последним если станет нужно.
Sub-project E — Behavioral + metadata diversification 🟡 ПЛАНИРУЕТСЯ
Apple видит не только статические fingerprint, но и behavioral signals:
- Тайминги между шагами bootstrap (один и тот же паттерн на всех VM = подозрительно)
- Структура metadata (одинаковые формы review contact, одинаковые copyright templates)
- Скриншоты (одинаковый encoder, одинаковые dimensions)
- Workflow timing (всегда submit через X минут после upload)
Решение: jitter helper, рандомные delays (gauss-distributed), варьируем review contact format, рандомизируем порядок действий где Apple API позволяет.
Что НЕ покрыто (бизнес-уровень, не код)
- Разные платежи / юр.лица / DUNS на каждый Apple Developer аккаунт
- Разные SMS-провайдеры (сейчас все esimplus.me)
- Разные Apple ID email домены (gmail vs proton vs custom)
Realistic risk profile
С полным A+B+C+E уровень "пройти Apple's passive correlation engine при ферме до 50 аккаунтов" — реалистично. Targeted investigation with humans + identity diversification — за пределами кода, бизнес-решение.