文档

开发者文档

mobileproxy.space移动代理网络的集成指南、可运行示例和REST API参考 — Python、Node.js、Go、cURL、Playwright、Selenium。

快速开始

在一分钟内运行您的第一个代理请求。您需要:账户中的活跃代理和来自控制面板的API令牌。

  1. mobileproxy.space注册
  2. 购买代理——在购买页面选择国家和运营商。
  3. 登录后从API页面复制您的API令牌
  4. 发起您的第一个请求——在下方选择语言。
curl --request GET \ --url 'https://mobileproxy.space/api.html?command=get_my_proxy' \ --header 'Authorization: Bearer YOUR_API_TOKEN'
import requests r = requests.get( "https://mobileproxy.space/api.html", params={"command": "get_my_proxy"}, headers={"Authorization": "Bearer YOUR_API_TOKEN"}, timeout=10, ) print(r.json())
const res = await fetch( "https://mobileproxy.space/api.html?command=get_my_proxy", { headers: { Authorization: "Bearer YOUR_API_TOKEN" } } ); console.log(await res.json());
req, _ := http.NewRequest("GET", "https://mobileproxy.space/api.html?command=get_my_proxy", nil) req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN") resp, _ := http.DefaultClient.Do(req) defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) fmt.Println(string(body))
速率限制:3次/秒 × N个活跃代理。相同请求冷却时间:3秒。超出时返回HTTP 429。

身份验证

所有API调用都使用个人Bearer令牌进行身份验证。令牌绑定到您的账户,而不是单个代理。

在哪里获取您的令牌

登录控制面板并打开API。令牌字段在页面顶部。您可以随时轮换令牌——旧令牌会立即失效。

发送令牌

Authorization: Bearer YOUR_API_TOKEN

IP白名单(可选)

为提高安全性,您可以将API调用限制到单个IP。在API页面的允许的IP设置。即使令牌有效,来自其他IP的请求也会被拒绝。

代理本身的身份验证

代理本身使用用户名/密码(默认)或IP授权。在控制面板中按代理设置。使用IP授权时,代理连接不发送凭据。

核心概念

移动运营商IP

网络中的每个代理都是连接到真实移动运营商(MTS、Beeline、T-Mobile、Vodafone等)的真实4G/5G调制解调器。目标网站看到的流量就像来自普通智能手机的蜂窝网络,而不是数据中心。

CGNAT — 为什么移动IP是"共享的"

移动运营商通过运营商级NAT(CGNAT)将数千名订户路由通过同一公共IP。封禁单个IP会阻止真实客户,因此反欺诈系统对移动IP比住宅或数据中心IP更宽容。这是移动代理具有更高信任分数的结构性原因。

轮换

通过触发调制解调器重新连接,按需更改外部IP:

  • 通过链接——请求唯一URL(changeip.host/?proxy_key=…)触发轮换。以JSON返回新IP。
  • 通过定时器——每N分钟自动轮换(每个代理可配置)。
  • 无轮换(sticky)——保持相同IP直到您请求更改。

Sticky会话

"Sticky"会话就是禁用了轮换(或长定时器)的代理。该代理上的所有请求在会话期间共享一个IP。适用于多步骤流程(登录→结账,跨会话的多页面解析)。

轮换期间的会话持久化

Cookies、localStorage和TLS会话存储在客户端,而不是代理上。轮换后,浏览器/库中的现有会话保留,只有源IP更改。

集成

最常见技术栈的即用片段。将PROXY_HOSTPROXY_PORTLOGINPASSWORD替换为get_my_proxy响应中的值。

