پست

رفع محدودیت Region یا کشور در Google Antigravity

رفع محدودیت Region یا کشور در Google Antigravity

وقتی از ایران Antigravity را نصب و لاگین می‌کنید، دو اتفاق می‌افتد. یا پیام «اکانت شما در این منطقه پشتیبانی نمی‌شود» می‌آید. یا بعد از لاگین این خطا را می‌بینید:

1
2
There was an unexpected issue setting up your account.
request failed (code 403) ... /v1internal:loadCodeAssist

این خطا یعنی درخواست به سرور Google رسیده، ولی سرور آن را رد کرده است. مشکل از برنامه نیست و محدودیت از سمت سرور است. برای همین فقط عوض کردن فایل‌ها کافی نیست و باید ترافیک را هم درست مسیر بدهید.

چیزهایی که لازم دارید

  • ویندوز ۱۰ یا ۱۱ و Antigravity 2.0 نصب‌شده
  • پایتون ۳ (برای اجرای پچر از سورس)
  • یک کلاینت پروکسی که حالت TUN داشته باشد
  • یک نود پایدار از کشوری که Antigravity در آن پشتیبانی می‌شود
  • یک اکانت @gmail.com که ترجیحاً اکانت اصلی‌تان نباشد

مرحله ۱: نصب برنامه

برنامه را از صفحه رسمی Antigravity دانلود کنید و نسخه مناسب پردازنده‌تان را بگیرید. روی بیشتر سیستم‌ها نسخه x64 درست است. اگر نسخه اشتباه بگیرید، ویندوز پیام «This app can’t run on your PC» می‌دهد. نوع سیستم را از مسیر Settings > System > About ببینید.
antigravity google

بعد از نصب هنوز لاگین نکنید. اول پچر را اجرا می‌کنیم.

مرحله ۲: دانلود پچر

پروژه‌ای که من استفاده کردم open-antigravity-patcher است. چند نکته درباره آن:

  • فورک‌ها و کپی‌های زیادی از آن در GitHub هست که بعضی‌هاشان با تبلیغ و فایل exe آلوده منتشر می‌شوند.
  • من سورس را از صفحه SourceForge پروژه گرفتم و قبل از اجرا main.py را خواندم.
  • پچر با دسترسی ادمین اجرا می‌شود، پس نباید فایل exe ناشناس را بدون بررسی روی سیستم اصلی اجرا کنید.
  • اگر exe می‌خواهید، قبلش آن را در VirusTotal بررسی کنید.

open-antigravity-patcher

مرحله ۳: اجرای پچر

  1. Antigravity را کامل ببندید. از Tray گزینه Quit را بزنید و در Task Manager هم چک کنید پروسه‌ای نمانده باشد.
  2. PowerShell را با Run as administrator باز کنید.
  3. به پوشه سورس بروید و اجرا کنید:
1
2
cd path\to\open-antigravity-patcher\source
python main.py

در صورتی که نسخه آماده exe را دانلود کرده باشید نیاز به کار بالا نیست و فقط کافی است آن را بصورت Admin اجرا کنید.

  1. در منو باید گزینه درست را بزنید. توضیح داخل منو را بخوانید، چون گزینه اشتباه یعنی پچر هدف را پیدا نمی‌کند. گزینه 1 برای نسخه قدیمی و گزینه 2 برای نسخه‌های جدید است.

مرحله ۴: پاک کردن نشست قبلی

اگر قبلاً لاگین ناموفق داشته‌اید، توکن یا کش خراب می‌تواند خطا بدهد. برنامه را ببندید و این دستور را اجرا کنید:

1
2
3
4
5
taskkill /f /im "Antigravity.exe" 2>$null
$base = "$env:APPDATA\Antigravity"
"Local Storage","blob_storage","Session Storage","Cache" | ForEach-Object {
    Remove-Item (Join-Path $base $_) -Recurse -Force -ErrorAction SilentlyContinue
}

