Skip to content

BingX XPool Pipeline

Overview

Для BingX XPool используется browser scraping через Playwright.
Прямой API-клиент без браузера нестабилен из-за Cloudflare/anti-bot ограничений.

Текущая реализация: - ScrapeBingXXPoolWorkflow — получает структурированный список проектов/подпулов; - SyncBingXXPoolWorkflow — вызывает scraping и пишет snapshots в Timescale через SQL ingest.

Код: - internal/worker/activities/scrape_bingx_xpool.go - internal/worker/activities/sync_bingx_xpool.go - internal/db/migrations/00009_bingx_xpool_snapshot_schema.sql - internal/db/migrations/00010_bingx_xpool_aggregates_policies.sql

Web Endpoints (UI)

  • https://bingx.com/en/xpool/overview
  • https://bingx.com/en/xpool/detail?currency=<project_id>

Для XPool pipeline используются только xpool маршруты без fallback на launchpool.

Captured API Endpoints

Внутри браузерной сессии перехватываются ответы: - /api/spot-launchpool/v2/entrance - /api/spot-launchpool/v1/project/process-list - /api/spot-launchpool/v1/project/completed-list?pageSize=100 - /api/spot-pre-launchpool/v1/project/list - /api/spot-launchpool/v1/project/config?projectId=... (или currency=...)

Практически: - v2/entrance содержит метаданные страницы (без списка проектов); - overview-список проектов приходит через process-list и completed-list; - detail-данные по подпулам — через project/config; - при отсутствии нужных полей в API включается fallback на DOM extraction.

Storage Contract

SQL ingestion entrypoint: - ingest_bingx_xpool_snapshot($1::jsonb)

Payload source: - internal path /playwright/bingx/xpool - source marker playwright - список projects[] из scraper activity

Target tables: - fct_bingx_xpool_snapshot - fct_bingx_xpool_subpool_snapshot - fct_bingx_xpool_response_snapshot - fct_bingx_xpool_quarantine - fct_bingx_xpool_5min - fct_bingx_xpool_daily

Manual Runs

Scraping only:

docker compose exec -T temporal temporal workflow start \
  --address temporal:7233 --namespace default --task-queue default \
  --type ScrapeBingXXPoolWorkflow \
  --workflow-id scrape-bingx-xpool-manual-$(date +%s) \
  --input '{"include_details":true}'

Scraping + ingestion:

docker compose exec -T temporal temporal workflow start \
  --address temporal:7233 --namespace default --task-queue default \
  --type SyncBingXXPoolWorkflow \
  --workflow-id sync-bingx-xpool-manual-$(date +%s) \
  --input '{"include_details":true}'

Diagnostics Artifacts

  • Full request log: docs/api/bingx-xpool-requests.json
  • Capture helper script: docs/check_xpool_api.py