快速开始
在一分钟内运行您的第一个代理请求。您需要:账户中的活跃代理和来自控制面板的API令牌。
- 在mobileproxy.space上注册。
- 购买代理——在购买页面选择国家和运营商。
- 登录后从API页面复制您的API令牌。
- 发起您的第一个请求——在下方选择语言。
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))身份验证
所有API调用都使用个人Bearer令牌进行身份验证。令牌绑定到您的账户,而不是单个代理。
在哪里获取您的令牌
登录控制面板并打开API。令牌字段在页面顶部。您可以随时轮换令牌——旧令牌会立即失效。
发送令牌
Authorization: Bearer YOUR_API_TOKENIP白名单(可选)
为提高安全性,您可以将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_HOST、PROXY_PORT、LOGIN、PASSWORD替换为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/ipimport { 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()使用场景
开发者实际使用移动代理构建的内容。每张卡片都是典型模式。
网页抓取
按请求或按会话轮换IP,与浏览器指纹工具结合使用。
浏览器自动化
Playwright / Selenium每个worker一个代理,sticky会话用于有状态流程。
验证与QA
从真实运营商网络检查地理定向内容、价格、A/B变体。
广告/SERP检查
SERP抓取、广告投放验证、移动特定创意检查。
SMM和多账户
每个账户一个移动代理——运营商级IP配置最像真实用户。
数据管道
后台workers在轮换池后运行,轮换时重试,结构化错误日志记录。
API 参考
完整的REST参考——每个endpoint、参数和响应格式——都在专门的API页面。登录后会自动用您的令牌进行个性化。
完整的REST API文档
约15个endpoint:代理管理、IP轮换、黑名单、地理/运营商查找、余额。
最常用的endpoints
GET /api.html?command=get_my_proxyGET 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、指纹还是目标的问题。