این دستور فقط وضعیت لاگین را پاک می‌کند و بقیه تنظیمات و پروژه‌هایتان سر جایشان می‌ماند. اگر IDE جداگانه نصب کرده‌اید، پوشه آن اسم متفاوتی دارد، پس همان را پاک کنید.

مرحله ۵: پروکسی، بخش اصلی ماجرا

پچر به‌تنهایی من را به نتیجه نرساند. چیزی که مشکل را حل کرد، پروکسی کردن ترافیک سرویس‌های Google بود. چند نکته:

  • حالت System Proxy معمولاً کافی نیست، چون Antigravity بر پایه Electron است و همیشه از پروکسی سیستم پیروی نمی‌کند. پس حالت TUN را روشن کنید.
  • نود باید از کشور پشتیبانی‌شده باشد و پایدار هم باشد. نودهای رایگانی که مدام قطع و وصل می‌شوند مشکل را برمی‌گردانند.
  • در کلاینت پروکسی‌تان قانونی بگذارید که دامنه‌های Google (مثل googleapis.com) از نود بگذرند.
  • قبل از باز کردن برنامه، پروکسی را روشن کنید. اگر نود را عوض کردید، Antigravity را کامل ببندید و دوباره باز کنید.

بعد از این مرحله برنامه را باز کردم، با اکانت Gmail لاگین زدم و خطای 403 دیگر نیامد.

اگر هنوز خطا می‌گیرید

۱. لاگ را بخوانید:

1
type "$env:APPDATA\Antigravity\logs\language_server.log"

دنبال loadCodeAssist، 403 یا ERR_CONNECTION_RESET بگردید. بسته به نوع خطا مشکل از شبکه است یا از اکانت.

۲. با اکانت Workspace مشکل دارید؟ مستندات رسمی توصیه می‌کند با @gmail.com امتحان کنید.

۳. فایل hosts را چک کنید. اگر قبلاً ابزاری دامنه‌های Google را در آن دستکاری کرده، مسیر درخواست‌ها عوض می‌شود:

1
Select-String -Path "$env:WINDIR\System32\drivers\etc\hosts" -Pattern "google"

۴. اگر اکانت و منطقه با هم نمی‌خوانند، هیچ پاک‌سازی محلی مشکل را حل نمی‌کند. این دقیقاً چیزی است که پچر نمی‌تواند عوضش کند.

چند هشدار قبل از شروع

  • این روش محدودیت منطقه‌ای را دور می‌زند و احتمالاً با شرایط استفاده Google جور نیست. ریسک مسدود شدن اکانت با خودتان است، پس از اکانت اصلی‌تان استفاده نکنید.
  • پچر فایل برنامه را تغییر می‌دهد. با هر آپدیت ممکن است از کار بیفتد و باید دوباره اجرایش کنید.
  • تضمینی نیست که این روش همیشه کار کند. سمت سرور هر لحظه ممکن است تغییر کند.

پچر پشت صحنه چه کاری انجام می‌دهد؟

برای فهمیدن نقش پچر، باید دو موضوع را از هم جدا کنیم: بررسی‌هایی که داخل برنامه انجام می‌شوند و تصمیم‌هایی که سرور Google می‌گیرد. پچر روی بخش اول اثر می‌گذارد؛ پروکسی مسیر رسیدن درخواست‌ها به بخش دوم را تغییر می‌دهد.

پچ نسخه IDE: تغییر یک شرط در جاوااسکریپت

برای Antigravity IDE، فایل هدف طبق README این است:

1
resources\app\out\main.js

پچر در این فایل دنبال الگویی می‌گردد که به ویژگی isGoogleInternal اشاره دارد. تغییر اعلام‌شده در README را می‌توان به این صورت نمایش داد؛ XXX در این مثال جای نام متغیری است که ممکن است بین نسخه‌ها تغییر کند:

