{"id":50654415,"url":"https://github.com/forg-lib-lov/roscomvpn-shadowrocket","last_synced_at":"2026-06-07T23:01:38.660Z","repository":{"id":350008895,"uuid":"1204909173","full_name":"forg-lib-lov/roscomvpn-shadowrocket","owner":"forg-lib-lov","description":"Shadowrocket конфиг для России: всё зарубежное через VPN, РФ сервисы напрямую. Автообновление ежедневно.","archived":false,"fork":false,"pushed_at":"2026-06-07T09:18:19.000Z","size":742,"stargazers_count":10,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-07T11:13:12.566Z","etag":null,"topics":["ios","macos","proxy","roscomvpn","routing","russian","shadowrocket","vpn"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/forg-lib-lov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-08T13:00:20.000Z","updated_at":"2026-06-07T09:18:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/forg-lib-lov/roscomvpn-shadowrocket","commit_stats":null,"previous_names":["forg-lib-lov/roscomvpn-shadowrocket"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/forg-lib-lov/roscomvpn-shadowrocket","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forg-lib-lov%2Froscomvpn-shadowrocket","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forg-lib-lov%2Froscomvpn-shadowrocket/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forg-lib-lov%2Froscomvpn-shadowrocket/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forg-lib-lov%2Froscomvpn-shadowrocket/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/forg-lib-lov","download_url":"https://codeload.github.com/forg-lib-lov/roscomvpn-shadowrocket/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forg-lib-lov%2Froscomvpn-shadowrocket/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34041089,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-07T02:00:07.652Z","response_time":124,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ios","macos","proxy","roscomvpn","routing","russian","shadowrocket","vpn"],"created_at":"2026-06-07T23:01:32.926Z","updated_at":"2026-06-07T23:01:38.650Z","avatar_url":"https://github.com/forg-lib-lov.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# roscomvpn-shadowrocket\n\nГотовый конфиг [Shadowrocket](https://apps.apple.com/ru/app/shadowrocket/id932747118) для России: по умолчанию трафик идёт через VPN, а российские, локальные и явно разрешённые сервисы идут напрямую.\n\nПроект адаптирует DEFAULT-профиль [roscomvpn-routing](https://github.com/hydraponique/roscomvpn-routing) под формат Shadowrocket. Домены и IP берутся из [roscomvpn-geosite](https://github.com/hydraponique/roscomvpn-geosite), [roscomvpn-geoip](https://github.com/hydraponique/roscomvpn-geoip), [v2fly/domain-list-community](https://github.com/v2fly/domain-list-community) и дополнительного RU-whitelist от [hxehex](https://github.com/hxehex/russia-mobile-internet-whitelist).\n\n## Принцип роутинга\n\n| Действие | Что идёт |\n|----------|----------|\n| REJECT | Windows телеметрия |\n| PROXY | Google Play, YouTube, Telegram, GitHub, ChatGPT/OpenAI, Instagram/Facebook, TikTok, Microsoft Store и весь остальной трафик, который не попал в DIRECT/REJECT |\n| DIRECT | локальные адреса, РФ/BY домены и IP, белые списки российских сервисов, Steam, Epic, Riot, EFT, Twitch, основная часть Microsoft, Apple, Pinterest, Faceit, torrent-домены и ручные DIRECT-исключения |\n\nЕсли домен не попал в доменные списки, Shadowrocket сначала проверит `GEOIP,RU` и `GEOIP,BY`. Российские и белорусские IP пойдут напрямую, всё остальное уйдёт через VPN по `FINAL,PROXY`.\n\n## Ручные исключения\n\nВ конфиге есть два небольших ручных слоя.\n\n`force-proxy.list` - важные зарубежные сервисы, которые должны идти через VPN явно: ChatGPT/OpenAI, Instagram/Facebook и TikTok. Telegram, YouTube, Google Play и GitHub тоже идут через VPN отдельными списками.\n\n`microsoft-store.list` - Microsoft Store через VPN: сайт `apps.microsoft.com`, каталог, лицензирование и домены скачивания пакетов.\n\n`manual-direct.list` - сайты, которые должны идти напрямую: `autowp.ru`, `appstorrent.ru`.\n\nGoogle Play идёт через VPN не потому, что весь магазин полностью заблокирован. Бесплатные приложения обычно доступны, но платные приложения, платежи и часть обновлений для российских аккаунтов ограничены. Через VPN поведение Google Play обычно предсказуемее.\n\nMicrosoft Store вынесен в отдельный VPN-список, потому что одного `apps.microsoft.com` мало. Сам сайт может открываться, но каталог, кнопки установки и скачивание пакетов используют отдельные адреса Microsoft, например `displaycatalog.mp.microsoft.com`, `storeedgefd.dsx.mp.microsoft.com` и `dl.delivery.mp.microsoft.com`.\n\n## Торренты\n\nTorrent-домены из базового roscomvpn-списка идут напрямую через `torrent-domains.list`.\n\nВажно: это не гарантирует, что весь BitTorrent-обмен с пирами всегда пойдёт мимо VPN. BitTorrent подключается к случайным IP других пользователей, и обычный доменный список не всегда может отличить такой трафик от любого другого соединения. Если твой VPN-провайдер запрещает торренты, самый надёжный вариант - выключать VPN/Shadowrocket на время torrent-клиента или настраивать torrent-клиент/устройство отдельно.\n\nРекламные правила отключены специально: задача этого конфига - маршрутизация, а не блокировка рекламы. Так меньше риск сломать загрузку картинок, скриптов и вёрстку обычных сайтов.\n\n## Быстрый старт\n\nДобавь готовый конфиг в Shadowrocket:\n\n```text\nhttps://cdn.jsdelivr.net/gh/forg-lib-lov/roscomvpn-shadowrocket@main/roscomvpn.conf\n```\n\nВ Shadowrocket: `Configurations` → `+` → вставь URL → нажми на конфиг → `Use Config`.\n\n## Настройка GeoLite2\n\nДля `GEOIP,RU,DIRECT` и `GEOIP,BY,DIRECT` нужна актуальная GeoLite2 Country база.\n\nВ Shadowrocket: `Settings` → `GeoLite2 Database` → поле **Country** → вставь URL → `Download`:\n\n```text\nhttps://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-Country.mmdb\n```\n\n## Обновление\n\nКонфиг в репозитории обновляется каждый день в 09:00 MSK через GitHub Actions.\n\nПосле публикации изменений GitHub Actions автоматически очищает кеш jsDelivr для `roscomvpn.conf` и всех подключённых `lists/*.list`, чтобы Shadowrocket быстрее получал свежую версию.\n\nВручную: `Configurations` → свайп влево по конфигу → `Update Config`.\n\nАвтоматически: `Settings` → `Auto Update` → включи обновление конфигов и выставь интервал. Для фонового обновления в iOS должен быть включён `Background App Refresh` для Shadowrocket.\n\n`.list`-файлы подключены через CDN URL и обновляются Shadowrocket при применении или компиляции конфига.\n\nЕсли нужно срочно очистить CDN-кеш вручную, открой:\n\n```text\nhttps://purge.jsdelivr.net/gh/forg-lib-lov/roscomvpn-shadowrocket@main/roscomvpn.conf\n```\n\n## Кастомизация\n\n1. Сделай fork репозитория. Репозиторий должен быть публичным, если ты хочешь использовать jsDelivr URL.\n2. В своём репозитории открой `Actions` → `Update Shadowrocket Config` → `Run workflow`.\n3. Добавь свой конфиг в Shadowrocket:\n\n```text\nhttps://cdn.jsdelivr.net/gh/YOUR_GITHUB_USERNAME/roscomvpn-shadowrocket@main/roscomvpn.conf\n```\n\nЕсли у форка другая ветка, замени `@main` на её имя.\n\nПравила редактируются в `scripts/generate.py`. Основные списки:\n\n```python\nDOMAIN_RULES = [\n    (\"youtube\", \"geosite\", \"PROXY\", \"youtube.list\"),\n    (\"category-ru\", \"geosite\", \"DIRECT\", \"category-ru.list\"),\n]\n\nIP_RULES = [\n    (\"direct\", \"geoip\", \"DIRECT\", \"direct-ips.list\", True),\n]\n```\n\nРучные списки редактируются там же:\n\n```python\nFORCE_PROXY_CATEGORIES = [\n    \"openai\",\n    \"instagram\",\n    \"facebook\",\n    \"tiktok\",\n]\n\nMANUAL_DIRECT_DOMAINS = [\n    \"autowp.ru\",\n    \"appstorrent.ru\",\n]\n\nMICROSOFT_STORE_PROXY_DOMAINS = [\n    \"apps.microsoft.com\",\n    \"get.microsoft.com\",\n    \"displaycatalog.mp.microsoft.com\",\n    \"purchase.md.mp.microsoft.com\",\n    \"licensing.mp.microsoft.com\",\n    \"storeedgefd.dsx.mp.microsoft.com\",\n    \"dl.delivery.mp.microsoft.com\",\n    \"store-images.s-microsoft.com\",\n    \"img-prod-cms-rt-microsoft-com.akamaized.net\",\n]\n```\n\nГенератор падает с ошибкой, если источник недоступен или после конвертации категория стала пустой. Это сделано специально, чтобы GitHub Actions не публиковал частично сломанный конфиг.\n\n## Как это работает\n\n```text\nroscomvpn-geosite                       ──┐\nroscomvpn-geoip                         ──┤\nhxehex/russia-mobile-internet-whitelist ──┤\nv2fly/domain-list-community             ──┘\n                                             ► scripts/generate.py ──► lists/*.list + roscomvpn.conf\n\nShadowrocket ──► update-url ──► свежий roscomvpn.conf\n             └─► RULE-SET URLs ──► списки правил\n```\n\nПо умолчанию опубликованные ссылки строятся через jsDelivr:\n\n```text\nhttps://cdn.jsdelivr.net/gh/{owner}/{repo}@{branch}/...\n```\n\nДля нестандартной публикации можно задать переменные окружения:\n\n| Переменная | Назначение |\n|------------|------------|\n| `GITHUB_REPO` | `owner/repo` текущего репозитория |\n| `GITHUB_BRANCH` | ветка для публичных URL |\n| `PUBLISH_BASE` | полный базовый URL, если не нужен jsDelivr |\n\n## Структура файлов\n\n```text\nroscomvpn-shadowrocket/\n├── .github/workflows/update.yml  # ежедневное обновление\n├── scripts/generate.py           # генератор Shadowrocket-правил\n├── lists/                        # опубликованные RULE-SET списки\n└── roscomvpn.conf                # готовый конфиг\n```\n\n## Источники правил\n\n- Логика профиля: [hydraponique/roscomvpn-routing](https://github.com/hydraponique/roscomvpn-routing)\n- Домены: [hydraponique/roscomvpn-geosite](https://github.com/hydraponique/roscomvpn-geosite)\n- IP-адреса: [hydraponique/roscomvpn-geoip](https://github.com/hydraponique/roscomvpn-geoip)\n- Дополнительный DIRECT-слой: [hxehex/russia-mobile-internet-whitelist](https://github.com/hxehex/russia-mobile-internet-whitelist)\n- Важные зарубежные сервисы: [v2fly/domain-list-community](https://github.com/v2fly/domain-list-community)\n- Ручные исключения: `scripts/generate.py`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fforg-lib-lov%2Froscomvpn-shadowrocket","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fforg-lib-lov%2Froscomvpn-shadowrocket","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fforg-lib-lov%2Froscomvpn-shadowrocket/lists"}