代理怎么用:四个参数和你的第一条请求
如何使用代理,从零开始:主机、端口、用户名和密码在哪里找,用 curl 和 Python 发出第一条请求,以及第一天最常见的三个错误。
代理怎么用?把四个值交给你的工具就行:主机、端口、用户名和密码。工具把请求发到这个主机和端口,用用户名和密码登录,代理再把请求转发出去,于是网站看到的是代理的 IP 地址,而不是你的。其余的一切,都是在这四个值上面加的细节。
这篇从一个新注册的账号讲起,一直到一条你能证明确实走了代理的请求,最后告诉你自己用的工具该看哪篇配置教程。
四个值是什么,在哪里找
每个 HTTP 代理连接都需要同样的四样东西:
- 主机(Host)。 你的工具要连接的代理服务器地址。
- 端口(Port)。 连接到那台服务器上的哪个端口号。
- 用户名和密码。 代理靠它们知道这是你的流量、该从哪个余额里扣费。
在我们的控制台里,它们在服务页面上。你买的每项服务都在那里列出自己的主机、端口、用户名和密码,可以直接复制。我们没有一个人人共用的网关地址,所以本站所有代码示例都用 HOST、PORT、USERNAME 和 PASSWORD 代替你自己的值。
不同产品有几处不一样:
- 住宅代理服务只有一组值,每条请求换一个 IP 还是保持一段时间,由控制台里的设置决定(下文会讲)。
- ISP 代理和数据中心代理服务的页面会逐个列出你租的 IP,各自带端口和登录信息。每一个都是一个独立的代理。
多数工具要求把四个值拼成一个代理 URL:
http://USERNAME:PASSWORD@HOST:PORT
开头的 http:// 指的是你的工具和代理之间用的协议。即使你访问的网站是 https://,这里也保持 http://。访问 HTTPS 网站时,工具会请代理打开一条 CONNECT 隧道,加密连接从头到尾穿过这条隧道。SOCKS5 同样可用:住宅代理的端口两种都接受,ISP 和数据中心代理在控制台里切换。支持它的工具在这个位置写 socks5h://;HTTP 代理和 SOCKS5 的区别说明了什么时候用哪种。
如何使用代理发出第一条请求
先做最小的测试:问一个 IP 回显服务它看到的是哪个地址。api.ipify.org 只返回你的公网 IP,纯文本,别的什么都没有。
用 curl
先不走代理,确认你自己的地址:
curl -s https://api.ipify.org
再走代理:
curl -s -x http://USERNAME:PASSWORD@HOST:PORT https://api.ipify.org
两个数字应该不一样。如果你的密码里有 @、: 或 # 这类符号,就把登录信息单独传进去,免得 curl 从 URL 里解析出错:
curl -s -x http://HOST:PORT -U "USERNAME:PASSWORD" https://api.ipify.org
其余用法,比如环境变量、调试用的详细输出和配置文件,见 curl 配置教程。
用 Python
requests 库接受一个字典,把每种协议映射到一个代理 URL。两项都指向同一个 http:// 代理:
import requests
PROXY = "http://USERNAME:PASSWORD@HOST:PORT"
proxies = {"http": PROXY, "https": PROXY}
mine = requests.get("https://api.ipify.org", timeout=30).text
via_proxy = requests.get("https://api.ipify.org", proxies=proxies, timeout=30).text
print("my IP: ", mine)
print("proxy exit:", via_proxy)
print("changed" if mine != via_proxy else "NOT changed: check the proxies argument")
如果密码里有特殊字符,拼 URL 之前先用 urllib.parse.quote(password, safe="") 编码。会话、重试和异步写法见 Python requests 配置教程。
怎么确认 IP 换了
上面的脚本已经比较了两个地址。第一天还值得花一分钟做三件事:
- 多跑几次。 住宅服务设成随机 IP 时,每次运行都应该打印一个不同的出口 IP。设成粘性 IP,或者用 ISP、数据中心 IP 时,每次都应该是同一个。
- 查一下 IP 归谁。 回显只告诉你地址,不告诉你它属于哪种网络。自己查 IP 类型讲了怎么用免费工具查出背后的网络。
- 看一眼用量日志。 你刚才的请求会出现在控制台里,带着主机、状态码和字节数。在真正的任务跑起来之前,先拿自己的测试请求学会读用量表,是个好办法。
住宅、ISP 还是数据中心?
买能用的里面最便宜的那个:网站本身打得开、只是想换个地区,就租数据中心 IP;遇到验证码、空白页或一上来就被封,就试住宅代理。登录需要连续几周用同一个地址,ISP IP 能一直替你保留;住宅还是数据中心把这个选择讲得更细。
轮换还是粘性?
轮换是每条请求换一个出口 IP,把大任务分散到很多地址上,多数抓取要的就是这个。粘性是在一段时间内保持同一个 IP,网站把登录或购物车和你的地址绑在一起时就需要它。在我们的住宅线路上,你在控制台里选随机 IP 或粘性 IP;选粘性时,控制台会生成一个带会话 ID 的凭据,按显示的样子整串复制即可。ISP 和数据中心 IP 是静态的,天生就是粘性的,想轮换就自己在列表里循环。轮换代理和粘性代理讲了各自适合什么场景。
下一步:配置你自己的工具
回显测试通过后,把同样的四个值搬到你真正用的工具里。下面每篇教程讲一种工具,一步一步来:
- curl:快速测试和 shell 脚本
- Python requests:大多数爬虫
- 浏览器:Chrome、Firefox 等
- Windows 和 macOS:系统级设置
- 安卓和 iPhone:手机
完整列表,包括 Scrapy、Playwright、Puppeteer 和 Node.js,见配置教程页。
第一天最常遇到的三个错误
407 Proxy Authentication Required
代理回应了,但不接受你的登录。几乎总是密码输错或被截断、复制时多了个空格,或者某个符号在 URL 里需要编码。从服务页面重新复制一遍,再试试上面 curl 的 -U 写法。修复 407 错误逐条讲了我们见过的所有原因。
超时
在规定时间内什么都没回来。如果每条请求都超时,先怀疑你到代理的连接:主机或端口写错、防火墙或公司网络挡了出站端口,或者服务已经到期。如果只是一部分超时,那是出口或目标站慢;住宅出口在别人家的宽带上,花的时间可能超过你默认的超时设置。代理超时错误教你区分这两种情况。
被封:验证码或 403
代理工作正常,是网站拒绝了你。这和目标站的防护有关,和你的配置无关。放慢速度,检查请求头,再想想这个站是不是需要住宅 IP。爬虫为什么开始被封里有一份检查清单。
在我们的用量表上,连接失败(超时、连接重置,以及我们自己网关返回的错误,比如 407 或 502)按零计费,照样显示并标为免费,所以第一次配置时连不上、登录不了,都不会吃掉你的余额。验证码或 403 页面是网站发回来的响应,它的字节算流量。细节见实话实说页的计量部分。
快速问答
用代理需要装专门的软件吗? 不需要。多数能发网络请求的工具都接受代理 URL:curl、Python、Node、浏览器,以及 Windows、macOS、安卓和 iPhone 的系统设置。
为什么 https:// 网站要用 http:// 代理地址? 这个协议描述的是你的工具怎么和代理通信。HTTPS 流量在这条连接里走 CONNECT 隧道,你和网站之间始终是加密的。
每次的 IP 都一样吗? 看产品。住宅设成随机 IP 时每条请求都换;粘性 IP、ISP 和数据中心则保持同一个地址。
用了代理就匿名了吗? 代理改变的是网站看到的 IP 地址。Cookie、登录状态和浏览器指纹仍然可能认出你,所以把代理当成换了一个地址就好,别指望更多。
先小额充值,跑一遍回显测试,再一步步往上加;当前价格见价格页。如果哪一步和文中说的不一样,把命令和报错贴到 Discord,很快会有人帮你看出来。