1
2
3
4
5
// قبل از پچ
resetIsTierGCPTos(), this.XXX.isGoogleInternal

// بعد از پچ
resetIsTierGCPTos(), true

در کد اولیه، نتیجه عبارت به مقدار isGoogleInternal وابسته است. بعد از جایگزینی، آن بخش از عبارت بدون توجه به مقدار واقعی ویژگی، true می‌شود.
این تفاوت مهم است: پچر حساب را واقعاً به حساب داخلی Google تبدیل نمی‌کند؛ فقط یکی از شرط‌هایی را که برنامه محلی بررسی می‌کند، تغییر می‌دهد. توضیح پروژه این تغییر را راهی برای فعال شدن مسیر محلی مربوط به کاربران داخلی معرفی می‌کند.

پچ نسخه 2.0: تغییر کد ماشین Language Server

در Antigravity 2.0، فایل هدف اعلام‌شده برای ویندوز این است:

1
resources\bin\language_server.exe

این بار با یک فایل جاوااسکریپت روبه‌رو نیستیم. پچر باید الگوی مشخصی از بایت‌ها را داخل فایل اجرایی پیدا کند و آن بخش را تغییر دهد. README این پچ را تغییری در بررسی hasValidAuth معرفی می‌کند.

تغییر اعلام‌شده برای x86-64

طبق توضیح پروژه، یکی از دستورهای هدف این است:

cmp byte ptr [rax+8], 0

این دستور یک بایت از حافظه را با صفر مقایسه می‌کند. جایگزین اعلام‌شده چنین است:

mov byte ptr [rax+8], 1
nop
nop

تفاوت اصلی بین «مقایسه کردن مقدار» و «نوشتن مقدار» است. در نسخه پچ‌شده، مقدار 1 در همان محل نوشته می‌شود. پروژه نتیجه این تغییر را معتبر شدن بررسی محلی hasValidAuth توصیف می‌کند.

تغییر اعلام‌شده برای ARM64

برای معماری ARM64، README از جایگزینی دستورهای ldrb و tbz با این دستورها صحبت می‌کند:

mov w3, #1
strb w3, [x0, #8]

هدف اعلام‌شده مشابه نسخه x86-64 است: نوشتن مقدار 1 در فیلدی که بررسی محلی به آن وابسته است. به همین دلیل، الگوی بایت‌ها و دستورهای پچ بین معماری‌ها متفاوت است.

CLI

برای CLI، هدف اعلام‌شده فایل agy.exe است. توضیح پروژه می‌گوید پچر بخش مربوط به بررسی واجد شرایط بودن یا eligibility را تغییر می‌دهد تا مسیر تولید خطای محلی اجرا نشود.

این هم به معنی دریافت مجوز از سرور نیست. حذف یا تغییر یک خطای محلی، پاسخ API را تغییر نمی‌دهد؛ ممکن است برنامه از آن بررسی عبور کند و در درخواست بعدی همچنان با محدودیت سمت Google روبه‌رو شود.

افزونه VS Code

در افزونه VS Code، فایل هدف extension.js است. طبق گفته تغییرات این بخش به استفاده دوباره از باینری موجود و تغییر رفتار بررسی isChannelChanged مربوط می‌شود. هدف اعلام‌شده جلوگیری از جایگزین شدن باینری پچ‌شده توسط سازوکار مدیریت باینری افزونه است.

پس این بخش بیشتر به حفظ تغییرات محلی مربوط است، نه ایجاد دسترسی جدید در حساب کاربری.

چرا بعد از پچ هنوز خطای 403 می‌آمد؟

در خطایی که من دیدم، درخواست مربوط به این مسیر بود:

1
/v1internal:loadCodeAssist

پاسخ نمایش‌داده‌شده هم 403 Forbidden بود. این یعنی مشکل در مرحله درخواست به سرویس Google ظاهر شده بود، نه در پیدا کردن فایل نصب یا اجرای پچر.