import requests proxy = "http://LOGIN:PASSWORD@PROXY_HOST:PROXY_PORT" r = requests.get("https://httpbin.org/ip", proxies={"http": proxy, "https": proxy}, timeout=15) print(r.json())
import { HttpsProxyAgent } from "https-proxy-agent"; const agent = new HttpsProxyAgent("http://LOGIN:PASSWORD@PROXY_HOST:PROXY_PORT"); const res = await fetch("https://httpbin.org/ip", { agent }); console.log(await res.json());
proxyURL, _ := url.Parse("http://LOGIN:PASSWORD@PROXY_HOST:PROXY_PORT") client := &http.Client{Transport: &http.Transport{Proxy: http.ProxyURL(proxyURL)}} resp, _ := client.Get("https://httpbin.org/ip") defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) fmt.Println(string(body))
curl -x http://LOGIN:PASSWORD@PROXY_HOST:PROXY_PORT https://httpbin.org/ip # SOCKS5 curl --socks5 LOGIN:PASSWORD@PROXY_HOST:SOCKS_PORT https://httpbin.org/ip
import { chromium } from "playwright"; const browser = await chromium.launch({ proxy: { server: "http://PROXY_HOST:PROXY_PORT", username: "LOGIN", password: "PASSWORD", }, }); const page = await browser.newPage(); await page.goto("https://httpbin.org/ip"); console.log(await page.content()); await browser.close();
from seleniumwire import webdriver opts = {"proxy": { "http": "http://LOGIN:PASSWORD@PROXY_HOST:PROXY_PORT", "https": "http://LOGIN:PASSWORD@PROXY_HOST:PROXY_PORT", "no_proxy": "localhost,127.0.0.1", }} driver = webdriver.Chrome(seleniumwire_options=opts) driver.get("https://httpbin.org/ip") print(driver.page_source) driver.quit()
GitHub上的官方SDK和完整示例:Python · Node · PHP · OpenAPI规范

使用场景

开发者实际使用移动代理构建的内容。每张卡片都是典型模式。

网页抓取

按请求或按会话轮换IP,与浏览器指纹工具结合使用。

浏览器自动化

Playwright / Selenium每个worker一个代理,sticky会话用于有状态流程。

验证与QA

从真实运营商网络检查地理定向内容、价格、A/B变体。

广告/SERP检查

SERP抓取、广告投放验证、移动特定创意检查。

SMM和多账户

每个账户一个移动代理——运营商级IP配置最像真实用户。

数据管道

后台workers在轮换池后运行,轮换时重试,结构化错误日志记录。

API 参考

完整的REST参考——每个endpoint、参数和响应格式——都在专门的API页面。登录后会自动用您的令牌进行个性化。

完整的REST API文档

约15个endpoint:代理管理、IP轮换、黑名单、地理/运营商查找、余额。

打开API参考

最常用的endpoints

  • GET /api.html?command=get_my_proxy
  • GET CHANGEIP_HOST/?proxy_key=…
  • GET /api.html?command=proxy_ip&proxy_id=…
  • GET /api.html?command=change_equipment&…
  • GET /api.html?command=get_geo_operator_list

故障排除

开发者遇到的主要问题及标准解决方案。完整FAQ在FAQ页面

连接超时/拒绝

检查控制面板中代理是否激活,IP白名单是否与您机器的出口IP匹配,以及HTTP和SOCKS5使用的端口是否正确。

轮换返回相同的IP

运营商可能重新分配相同的地址——这在小池子上很正常。再次触发轮换,或用change_equipment切换运营商。

目标网站显示验证码

验证码与指纹相关,不仅仅是IP。将移动IP与移动User-Agent、移动viewport和一致的TLS配置文件配对。请参阅指纹生成器

会话意外过期

自动轮换在您的会话中触发。要么禁用定时器轮换,要么在轮换前捕获cookies/令牌。

地理不匹配/国家错误

移动运营商有时通过国外节点路由。用proxy_ip验证,必要时通过change_equipment重新路由。

API返回HTTP 429

您已达到速率限制。添加指数退避,缓存get_my_proxy响应,在支持的地方批量发送proxy_id列表。

最佳实践

重试策略

将每个代理请求包装在带抖动的重试中(3次尝试,500ms–3秒)。在429时指数退避。在连接错误时,重试前轮换。

会话管理

每个逻辑会话一个代理。按worker持久化cookies/localStorage。永远不要在轮换之间共享HTTP keep-alive池。

轮换间隔

对于抓取——按请求或每30–120秒轮换一次。对于账户工作——长sticky会话(数小时),仅在明确登出/错误时轮换。

浏览器一致性

将User-Agent与运营商匹配(4G→移动UA)。将时区和区域设置为代理所在地区。禁用WebRTC IP泄漏。

避免封禁

将请求速率保持在人类合理范围内。随机化请求时间。将移动IP与移动指纹配对,而不是桌面指纹。

可观测性

一起记录proxy_id、当前IP、响应代码和轮换事件。当出现问题时,您会知道是IP、指纹还是目标的问题。