如何设置移动代理
您的服务提供商会向您提供四个数值。本指南将介绍每个数值的含义、它们的三种表示格式、不同工具对格式的具体要求、如何进行身份验证,以及在基于这些数值进行开发之前,如何验证代理是否正在转发您的流量。
- 只需四项参数,无需安装 — 主机、端口、用户名和密码可直接输入到您正在使用的工具中。
- 三种书写方式 —— 工具要求的格式是导致正确凭据被拒绝的最常见原因。
- 两种身份验证方式 —— 凭据随请求一并发送,或者将您本人的 IP 地址加入白名单,则完全无需发送登录信息。
- 只需一次验证即可确定 — 在进行任何后续操作之前,请先输出你的出口IP地址,并与你的真实IP地址进行比对。
一个普通的 HTTP(S) 和 SOCKS5 端点——不提供供应商客户端或 SDK。
用户名和密码,或者将您自己的地址加入白名单,则无需登录。
您的服务提供商为您提供什么,以及各项内容的含义
购买移动代理并不会提供一个需要安装的应用程序。它只会提供四个参数,而任何能够使用代理的软件都已知晓如何处理这些参数。你的浏览器知道,你的命令行界面知道,Python 也知道。设置代理的工作,完全就是将这四个参数以正确的格式填入正确的位置。
这四个参数分别是代理的地址、它监听的端口,以及用于证明连接属于你而非他人的用户名和密码。除此之外无需其他任何内容,任何一开头就要求你安装客户端的指南,所描述的都只是为了方便操作的附加步骤,而非必要条件。
| 字段 | 它到底是什么 | 人们常犯的错误 |
|---|---|---|
| 主持人 | 代理服务器的地址——主机名或 IP 地址。这并非您的流量将从中发出的 IP 地址。 | 将其与出口IP混淆,随后报告称代理显示的国家不正确。 |
| 港口 | 应与该主机上的哪个服务进行通信。HTTP 和 SOCKS5 是同一代理上的两个不同端口。 | 将 HTTP 凭据发送到 SOCKS5 端口。该错误的表现与密码错误完全相同。 |
| 用户名 | 将该连接标识为属于您的账户。在 PXM2 上,HTTP 和 SOCKS5 各自拥有独立的端口。 | 在另一个端口上重复使用某个协议的用户名。 |
| 密码 | 该对中的隐藏部分,除非您改用 IP 白名单,否则会随每个请求一并发送。 | 将密码嵌入 URL 时必须进行转义的特殊字符。 |
“端口分离”这一细节比其他任何细节都更容易让用户感到困惑。PXM2 代理会暴露一个 HTTP(S) 端口和一个 SOCKS5 端口,每个端口都有各自的用户名和密码。 在某个端口上完全有效的凭据,在另一个端口上会被拒绝,且返回的错误是通用的身份验证失败信息——因此用户会误以为是密码错误,而非端口错误。
在进行任何配置之前,还有一点需要区分。您连接到的主机保持不变;而当代理轮换时,网站所看到的 IP 地址会发生变化。这两个地址是不同的,人们之所以偶尔会认为某个国家的代理显示的是另一个国家的地址,正是因为将它们混淆了。
相同的凭证,三种写法
以下是指南中常被忽略的部分,这也是正确的凭据被拒绝的最常见原因。这四个值会根据使用它们的对象的不同,以三种不同的格式呈现,且这些格式不可互换。 有些工具需要一个字符串;有些需要一个 URL;还有些需要四个独立的字段,且一旦遇到包含冒号的内容就会报错。
1. Colon-delimited string proxy.example.net:8000:user123:s3cret 2. Proxy URL http://user123:[email protected]:8000 3. Separate fields Host: proxy.example.net Port: 8000 User: user123 Pass: s3cret
| 格式 | 需要该参数的工具 | 如果用错了会怎么样 |
|---|---|---|
| 以冒号分隔的字符串 | 反检测浏览器、代理管理器、批量导入字段,以及大多数支持代理列表的机器人 | 将其粘贴到 URL 字段中时,系统会将其视为主机名,导致在尝试身份验证之前连接就已失败。 |
| 代理 URL | 环境变量、命令行工具、HTTP 客户端库、容器运行时 | 将该字符串粘贴到主机字段中后,整个字符串会被视为主机名,导致 DNS 解析失败。 |
| 分隔字段 | 操作系统的网络设置、浏览器的代理对话框、大多数图形化应用程序 | 主机框中是一个以冒号分隔的字符串,而端口框留空——这是一种非常常见的粘贴错误。 |
当密码中包含在 URL 中具有特殊含义的字符(如 @ 符号、冒号、斜杠、问号)时,URL 表单需要对其进行百分比编码,否则 URL 会被解析成你未预期的结果。 未转义的“@”符号是最严重的问题,因为解析器会将它前面的所有内容都视为凭据,而将它后面的所有内容都视为主机名,从而产生一次看似正确但完全错误的连接尝试。而以冒号分隔和独立字段的形式则不存在此类问题,因为它们不会被解析。
Password: pa@ss:word Wrong: http://user123:pa@ss:[email protected]:8000 Right: http://user123:pa%40ss%[email protected]:8000 Python: from urllib.parse import quote quote("pa@ss:word", safe="") -> 'pa%40ss%3Aword'
用户名和密码,或IP白名单
代理有两种方式来识别连接是否属于你,你需要根据具体情况选择其中一种,而不是一劳永逸地设定一次。 在凭据认证中,用户名和密码会随每次请求一同发送。而在 IP 白名单认证中,您只需向服务商注册自己的公网地址,无需发送任何登录信息——代理会识别请求的来源并放行该请求。
从绝对意义上讲,这两种方法的安全性并无高下之分。凭证能在网络变更后依然有效;白名单则能防止因意外截图而泄露。大多数人最终会同时采用这两种方法——在服务器上使用白名单,而在所有移动设备上使用凭证。
验证是否正常工作,如果无法正常工作,请查看错误信息
在配置其他任何内容之前,请先验证代理是否能传输流量。向一个会回显您公共IP地址的服务发送一次请求,一秒钟内即可确认,而跳过这一步意味着后续出现的每个问题都可能有两个原因,而不是一个。
curl -x http://user123:[email protected]:8000 https://api.ipify.org curl -x socks5h://user123:[email protected]:1080 https://api.ipify.org curl https://api.ipify.org # your real address, for comparison
如果这两个地址不同,且经过代理的地址属于您购买的运营商和国家/地区,那么设置就完成了——接下来的步骤只是配置各个应用程序。如果它们完全相同,则说明代理根本没有被使用,这种情况比代理无法正常工作要常见得多。 许多应用程序会默默忽略系统范围的代理设置,尤其是命令行工具,它们只读取自身的环境变量,而不会参考其他任何设置。
请注意第二行中使用的是 socks5h 方案,而不是 socks5。末尾的 h 表示 DNS 解析也会通过代理进行。如果没有这个 h,你的机器会在本地解析主机名,这会导致你访问的每个域名都被泄露到你自己的网络中,即使流量本身是通过代理传输的。
| 你所看到的 | 其含义 | 去哪里找 |
|---|---|---|
| 407 需要代理身份验证 | 代理服务器收到了该请求,但其中未包含有效的登录凭据。 | 先确定格式,再确定端口。在SOCKS5端口上进行有效的HTTP登录会返回此内容。 |
| 隧道连接失败 | 在建立 HTTPS 隧道的 CONNECT 阶段中,出现了相同的身份验证失败。 | 与 407 错误的原因相同——客户端只是在不同的阶段报告了该错误。 |
| 403 禁止 | 身份验证成功。后续某个环节拒绝了该请求。 | 是目标站点,而不是代理服务器。403 错误意味着你已经成功连接。 |
| 连接超时 | 该主机和端口没有响应。 | 主机名中有拼写错误、端口号错误,或者本地防火墙阻断了出站流量。 |
| 返回的是您自己的 IP 地址 | 该请求从未经过代理服务器。 | 该应用程序忽略了代理设置。请在工具内部进行配置。 |
对于顽固的407错误,一般原则是将正在测试的两部分分开处理。首先,使用你信任的工具,在确切的主机、端口和协议下,验证端点是否能正常工作。然后,验证你的应用程序是否以该工具预期的格式发送了凭据。如果同时调试这两部分,原本只需五分钟就能解决的问题,可能会拖上一个下午。
如果您不想在终端中执行此操作,那么 免费的 PXM2 代理检测工具 在浏览器中运行相同的测试,并额外报告检测到的代理类型和出口国家。
获取一个移动代理以进行设置
PXM2实时节点位置——选择您需要出口IP的国家,几分钟内即可获得本指南中介绍的四组登录凭据:
法国
印度
新加坡
常见问题解答
如何设置移动代理?
请将服务商提供的主机、端口、用户名和密码,输入到工具中要求填写代理的位置——无论是系统网络设置、浏览器扩展、环境变量,还是代码中的代理字段。然后向一个能返回您公共IP的服务发送一次请求,并确认其返回的是运营商地址,而非您自己的地址。 整个过程中无需安装任何软件。
“主机:端口:用户名:密码”是什么意思?
这是一种简洁的写法,用于表示识别代理的四个值:连接地址、连接端口,以及用于证明连接属于您的登录凭据。 冒号仅作为分隔符。这四个值同样常被写成一个 URL 形式:http://username:password@host:port,但许多应用程序却希望用户将它们分别输入到四个独立的字段中。
为什么会出现“407 代理身份验证所需”的错误?
代理服务器已收到您的请求,但请求中未包含可用的凭据。通常情况下,登录凭据是以客户端无法解析的格式粘贴的——例如,在要求输入 URL 的字段中,直接粘贴了“主机:端口:用户名:密码”这样的字符串——或者凭据被发送到了错误的端口。 请先检查协议:HTTP 和 SOCKS5 使用不同的端口,且需要不同的凭据组合,因此有效的 HTTP 登录在 SOCKS5 端口上会失败,并返回此错误。
我应该使用IP白名单还是用户名和密码?
如果您的IP地址发生变化(例如在家庭网络、移动数据网络或使用移动笔记本电脑时),请使用凭据登录。 当您从具有固定地址的服务器连接,或使用无法合理保存登录信息的工具连接时,请使用白名单机制。白名单还能避免密码泄露到 shell 历史记录和进程列表中,这在共享计算机上尤为重要。
如何查看我的代理正在使用哪个IP地址?
通过代理向任何能返回您公共地址的服务发送一个请求,并查看响应结果。如果响应显示的地址与您的真实 IP 地址一致,则说明代理根本未被使用——这种情况比代理配置错误要常见得多,因为许多系统的代理设置会被单个应用程序默默忽略。 免费的 PXM2 代理检测工具可执行此测试,并报告检测到的代理类型和出口国家。
相关移动代理指南
一旦连接成功,下一步操作将取决于您正在配置的对象——是虚拟机、运行时环境,还是代理随时间变化的行为方式。