设备
模拟器代理 IP:每个多开窗口独立 IP
在 Macro Automation Studio 中为每个模拟器实例或云设备绑定一个 HTTP、HTTPS 或 SOCKS5 代理,测试出口 IP,并在 Webhook 中读回它。
- Windows
- Mac
- 模拟器
- 云手机
- Studio
- API
本页目录
给每个模拟器实例或云设备配一个模拟器代理 IP,每台设备就有了自己的网络身份。Macro Automation Studio(MAS)把你的代理存在账户里,为每台设备绑定一个代理,并把这台设备的流量路由过去:模拟器上用本地中继,云设备上用设备网络内部的透明代理。这一页介绍代理类型、两种添加方式、绑定、测试和限制。
开始之前
- 一个可用的代理:MAS 集成的住宅代理网关的账户,或者其他任意提供商的端点。
- 设备已在某个设备组中。代理绑定到设备,不是组。
- 已安装 MAS 并用有效的套餐登录。
代理类型
MAS 接受 http、https 和 socks5 代理,带或不带用户名和密码都可以。IP 白名单授权的代理把凭据留空即可。
在代理页有两种添加代理的方式:
- 网关账户(第一个标签页):输入一次网关账户的登录名和密码。这只添加一个条目,而你绑定它的每台设备都会从网关获得自己的固定 IP。你可以选择国家(可选),把协议设为 HTTP 或 SOCKS5,并打开高级定向设定州、城市、邮编或 ASN。更细的定向需要指定国家,并且提供商会按更高的费率计费,表单在你使用前会说明。
- 其他提供商:输入标签、协议、主机 / IP、端口以及可选的用户名和密码,或者在粘贴代理(每行一个)下按以下任意格式一次粘贴多个代理,然后点击导入并测试:
host:port
host:port:user:pass
scheme://user:pass@host:port点击添加并测试。MAS 加密存储凭据,然后立即测试代理。
测试代理
代理池表格列出每个代理及其状态:可用、失效或未检测。测试通过代理访问一个 IP 回显服务,记录出口 IP、出口国家和延迟;全部测试对整个池执行同样的操作。出口 / 地区列把你要求的(want:)和测试观察到的(got:)并排显示,因为网关的出口可能不在你要求的国家。网关代理的测试不带会话,所以它的测试出口是轮换的。
流量列是过去 30 天 MAS 通过这个代理路由的流量,由 MAS 自己的中继测量。你的提供商的计费数字可能不同。
为每个模拟器实例或云设备绑定一个代理
每台设备一个代理。绑定第二个会替换第一个,对话框会提醒你:“This device already has a proxy. Attaching will replace it.”
从代理页:
- 在某个代理上点击绑定。
- 选择模拟器设备。已有代理的设备会标注 “has a proxy”。
- 选择会话行为:固定,把一个 IP 固定给这台设备;或轮换,每个请求一个新 IP。
- 点击绑定。
从设备组中的设备卡片:打开高级设置,在代理下拉框中选择代理。卡片以固定模式绑定它。无代理移除分配。
每个固定分配都有自己的会话 ID,正是它把一个网关账户变成每台设备各不相同的出口 IP。对于其他提供商的普通代理,出口 IP 就是那个端点给的;会话设置不会改变它。
当前绑定表格列出每台设备及其代理和会话。应用信息显示解析后的连接细节,包括按设备生成的用户名,可在 MAS 之外使用。
SOCKS5 或 HTTP 代理在安卓模拟器上如何工作
安卓的全局代理设置没有用户名和密码字段,而网关的用户名正是定向和会话 ID 所在的地方。所以 MAS 在每次运行时在这台电脑上运行一个小型中继:
- 运行开始时,MAS 查找设备的代理,并启动一个绑定到
127.0.0.1空闲端口的中继。中继在出站时附加凭据,对设备说 HTTP,对上游说 HTTP、HTTPS 或 SOCKS5,所以 SOCKS5 网关也能用于本身不支持 SOCKS5 的模拟器。 - MAS 通过中继发送一个请求,证明链路可用,并读回出口 IP、国家和城市。凭据错误或地区不可用会在这里失败,也就是在宏启动之前。
- adb 连接后,MAS 运行
adb reverse让模拟器自己的 localhost 能到达中继,然后把设备的全局 HTTP 代理设为127.0.0.1:<relay port>。每次重连都会重复这一步,因为重连会丢掉反向映射。 - 运行结束时,MAS 清除代理设置,移除反向映射,关闭中继。
设备卡片会叙述每一步:检查后显示代理就绪,应用后显示带出口 IP 的代理已启用,运行后显示代理已关闭,失败时显示带原因的代理失败。中继只监听回环地址,所以你网络上的其他设备无法使用它。
在云设备上如何工作
在云设备上,MAS 完全不使用安卓的设置。设备启动时,主机在设备的网络命名空间内启动一个透明代理,并把每个出站 TCP 连接重定向过去。每个连接都通过你的上游代理、用你的凭据重新建立,所以无论应用是否遵守代理设置,设备的全部流量都从代理的 IP 出口。云端代理用 HTTP CONNECT 与上游通信,所以请给云设备一个 HTTP 或 HTTPS 代理。
- 代理在设备的整个生命周期内生效,而不是按运行。绑定或更换后,停止再启动设备;卡片会显示 “Applies when the device next starts”。
- 设备运行时,卡片显示带出口 IP 的代理,每次运行的日志开头是 “Proxy active, traffic routed through
”。 - 如果代理无法应用,设备不会以无代理状态启动。它会进入错误并提示 “proxy setup failed, turn the device off and on to retry”。
- 在设备已经运行时绑定的代理会在之后的轮询中应用,无需重启。
Webhook 和运行历史中的出口 IP
当一次运行启用了代理时,这次运行的 Webhook 事件会在 data 中携带 proxy_exit_ip 和 proxy_country,与 device_name、device_port 和 group_id 并列。同样的值也和运行一起存储,所以你之后可以查看某次运行的流量从哪里出口。参见 Webhook。
限制
- 每台设备一个代理;没有代理的设备直接连接。
- 协议:
http、https、socks5。端口 1 到 65535。 - 模拟器按运行应用代理;云设备按设备启动应用代理,并且需要 HTTP 或 HTTPS 上游。
- 网关定向:要么指定国家,要么排除国家,不能同时;州、城市、邮编和 ASN 需要指定国家。
- 流量数字由 MAS 测量,不是你的提供商账单。
供 API 密钥使用的代理路由
每个代理路由都接受 API 密钥:/api/proxy 和 /api/proxy/{id} 上的 GET、POST 和 PUT,POST /api/proxy/import,POST /api/proxy/{id}/validate,/api/proxy/assignments 下的分配路由及 /api/proxy/assignments/{id}/connection-info,查询设备所绑定代理的 GET /api/proxy/devices/{device_id},以及 GET /api/proxy/usage。用 GET /api/emulator/devices 查找设备 ID。参见 REST API。
故障排查
设备卡片显示代理失败
消息会指出是哪一步。“proxy did not respond, check credentials or targeting” 表示上游拒绝了检查:登录信息错误、套餐过期,或者网关在该国家没有 IP。在代理页运行测试查看提供商的回复。“could not expose the proxy relay to the device (adb reverse)” 或 “could not set the device proxy” 表示 adb 在连接和设置之间丢失了模拟器;参见 ADB 故障排查,然后重新启动运行。
状态显示失效
测试无法通过代理访问互联网。检查主机、端口和协议,然后是凭据,如果是 IP 白名单授权的代理,确认它允许这台电脑的 IP。修复后再次测试;成功时延迟和出口 IP 会更新。
云设备显示 proxy setup failed
设备主机在启动时无法应用代理。确认代理是可用的、是 HTTP 或 HTTPS 而不是 SOCKS5,然后点击停止,等待,再启动。要在没有代理的情况下启动设备,先把它的代理设为无代理。
下一步
相关页面
谢谢。如果有哪里不对,请在 Discord 告诉我们。
有疑问? 在 Discord 提问