umbrella_rs

PayPal Browser

Run the separate browser helper that keeps PayPal sessions available.

paypal-browser is a separate Python process. It logs into PayPal in a real browser, stores PayPal cookies in Redis, and synchronizes per-account concurrency with the payment distributor. Run it alongside the Rust application when using Carrefour PayPal payments.

Requirements

  • Python 3.11 or newer;
  • uv (the repository includes uv.lock), or another Python environment tool;
  • a browser environment supported by nodriver;
  • network access to PayPal, the configured Redis service, and payment distributor.

Configure accounts

From umbrella_rs/paypal-browser, copy the example:

cp accounts.example.json accounts.json

On PowerShell:

Copy-Item accounts.example.json accounts.json

Edit accounts.json:

[
  {
    "email": "user@example.com",
    "password": "replace-me",
    "webhook": "https://discord.com/api/webhooks/...",
    "concurrency": 2,
    "proxy": "host:port:username:password"
  }
]
KeyMeaning
emailPayPal login and cookie-store identity. Use the same email in the GUI PayPal account.
passwordPayPal password.
webhookOptional Discord URL for manual CAPTCHA/OTP alerts.
concurrencyRequired integer of at least one; synchronized before browsers start.
proxyOptional per-account proxy: host:port, host:port:user:pass, or a complete proxy URL.

accounts.json is gitignored. Keep it private.

Install and run

cd paypal-browser
uv sync
uv run python main.py

One long-running browser loop starts per account. Startup first sends every account's concurrency limit to the distributor; if validation or synchronization fails, browsers do not start.

The helper attempts login automatically. If it has not reached the PayPal account summary after 15 seconds, it sends the account webhook a manual-action warning. Complete CAPTCHA, OTP, or 2FA in the visible browser. After login, it saves PayPal cookies to Redis for one hour, reloads the page every minute, and restarts the browser session after 60 refreshes or an error.

Connect it to the GUI

  1. Keep paypal-browser running and successfully logged in.
  2. In the Rust app, open PayPal accounts.
  3. Add the exact same PayPal email and its funding option ID.
  4. Create a Carrefour task with payment type paypal and select that PayPal account.

The helper's Redis and distributor endpoints are currently fixed in source, not read from environment variables. Deployments using different services must change those constants and rebuild/restart the helper. Do not publish endpoint credentials from the source or configuration.

On this page