К содержимому

Прокси для тестирования dApp: проверка из нужных стран

Отдельный постоянный выход на каждую тестовую страну — гео-правило, перевод или ошибка RPC видны в тестах раньше, чем у пользователей.

Зачем тестам dApp прокси

dApp по-разному отвечает пользователям из разных стран. Polymarket, например, документирует запрос geoblock, который возвращает определённые IP, страну и регион, перечисляет юрисдикции с полной блокировкой и с режимом «только закрытие позиций» — в этом списке есть и Россия — и требует от разработчиков проверять местоположение до отправки ордера. Если в вашем dApp есть такие правила, результат для каждого региона виден только с IP этого региона.

Автотесты принимают прокси на браузер или на контекст. Playwright задаёт прокси для всего браузера или для каждого контекста, поэтому один прогон проходит несколько стран, а логин и пароль передаёт только HTTP(S)-прокси — создавайте IP с протоколом HTTP. Расширения вроде MetaMask загружаются только в Chromium с постоянным контекстом.

Постоянные выходы делают результаты сравнимыми. Статический IP дата-центра не меняется весь срок, и страна, где тест упал сегодня, завтра падает на том же адресе, а не на случайном. В консоли эта настройка для Web3 называется «Разработка и инструменты».

Рекомендуемая настройка для тестов dApp

Используйте клавиши со стрелками для горизонтальной прокрутки.

Рекомендуемая настройка для тестов dApp
КритерийВыборПочему
ПродуктСтатический прокси дата-центраПостоянные быстрые IP с оплатой за IP
ОплатаЗа IP и срокАдрес не меняется до конца срока
Сколько IPПо одному на тестовую странуУ каждого региона свой постоянный выход
СтранаКаждый рынок, который вы обслуживаете или ограничиваетеДля Web3 страна не выбирается автоматически — по IP на страну
ПротоколHTTP (по умолчанию)Логин и пароль Playwright передаёт только HTTP(S)-прокси
Смена IPНет, весь срокПродлевайте в «Мои активы», чтобы прогоны оставались сравнимыми

Кнопка «Настроить прокси для тестов dApp» открывает статические прокси дата-центра для сценария Web3: оплата за IP и срок, протокол HTTP. Выберите регион, срок и количество (до 100 IP за раз) до оплаты.

Какой прокси Proxy302 выбрать

Используйте клавиши со стрелками для горизонтальной прокрутки.

Какой прокси Proxy302 выбрать
КритерийСтатический ISPРотационный резидентныйДата-центр
Что вы получаетеДомашний IP, закреплённый за вами на весь срокIP домашних сетей: липкая сессия в выбранной стране или ротация на бюджетной линииФиксированные IP в дата-центрах — самый быстрый и дешёвый вариант в консоли
ЦенаЗа IP и срок, сумма в PTC видна до оплаты (1 PTC = US$1)За ГБ: бюджетная US$1.50, премиум US$5.00, от 1 ГБЗа IP и срок, сумма в PTC видна до оплаты
Лучше всего для тестов dAppПроверки, которые должны идти с домашнего адресаВыборочные проверки во многих странах и городах с оплатой за ГБАвтотесты в CI — по постоянному IP на страну

Цены в долларах США, оплата балансом PTC (1 PTC = US$1). Пополните кошелёк и купите нужную линию. Автопродления пока нет — продлевайте статические IP в «Мои активы» до конца срока.

Настройка прокси для тестов dApp за 4 шага

  1. Откройте настройку для разработки

    Кнопка «Настроить прокси для тестов dApp» открывает «Статические прокси дата-центра» со сценарием Web3. В «Настройках подключения» выберите регион и срок, оставьте протокол HTTP и нажмите «Проверить цену и создать». Одна покупка — один регион, поэтому повторите её для каждой страны из тестовой матрицы; несколько IP в одной стране задаются в поле «Количество» (до 100 за раз).

    Ожидаемый результат В «Ваша конфигурация» указаны «За IP и срок», Web3, регион и протокол.

  2. Скопируйте данные подключения

    После оплаты консоль открывает «Мои активы». Нажмите «Показать данные» у нового прокси и скопируйте адрес подключения (хост:порт), логин и пароль.

  3. Добавьте выходы в конфигурацию тестов

    Храните хост, порт, логин и пароль каждой страны в секретах CI, а не в репозитории. В Playwright передавайте их в параметре proxy браузера или каждого контекста, как в примере ниже.

  4. Прогоните сценарий по странам

    Запустите один и тот же сценарий через каждый выход: сначала узнайте страну выхода, затем статус страницы, и сохраните скриншот для каждой страны.

    Ожидаемый результат Каждый прогон выводит страну выхода, статус страницы и скриншот.

Один тест через выход каждой страны (Playwright)

Используйте клавиши со стрелками для горизонтальной прокрутки.

// Save as geo-test.mjs and run: node geo-test.mjs
// npm i -D playwright && npx playwright install chromium
import { chromium } from 'playwright'

const DAPP_URL = 'https://app.example.org/' // your dApp
const exits = {
  US: { server: 'http://US_HOST:PORT', username: 'USERNAME', password: 'PASSWORD' },
  DE: { server: 'http://DE_HOST:PORT', username: 'USERNAME', password: 'PASSWORD' },
}

