Clients, Libraries and Tools for a Mobile Proxies US Line
A line from Mobile Proxies US presents three interfaces: an authenticated HTTP(S) proxy, an authenticated SOCKS5 proxy with UDP, and a VLESS tunnel. Anything that speaks one of those works. This page lists the tools we see most and the exact configuration shape for each, with the one or two traps per tool that cause support tickets. Profile browsers come first because they solve the fingerprint half of the problem that a proxy alone does not; libraries and command-line tools follow. The two profile browsers link to their sites; the rest you already have.
Undetectable.io
Profile browserOur first choice for a stable browser identity on a line. Each profile carries its own fingerprint and storage, takes the line's HTTP endpoint as its proxy, and exposes a local API so scripts can create, start and stop profiles and attach Playwright over CDP.
- Create a profile; in the proxy block choose HTTP and enter the line's host, http_port and login from GET /proxies/my.
- Let timezone, locale and geolocation derive from the proxy IP, or set them to the line's metro.
- Start the profile and load an IP echo page; the address must equal ip from GET /proxy/status.
- Attach Playwright or Puppeteer to the debugger URL the local API returns when automating.
- Stop the profile before rotating the line; start it again after the new address is confirmed.
- One profile per line when accounts must look unrelated.
- Keep the local API port from the app's settings in your configuration, not hard-coded.
GoLogin
Profile browserOur second recommendation. Cloud REST API for profile management plus the Orbita browser started locally by the gologin package, which returns a websocket URL for Puppeteer or Playwright. Takes the line as an HTTP proxy per profile.
- Generate a developer token in the app; store it beside your Mobile Proxies US API key.
- Create the profile with proxy mode http and the line's host, port, username and password.
- Start Orbita through the gologin package and connect Puppeteer to the returned websocket URL.
- Verify the exit IP on an echo page before any other navigation.
- Update the profile's proxy fields after a password reset or a metro move.
- Run with a display (Xvfb) on servers; pure headless is scored lower by some sites.
- Name profiles after licence uuids to make the join trivial.
Python requests
HTTP libraryThe default for scripts. A Session with a proxies dict covering both http and https keys reuses connections through the line. Install the socks extra for SOCKS5 and use socks5h so DNS resolves on the carrier side.
- pip install 'requests[socks]'.
- Set session.proxies to the same proxy URL for both the http and https keys.
- Use socks5h:// for SOCKS5 with remote DNS, or http:// for the HTTP endpoint.
- Pass timeout on every call; a rotation in progress stalls rather than refuses.
- Verify with an IP echo and compare with ip from GET /proxy/status.
- Percent-encode reserved characters in the password or use an auth object.
- Catch connection errors during rotation and retry after confirmation.
Node fetch and undici
HTTP libraryNode's built-in fetch is undici underneath; a ProxyAgent pointed at the line's HTTP endpoint with credentials in the URL or the headers routes requests through it. For SOCKS5, pair undici with a SOCKS agent or use a local xray port.
- Import ProxyAgent from undici and construct it with the line's HTTP endpoint URL including credentials.
- Pass the agent as the dispatcher option to fetch, or set it as the global dispatcher.
- Set a signal with a timeout on each request.
- Fetch an IP echo and compare with ip from GET /proxy/status.
- For SOCKS5, run xray locally from the VLESS link and point a SOCKS agent at 127.0.0.1.
- Rotate with a GET on the line's rotation_link from the same script and wait for the change.
- Keep the API key in an environment variable, never in the repository.
Playwright
Browser automationTakes the proxy at launch or per context with server, username and password as separate fields. Use the HTTP endpoint; Chromium does not support authenticated SOCKS5. One context per line isolates cookies and lets one process drive several metros.
- Launch with proxy={server: 'http://HOST:PORT', username, password}; do not embed credentials in the server string.
- Create one context per line if running several lines.
- Navigate to an IP echo first and assert the address equals ip from GET /proxy/status.
- Disable or route WebRTC through the proxy with a launch flag or context setting.
- Close the context before rotating; reopen after the new address is confirmed.
- For SOCKS semantics, point Playwright at a local xray SOCKS port with no auth.
- Attach to a profile browser over CDP when fingerprint matters.
Puppeteer
Browser automationPass --proxy-server with the line's HTTP endpoint as a launch argument, then call page.authenticate with the username and password; without that call every request returns 407 and the page looks blank.
- Launch with args ['--proxy-server=http://HOST:PORT'].
- Call page.authenticate({username, password}) on each new page before navigation.
- Load an IP echo and compare with ip from GET /proxy/status.
- Set navigation timeouts; a rotation mid-session resets connections.
- Rotate only between sessions.
- puppeteer.connect to a profile browser's websocket when fingerprint matters.
- Avoid Firefox builds for authenticated proxies in headless runs.
Selenium
Browser automationChrome with --proxy-server at launch and credentials supplied by a small extension or, more reliably, by a local forwarder that holds them. The local xray gateway built from the line's VLESS link is the dependable route across driver versions.
- Run xray locally with the VLESS parameters; expose 127.0.0.1:1080 (SOCKS) and 1081 (HTTP) without auth.
- Add --proxy-server=http://127.0.0.1:1081 to Chrome options.
- Open an IP echo and compare with ip from GET /proxy/status.
- Set page load timeouts.
- After a metro move, read vless_link again and restart xray; the host and ports can change.
- Credential-injecting extensions break between Chrome versions; the forwarder does not.
- One xray outbound per line, one local port pair per line.
curl
Command lineThe fastest check that a line works. One command through the HTTP endpoint, one through SOCKS5 with socks5h, both should print a carrier address. Also the simplest way to call the rotation link from a shell or cron.
- curl -x http://USER:PASS@HOST:PORT https://api.ipify.org
- curl -x socks5h://USER:PASS@HOST:SOCKSPORT https://api.ipify.org
- Use -U 'USER:PASS' if the password contains reserved characters.
- curl -fsS "$ROTATE_URL" to rotate from cron.
- Add the -w flag with a time_total format to time requests through the line.
- 407 means bad credentials; connection refused means wrong host or port.
- A timeout followed by success usually means you caught a rotation.
Postman
API testingSet the line as a custom proxy in Postman settings or per request and send your API calls as a US mobile client. Useful for checking what your own backend returns to a carrier address before writing the automated test.
- Settings, Proxy: add a custom proxy with the line's HTTP host and port.
- Enter the username and password in the proxy auth fields.
- Send a request to an IP echo endpoint and compare with ip from GET /proxy/status.
- Run your collection; inspect responses for region-dependent differences.
- Disable the proxy when you are done so other collections are not routed through the line.
- Postman proxies HTTP(S) only; for SOCKS use a local xray HTTP port instead.
- Save the proxy as an environment for quick switching between lines.
Scrapy
Crawling frameworkSet the proxy per request in request.meta or through a downloader middleware that reads the line's endpoint from the API. Rotate between batches by calling the rotation link from a spider middleware or an extension, never inside a batch.
- Store the line's HTTP endpoint with credentials in settings or read it from the API at spider start.
- Set request.meta['proxy'] in a downloader middleware for every request.
- Confirm the exit IP in a first request to an echo endpoint.
- Rotate between batches with a GET on the rotation link; pause until the address changes.
- Keep concurrency modest; the line is one device's bandwidth.
- Respect robots and terms; the line is a vantage point, not a licence.
- Log the exit IP with each item for later analysis.
xray-core and Hiddify
VLESS tunnel clientsxray-core on a server turns the line's VLESS link into local SOCKS5 and HTTP ports with no authentication, the cleanest way to feed browsers and scripts. Hiddify imports the same link on Android, Windows, Mac and Linux for a whole-device tunnel.
- Copy the vless:// link from the line's page in the dashboard, or read vless_link from GET /proxies/my.
- Server: write an xray config with a VLESS outbound from the link's parameters and local socks/http inbounds on 127.0.0.1.
- Enable the xray service; verify with curl through 127.0.0.1:1080.
- Desktop or phone: import the link into Hiddify and switch the tunnel on.
- Rotate the line as usual; the tunnel resumes on the new address.
- Keep the config file mode 600; the UUID is a credential.
- One outbound per line, one local port pair per line, routing by inbound tag.
Proxifier
Whole-system routing, Windows and MacRoutes selected applications through the line at the system level, for tools with no proxy setting of their own. Supports HTTP and SOCKS5 with authentication and per-application rules.
- Add a proxy server with the line's SOCKS5 host and port and enable authentication.
- Enable name resolution through the proxy.
- Create a rule routing the application you need through that proxy.
- Open an IP echo in that application and compare with ip from GET /proxy/status.
- Disable the rule when the test ends.
- Route only what you need; the line is one device's bandwidth.
- Prefer SOCKS5 here so UDP-using apps work.
Rules that apply to every tool
Use the HTTP endpoint for browsers and HTTP clients, the SOCKS5 endpoint when traffic is not HTTP or you want DNS resolved on the carrier side, and the VLESS link when you need a local unauthenticated port or an encrypted tunnel. Both proxy ports share the line's exit IP. Read host, http_port, socket_port and authentication_user from GET /proxies/my rather than typing them; a login change or a free move to another metro, which can change the host and ports, then needs no manual edit.
Before trusting any configuration, fetch an IP echo through it and compare with ip from GET /proxy/status, then check the ASN is AT&T (AS20057), T-Mobile (AS21928) or Verizon (AS22394 or AS6167). Rotate only between sessions, by a GET on the line's rotation_link, and confirm the new address before continuing.
Why a profile browser first
A proxy fixes the address; it does not fix the browser. Headless Chromium with automation flags on a perfect carrier address still reads as automation. Undetectable.io and GoLogin give each profile a consistent fingerprint, store its cookies, and accept the line as that profile's proxy, so the address and the fingerprint tell the same story. Both expose local APIs that Playwright or Puppeteer can attach to, covered in our articles. Undetectable.io is our first recommendation, GoLogin the second.
Where the traps are
Credentials embedded in the proxy URL break on reserved characters; pass them separately or percent-encode. Chromium ignores authenticated SOCKS5; use HTTP or a local xray port. DNS leaks come from socks5 instead of socks5h. WebRTC bypasses the proxy unless the browser is told otherwise. Missing timeouts hang a client during a rotation. Each tool entry below points at the trap that applies to it.
Integration questions
Which tool for a first check?
curl. Two commands, one per endpoint, both should print a carrier address whose ASN belongs to AT&T, T-Mobile or Verizon.
Which tool when the target cares about the browser?
Undetectable.io, then GoLogin. A consistent fingerprint plus the line's address; attach Playwright or Puppeteer through their local APIs.
How do I give a headless browser SOCKS5?
Run xray locally from the VLESS link and point the browser at the unauthenticated 127.0.0.1 port. Chromium does not support authenticated SOCKS5.
Can a tool read the proxy settings from your API?
Yes. GET /proxies/my returns host, http_port, socket_port, authentication_user and rotation_link per line. Scripts should read them at start-up rather than hard-code them.
