
Skirk یک ابزار Go-first برای تست شبکههای محدود است. روی دستگاه کلاینت یک پروکسی SOCKS5، پروکسی HTTP اختیاری، یا VPN اندروید میدهد و ترافیک TCP را به صورت رمزگذاریشده از مسیر یک mailbox folder در Google Drive به یک دستگاه خروجی میرساند. دستگاه خروجی همان جایی است که اینترنت معمولی دارد و درخواستها را به مقصد واقعی وصل میکند.
استفاده از Skirk فقط برای کار قانونی، با اجازه، روی اکانت و شبکهای است که خودتان حق استفاده از آن را دارید. این پروژه وابسته به Google، Google Cloud، Google Drive، Cloudflare، GitHub، Microsoft، Android یا هیچ ارائهدهندهی دیگری نیست. قبل از استفاده یا انتشار، حتما DISCLAIMER.md را بخوانید.
skirk:... که میتوانید برای دستگاههای کلاینت بفرستید.کلاینتها لازم نیست وارد Google شوند، gcloud نصب کنند، یا پروژه Google Cloud
داشته باشند. راهاندازی فقط یک بار روی دستگاه خروجی انجام میشود و در آخر یک
متن یکخطی میدهد که برای کلاینت فرستاده میشود.
همان پروفایل را میشود روی چند دستگاه import کرد. هر کلاینت برای خودش یک
شناسه محلی میسازد و هر بار اتصال هم یک شناسه اجرای تازه دارد، برای همین
جوابهای Drive بین دو دستگاه قاطی نمیشود.
روی دستگاه خروجی Skirk را نصب کنید:
curl -fsSL https://raw.githubusercontent.com/ShahabSL/Skirk/main/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"
یک kit بسازید:
skirk setup init --out skirk-kit --reset-google-login
setup یک لینک Google و یک کد کوتاه نشان میدهد. لینک را در مرورگر باز کنید، کد را وارد کنید، دسترسی Drive را تایید کنید، و ترمینال ادامه میدهد.
بعد exit را روشن کنید:
skirk serve-exit --config skirk-kit/exit.json
فایل skirk-kit/client.skirk همان پروفایل یکخطی کلاینت است. آن را برای
کلاینت بفرستید.
روی کلاینت Linux:
curl -fsSL https://raw.githubusercontent.com/ShahabSL/Skirk/main/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"
read -r SKIRK_CLIENT_CONFIG
# پروفایل skirk:... را paste کنید، Enter بزنید، بعد:
skirk serve-client --config "$SKIRK_CLIENT_CONFIG" --listen 127.0.0.1:18080
برای تست:
curl --socks5-hostname 127.0.0.1:18080 http://example.com/
اگر برنامهای که استفاده میکنید گزینه socks5h دارد، همان را انتخاب کنید تا
DNS هم از مسیر exit رد شود.
روی Linux یا سرورهای بدون محیط گرافیکی، همان CLI کافی است:
skirk serve-client --config client.skirk --listen 127.0.0.1:18080
اگر روی یک Linux همیشه از همین کلاینت استفاده میکنید، بهتر است یک client ID ثابت بدهید. این مقدار secret نیست؛ فقط این دستگاه را از بقیه دستگاههایی که همان پروفایل را دارند جدا میکند:
skirk serve-client --config client.skirk --listen 127.0.0.1:18080 --client-id my-laptop
روی Windows، نسخه portable دسکتاپ را از Release دانلود کنید. برنامه همان
پروفایل یکخطی skirk: را import میکند و sidecar داخلی Skirk را بالا
میآورد. فعلا مسیر Windows proxy-first است؛ یعنی مرورگر یا برنامه را روی
SOCKS5 127.0.0.1:18080 تنظیم کنید.
روی Android، برنامه Android را نصب کنید، پروفایل یکخطی را import کنید، حالت
VPN را انتخاب کنید و Connect بزنید. Android دفعه اول اجازه VPN میخواهد.
حالت Proxy هم هست، ولی فقط وقتی مناسب است که خود برنامه یا دستگاه دیگری در
LAN بتواند SOCKS5 را مستقیم تنظیم کند.
جزئیات بیشتر در docs/clients.md آمده است.
پروفایلهای کلاینت به صورت پیشفرض از google_front_pinned استفاده میکنند؛
یعنی ترافیک Google API را از مسیری با ظاهر Google و متصل به IP ثابت Google عبور
میدهند. exit معمولا direct است، چون خودش اینترنت عادی دارد.
پروفایلهای لینوکس که قبل از v0.1.51 ساخته شدهاند با آپدیت به صورت خودکار
بازنویسی نمیشوند. kit را دوباره بسازید یا هنگام اجرای کلاینت
--route-mode google_front_pinned --google-ip 216.239.38.120 را بدهید.
اگر شبکه محدود روی سیستم شما به شکل یک SOCKS محلی در دسترس است:
skirk serve-client \
--config "$SKIRK_CLIENT_CONFIG" \
--listen 127.0.0.1:18080 \
--route-mode google_front_pinned \
--upstream-proxy socks5h://127.0.0.1:11093
برای تست سرعت روی اینترنت عادی، --upstream-proxy را حذف کنید. اگر خواستید
مستقیم به Google API وصل شوید:
skirk serve-client --config "$SKIRK_CLIENT_CONFIG" --listen 127.0.0.1:18080 --route-mode direct
وقتی exit روشن است، latency، throughput و مصرف تقریبی Drive API را اینطور اندازه بگیرید:
skirk bench-live --config skirk-kit/client.skirk --samples 5
تست از مسیر شبکه محدود:
skirk bench-live \
--config skirk-kit/client.skirk \
--upstream-proxy socks5h://127.0.0.1:11093 \
--route-mode google_front_pinned \
--samples 3
برای تست حجم بالاتر:
skirk bench-live --config skirk-kit/client.skirk --bulk-url http://example.com/big.bin
لاگها در هر دقیقه تعداد عملیات Drive، quota تخمینی، خطاها، حجم پاسخها و زمان عملیاتها را نشان میدهند. اگر OAuth client خودتان را استفاده میکنید، Google Cloud Console منبع دقیقتر برای quota پروژه است.
در حالت عادی، runtime فایلهای mailbox را بعد از پردازش حذف میکند. serve-exit
هم یک janitor خودکار دارد که آبجکتهای قدیمی مسیرهای transport mux را که
بیشتر از ۲۴ ساعت ماندهاند پاک میکند.
پاکسازی دستی به صورت dry-run:
skirk cleanup --config skirk-kit/exit.json --older-than 2h
حذف واقعی:
skirk cleanup --config skirk-kit/exit.json --older-than 2h --delete
برای revoke کردن OAuth token داخل config:
skirk revoke --config skirk-kit/exit.json --revoke-oauth
بعد فایلهای ساختهشده را پاک کنید:
rm -rf skirk-kit
اگر پروفایل کلاینت leak شد، OAuth را revoke کنید و kit جدید بسازید. با
client.skirk، client.json و exit.json مثل پسورد رفتار کنید.
اگر میخواهید خروجی exit از یک پروکسی دیگر رد شود، مثلا WARP/wireproxy:
skirk serve-exit --config skirk-kit/exit.json --exit-proxy socks5h://127.0.0.1:40000
اگر علاوه بر SOCKS5، پروکسی HTTP/HTTPS هم میخواهید:
skirk serve-client \
--config skirk-kit/client.skirk \
--listen 127.0.0.1:18080 \
--http-proxy-listen 127.0.0.1:18081
مسیر پایدار runtime از fresh prefix listing روی Google Drive استفاده میکند.
مقدار --poll-ms knob اصلی latency سمت کلاینت است و مقدار پیشفرض/پیشنهادی
100 میلیثانیه است؛ polling تهاجمیتر میتواند رقابت بیشتری روی Drive ایجاد
کند.
$ claude mcp add Skirk \
-- python -m otcore.mcp_server <graph>