const browser = await chromium.launch()
for (const [expected, proxy] of Object.entries(exits)) {
  const context = await browser.newContext({ proxy })
  const page = await context.newPage()
  await page.goto('https://ipinfo.io/country')
  const seen = (await page.locator('body').innerText()).trim()
  const response = await page.goto(DAPP_URL, { waitUntil: 'domcontentloaded' })
  console.log(`${expected}: exit ${seen}, status ${response?.status()}`)
  await page.screenshot({ path: `dapp-${expected}.png`, fullPage: true })
  await context.close()
}
await browser.close()

Playwright задаёт прокси для каждого контекста, поэтому один запуск проходит по нескольким странам. Храните хосты и пароли в секретах CI, а DAPP_URL замените адресом своего dApp.

Быстрые решения

Во всех странах одинаковый результат

Проверьте ipinfo.io в каждом контексте показывает ожидаемую страну?

Решение Задайте каждому контексту свой proxy и проверьте, что IP куплен в нужной стране. Повторите прогон с одним выходом, чтобы найти ошибку.

407 Proxy Authentication Required

Проверьте Логин и пароль заданы отдельными полями, совпадают с «Показать данные», а IP создан с протоколом HTTP?

Решение Передайте username и password рядом с server, как в примере, и скопируйте их заново в «Мои активы».

Расширение кошелька не загружается в тесте

Проверьте Запускается Chromium с постоянным контекстом, а не Google Chrome или Edge?

Решение Используйте Chromium из комплекта Playwright и launchPersistentContext, а прокси передайте в тех же параметрах запуска.

Частые вопросы о прокси для тестов dApp

Дата-центр или резидентные IP для тестов dApp?

Для автотестов — дата-центр: постоянный недорогой IP на страну. Ротационные резидентные — для выборочных проверок во многих странах и городах, статический ISP — когда нужен домашний адрес.

Можно ли тестировать вместе с MetaMask?

Да, в Chromium: Playwright загружает расширения только с постоянным контекстом, и прокси браузера покрывает трафик MetaMask. Используйте только тестовый кошелёк с тестовыми средствами.

Как проверить гео-блокировку своего dApp?

Прогоните ограниченный сценарий через IP каждой ограниченной страны и одной разрешённой, затем сравните. Так устроено и у Polymarket: перед ордером запрос geoblock возвращает страну и регион.

Меняет ли прокси данные блокчейна или ответы RPC?

Нет. Он меняет только то, откуда идут запросы, а не то, что возвращает узел. Если результаты зависят от страны, проверьте, не обращается ли dApp к разным RPC или API в разных регионах.

Сколько IP нужно?

По одному на страну из тестовой матрицы. Параллельные прогоны в одной стране могут делить этот IP, если вы укладываетесь в лимиты dApp и RPC-провайдера.

Источники и проверка

5
  1. Документация Polymarket: географические ограничения

    Официальная документация · Проверено:

    Описан запрос GET https://polymarket.com/api/geoblock: он возвращает признак блокировки, определённые IP, страну и регион; перечислены юрисдикции с полной блокировкой и с режимом «только закрытие позиций» (в интерфейсе и API или только в интерфейсе), в том числе Россия; разработчикам велено проверять местоположение до отправки ордеров.

  2. Документация Playwright: HTTP-прокси

    Официальная документация · Проверено:

    Прокси задаётся для всего браузера или для каждого контекста: поля server, username и password; поддерживаются HTTP(S) и SOCKSv5, а необязательные логин и пароль описаны только для HTTP(S)-прокси.

  3. Документация Playwright: расширения Chrome

    Официальная документация · Проверено:

    Расширения работают только в Chromium, запущенном с постоянным контекстом; в Google Chrome и Microsoft Edge убраны флаги для загрузки расширений.

  4. Конфигурация статического прокси дата-центра Proxy302 для Web3

    Наблюдение за продуктом · Проверено:

    Проверено по исходному коду консоли 18.10.2026: для сценария Web3 страница статического дата-центра оплачивается за IP и срок, протокол HTTP или SOCKS5 (по умолчанию HTTP), регион заранее не выбран, «Автопродление IP» — «Пока недоступно», указано, что статический IP не меняется. Подсказка Web3: «Разработка и инструменты: За IP · HTTP CONNECT по умолчанию · 1 выход · протокол и срок на выбор». С 19.10.2026 поле «Количество» принимает от 1 до 100, а консоль оформляет и списывает каждый IP отдельно.

  5. Цены Proxy302

    Наблюдение за продуктом · Проверено:

    На странице цен: бюджетные ротационные резидентные — US$1.50 за ГБ, премиум — US$5.00 за ГБ, от 1 ГБ; баланс в PTC, 1 PTC = US$1.00; аренда статических ISP и дата-центр IP зависит от региона, количества и срока и показывается до оплаты (сверено с рабочим каталогом 09.10.2026).

Готовы подключиться?

Создайте аккаунт, пополните баланс и выберите выход: ротируемый резидентский, статический ISP или дата-центр. Ротируемые резидентные — в 195+ странах и регионах.