问两个人某个关键词排在第几,你往往会得到两个答案,且两个都对。一个从某座城市里的笔记本上、在登录状态下查,另一个从另一个地区的手机上、在退出登录状态下查,而搜索引擎交给他们每人一套不同的结果集。这就是排名追踪之下那个令人不安的真相:一个关键词并没有单一的排名。一个位置只有在你说清楚这次搜索发生在哪里、为谁发生、在什么设备上之后,才有意义。精确地测量排名,且是在横跨许多市场的许多关键词的规模上,其实是在于控制这些变量,好让每一次测量都可比较。住宅代理处理其中最难的那一个,而这里就是整件事拼合到一起的方式。
会移动一个排名的那些变量
有四样东西会把一套结果集从你脚下挪走,而一个忽略它们的数字,是伪装成数据的噪声。
第一是地点。搜索结果被本地化的程度,远比大多数人所设想的更为激进,细到城市、有时细到街区,对任何带本地意图之物尤其如此。第二是个性化:搜索者是否登录,以及引擎给他附上了怎样的历史与偏好。第三是设备,因为移动端与桌面端返回的是明显不同的版式、有时是不同的排序。第四是时间,因为随着引擎测试改动并重新排序,结果会一小时一小时地波动。不固定这些就去测,你就是在拿一个”手机-在芝加哥-已登录”的数字,去比一个”桌面-在柏林-已退出”的数字,还把这个差异叫作一次排名变化。要得到一个你能信任的排名,你就把每个变量钉在一个已知、一致的值上。
地点:最大的那根杠杆
地点对排名的移动,超过任何其他单一因素,而这恰恰是为什么它是从一间办公室里最难控制的那个。一个搜索者所看到的结果,在很大程度上是相对于其连接看起来身在何处来解析的,所以要测量某个给定市场里的排名,你就得从那个市场发出请求。一个用于本地化 Google 搜索结果的住宅代理会把每条查询放置在你正在测量的那个市场里,而在意图为本地之处,城市级定位会把它收紧到一个本地组合或地图结果真正依赖的精度。这正是以地理定位抵达随地区而变的公开数据的合法用法:你记录的是每个地点真正返回的排名,而不是一间办公室的视角被投射到每一个市场上。按测量钉住地点并守住它,好让一座城市里的一个排名,永远是那座城市里的排名。
个性化:从一个干净、中立的视角去测
即便地点固定了,个性化仍可能把结果掰弯。一个已登录的会话带着历史与偏好去推动排序,所以精确的排名测量要在退出登录、带一个干净的 cookie 罐子的状态下做,好去逼近一个中立的搜索者,而不是某个具体之人量身定制的视角。IP 本身就是这份中立的一部分。一个带着历史的地址——一个被共享、被标记、或一直在猛砸引擎的地址——可能拉出一个失真或被质询的结果,那并不是一个寻常用户所看到的,所以出口的信誉对测量本身都要紧,而不只是对请求是否成功要紧。一个呈现为寻常家庭连接的干净住宅 IP,正是让你能记录下那个地方一个正常、未被个性化的搜索者会得到的结果的东西。中立的视角、干净的 IP、退出登录:这就是一个可比较的排名被测量时所依的基线。
设备与时间:最后两个变量
设备说起来简单、也容易忘:移动端与桌面端是不同的 SERP,所以选定你正在追踪的那一个,并一致地呈现一个与之相匹配的 user agent,而不是任由它在各次查验之间变来变去。时间是更安静的那一个。结果会随着一天推移、随着引擎重新排序并跑实验而移动,所以单单一次读数,是一张可能误导人的快照。按一个一致的计划去采样,并把趋势、而非任何单个数据点,当作那个信号——这也意味着,采集本身必须跑得足够可靠,才能产出那条平稳的序列。
在规模上做,却不扭曲测量
一个真正的排名追踪计划,是许多关键词乘以许多地点乘以一两种设备、按计划采样,而那个量正是测量质量与基础设施相撞之处。从太少的地址发出,这些请求就会撞上按 IP 的速率限制,引擎便开始返回验证码、被限速的页面、或劣化的结果,而这恰恰腐蚀了你正试图采集的那份数据。用于 SEO 监控的轮换住宅代理会把查询分散到池子里,好让每个 IP 都待在它的限额之内、每个结果都干净地回来——这正是任何高流量采集器背后的负载均衡逻辑,也正是无限并发连接的用途。在各条查询之间轮换以分摊负载;在一次查验于一段序列里走过多个结果页之处,一个粘性会话会为那段行走守住一个 IP,好让各页保持一致。通过处理触发封锁的信号并监控这条流水线来让采集保持诚实:一个地区成功率的无声下滑,首先是你排名历史里的一个缺口,然后才是别的什么,而故障转移会在一条路由劣化时让序列保持不断。因为一次被延误的读数是一次更陈旧的读数,把延迟压低有助于让每次测量都反映当下的 SERP。
自建还是购买,以及守在它正确的一侧
诚实的定位。在规模上采集 SERP,要么是你去自建之物——以住宅代理作为你自己那套追踪器之下的网络层,要么是你去购买之物——用一个托管的 SERP API,它返回已解析的结果、并替你处理抓取。两者都成立;自建这条路给你完全的控制权,去精确决定你钉住哪些变量、如何解析,购买这条路则以让出一部分控制权,换来更少的运维。无论哪条,纪律都是一样的:测量公开的搜索结果、尊重每个引擎的服务条款与 robots 指令,并有礼地查询,好让你永不劣化你所依赖的那个服务。排名追踪是对公开数据的测量与市场研究,守在那条线上,正是让这个计划站得住脚的东西。
一套最小的干净、本地化查询
定位住在 gateway 的用户名里。钉住一个国家,让会话保持退出登录且干净,并呈现你正在追踪的那个设备:
import requests
# One clean residential exit in the US market, logged-out queryPROXY = "http://customer-USERNAME-country-us:PASSWORD@p.shifter.io:443"proxies = {"http": PROXY, "https": PROXY}
DESKTOP_UA = ("Mozilla/5.0 (Windows NT 10.0; Win64; x64) " "AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/141.0.0.0 Safari/537.36")
r = requests.get( "https://www.search-engine.example/search?q=residential+proxies", proxies=proxies, timeout=20, headers={"User-Agent": DESKTOP_UA, "Accept-Language": "en-US"},)r.raise_for_status()print(r.text) # parse the result positions from here用你正在测量的那组国家与城市定位跑同一条查询,以搭起那个按市场的画面;让每一次测量都在一个带固定设备画像的干净 IP 上、退出登录地进行;并按一个计划去采样,好让你读到的是一条趋势,而不是单单一次读数。通用的客户端模式从用 Python 使用住宅代理那篇指南里一路承接过来。
底线
一个关键词并没有一个排名,它有一个按地点、按搜索者、按设备、按时刻而定的排名,所以精确地测量,意味着钉住这些变量、并在每一次查验里让它们保持恒定。通过从你正在测量的那个市场去查询来钉住地点、通过在一个干净 IP 上退出登录来中和个性化、钉住设备,并一致地对时间采样。那个难对付的变量——地点,以及它所依赖的那个干净网络视角——正是住宅代理所提供的:在你追踪的那些市场里地理精确的出口、返回一个寻常搜索者所见之物的干净家庭级 IP,以及一个带轮换与故障转移的大池子,好让横跨许多市场的许多关键词能被可靠地采样,而不撞上那些会扭曲结果的防御。控制住这些变量,那个数字才终于意味着什么。
那一层网络层,正是住宅代理的用途——一个由真实的、家庭级 IP 组成的大池子,带国家与城市定位,并在一段序列需要时带粘性会话。按 GB 计价意味着你为自己真正跑的查询付费,这很契合一个由细小、频繁、同时铺开在许多关键词与市场上的 SERP 查验构成的排名追踪工作负载。