什么是数据中心代理?含义、识别方式,以及什么时候够用
什么是数据中心代理(机房代理)?就是来自托管网络的服务器 IP。本文讲网站怎样识别它、为什么很多网站并不在意、共享和独享的区别,以及什么时候用它就够了。
什么是数据中心代理?它是一种代理,出口 IP 属于托管公司或云服务商,跑在数据中心的服务器上,也常被叫作机房代理。它快、便宜、稳定,网站查一次就能认出它是服务器。对很大一部分任务来说,这一点完全不要紧。
本文讲这个标签是什么意思、网站怎样识别数据中心 IP、为什么很多网站照样放行、共享和独享有什么区别,再给你一个简短的测试:在花钱买更贵的产品之前,先弄清数据中心代理对你的目标网站够不够用。
数据中心代理是什么意思:这个标签说了什么
每个公网 IP 地址都属于某个网络宣告的地址段,这个网络用一个 ASN 和一个机构名称来标识。“数据中心”的意思是,这个机构是托管公司或云服务商。地址所在的是机柜里的一台服务器,上行带宽充足,供电稳定。
你会碰到的三种标签里,它是最朴素的一种:
- 数据中心: 登记在托管网络名下,跑在服务器上。
- ISP: 登记在家庭宽带运营商名下,跑在服务器上。详见什么是 ISP 代理。
- 住宅: 登记在家庭宽带运营商名下,从一户人家的宽带出去。
数据中心 IP 不冒充别的东西,这个标签本身也没有任何见不得人的地方。要提防的是反过来的情况:数据中心地址被当成住宅地址卖给你。自己查 IP 类型讲了怎样在几分钟内识破。
在 ProxyPanda,数据中心代理是按 IP、按你选择的租期租用的静态 IP。下单时可以选国家、地区和城市(前提是库存带有这一层信息)。这里没有运营商可选,因为它的网络就是托管公司。
数据中心代理怎样处理一条请求
你的客户端连到代理的主机和端口,告诉它要去哪里。代理服务器去连接目标网站,网站看到的是服务器的地址,而不是你的。访问 https:// 网站时,客户端会建立一条 CONNECT 隧道,页面内容全程加密。
认证方式有两种,都显示在控制台里每个服务的页面上:
curl -s -x http://USERNAME:PASSWORD@HOST:PORT https://api.ipify.org; echo
curl -s -x http://HOST:PORT https://api.ipify.org; echo
第一行用用户名和密码。第二行要等你在控制台里把自己连接时用的 IP 加进服务的白名单之后才能用,那之后只要主机和端口就够了。两行每次都应该打印出同一个地址,因为这个 IP 在租期内是固定的。
数据中心代理会被识别出来吗?
会,而且成本很低。网站想知道访客是不是在服务器上,有好几种免费或便宜的信号。
- ASN 查询。 在公开数据库里查一次,就能拿到这个网络的所有者。如果是托管公司,答案就有了。
- 云服务商公布的地址段。 大型云服务商会公布自己的地址段,方便客户写防火墙规则。谁都能下载这些列表来比对。
- 商业 IP 情报。 付费数据库会给每个地址打上“托管”、“代理”和滥用历史等标记,反爬和机器人管理工具在每条请求上都会查。
- 反向 DNS。 很多服务器地址反查出来的主机名,要么带着托管公司的名字,要么一看就是机器名。
- 行为。 一个地址发出大量请求、每条请求的请求头一模一样,或者客户端指纹一看就是脚本。这些都不是数据中心 IP 独有的,但会让前四条更有分量。
不过识别只是第一步。认出一个服务器地址,和拒绝它,是两个不同的决定,很多网站只做到第一步。
为什么很多网站并不在意
封掉所有托管网络是有代价的,很多网站不愿意付这个代价。
- 公开 API、文档站和开放数据平台本来就面向服务器。 它们的用户就是从服务器上调用的。拒绝托管网络,等于把自己的客户挡在门外。
- 正当流量也来自数据中心。 在线监控、RSS 阅读器、聊天软件里的链接预览、公司 VPN 和云桌面,出口都是服务器地址。一刀切地封掉,会把网站想要的人也挡掉。
- 封禁要花功夫。 列表要更新,误封会变成客服工单。一个没有因为自动化访问吃亏的网站,没什么理由去折腾。
真正会筛掉托管网络的,是那些有东西要保护的网站:大型零售、机票酒店和票务、社交平台、搜索引擎。在那里你会看到 403、验证码、空白页、反复跳转,或者状态码是 200、内容却是“请验证你是真人”的页面。这就是该试住宅代理的信号。被封不一定是 IP 的问题,其他原因见爬虫为什么突然被封。
选之前先测一测你的目标网站
下面这段脚本通过一个数据中心 IP 发五十条请求,每条间隔三秒,统计有多少拿回了真实页面。把 URL 换成一个你有权抓取的公开页面。
import collections
import time
import requests
PROXY = "http://USERNAME:PASSWORD@HOST:PORT"
proxies = {"http": PROXY, "https": PROXY}
URL = "https://example.com/"
HEADERS = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}
BLOCK_WORDS = ("captcha", "verify you are human", "access denied", "unusual traffic")
tally = collections.Counter()
for _ in range(50):
try:
reply = requests.get(URL, proxies=proxies, headers=HEADERS, timeout=30)
page = reply.text.lower()
if reply.status_code == 200 and not any(word in page for word in BLOCK_WORDS):
tally["real page"] += 1
else:
tally[f"blocked ({reply.status_code})"] += 1
except requests.RequestException as error:
tally[type(error).__name__] += 1
time.sleep(3)
print(dict(tally))
如果几乎全都落在“real page”下面,说明数据中心代理对这个目标就够用了,到此为止即可。如果大部分被拦,再多租几个数据中心 IP 也不会改变结果,网站在筛的是整个网络,下一步见住宅代理还是数据中心代理。零星的超时是另一回事,见代理超时错误。
共享和独享数据中心代理
区别在于还有谁从你的地址发流量。
- 共享代理 同时由固定的少数几位客户共用。价格更低,用来做轻量的检查没有问题。代价在信誉上:如果另一位用户猛刷一个你也要访问的网站,网站可能会给这个地址限速或封禁,所有共用的人都受影响。
- 独享代理 在整个租期内只有你一个人用。网站怎么看这个地址,只取决于你自己的流量。当结果取决于这个 IP 的历史、地址要进白名单,或者要用它登录账号时,这一点就很重要。
在 ProxyPanda,档位在结账时选择,下单表单会写明你买的是哪一种。有些服务商还卖轮换型的数据中心 IP 池,每条请求换一个地址。我们的是按 IP 固定的;想把工作分摊到几个地址上,就多租几个,在代码里轮流使用,写法见用 Python 轮换代理。
数据中心代理适合做什么
- 以有节制的频率抓取公开页面。 文档、论坛、开放数据和公开 API,是遵守网站条款和 robots.txt 的网页抓取最常见的对象。
- 从别处看自己的网站。 以海外访客的视角查看本地化页面、币种、跳转和 Cookie 同意横幅,详见地区检查。
- 测试自家的服务。 从你的网络之外测试白名单、限流和地区规则。
- 练手。 这是最便宜的产品线,照着 Python requests 教程几行代码就能连上。
数据中心代理不适合做什么
- 筛查托管网络的网站。 网络层面的封禁,多加多少个数据中心 IP 都解决不了。
- 装成家庭用户。 一查就是服务器,它本来就是。
- 每条请求都换地址。 一个 IP 一个租期。需要轮换的话,用住宅代理的随机 IP,或者在自己的代码里轮流使用几个静态 IP。
- 忘了续费这件事。 租期会到期,续费按这条产品线的入门价收取,与首单达到哪个批量档位无关。两个价格都在价格页面上。
快问快答
数据中心代理会被识别出来吗? 会。它们的所有者是公开的,网站查一次就知道。很多网站查了之后照样放行。
数据中心代理不好吗? 不是。只要目标网站不筛托管网络,它就是合适的工具,而且最便宜。
数据中心代理和 VPN 是一回事吗? 不是。VPN 把一台设备的全部流量都送进隧道;代理只转发你交给它的请求。两者的比较见代理和 VPN 的区别。
数据中心代理能选国家吗? 在 ProxyPanda 可以,下单时还能选地区和城市。
别的客户会用我的数据中心 IP 吗? 只有共享档位会。独享 IP 在整个租期内只归你一个人用。
从哪里开始
在你需要的国家租一个数据中心 IP,用上面的测试跑一遍你真正的目标网站,看统计结果。通过了,你就找到了能用的最便宜的产品线。没通过,你为弄清这一点花的也很少。当前的价格和租期在价格页面,下单前想问哪条产品线合适,就到 Discord 来问。