本地商家数据,即 Google Maps 和各类目录上每一家商家背后的名称、地址、电话、营业时间、类别、评分和排名,驱动着数量惊人的工作:本地 SEO 排名追踪、B2B 线索名单、市场调研、列表核验,以及声誉监测。但有一个会悄无声息地让大多数采集尝试失败的陷阱:本地数据是按位置投递的。 Google Maps 展示给芝加哥搜索者的,不是它展示给柏林搜索者的;一家商家在一座城市里在本地三包(local pack)中所占的排名,到了下一座城市就是另一回事。
这一个事实,就把本地数据采集变成了一个访问问题。试着从一个数据中心 IP 或单一办公位置去抓取 Maps 或某个目录,你会被封、被弹 CAPTCHA,或者更糟,被投喂别人的本地结果,还被告知那就是真相。这正是住宅代理登场之处:它们让你完全像一个站在那座城市里的真实用户所看到的那样去采集本地商家数据,而这是让数据得出正确结果的唯一办法。下面讲怎么做,以及为什么它要紧。
“本地商家数据”究竟涵盖什么
其核心,是系统性地在人们寻找本地商家的各个界面上采集商家列表及其信号:
- 地图与列表平台 —— Google Maps 与商家资料(Business Profiles),加上更广的目录生态,是名称/地址/电话(NAP)、营业时间和类别的主要来源。
- 本地搜索结果 —— 为”附近”和带城市限定的查询而出现的本地三包和地图结果,本地排名就在这里决出。
- 评分与评论 —— 星级评分、评论数量,以及驱动声誉和排名的评论文本。
- 属性与富数据 —— 照片、热门时段、服务选项和类别标签。
团队用它来做本地 SEO 与排名追踪(一家商家在三包里排第几,按城市看?)、线索生成(构建某一类别和地区的商家名单)、竞争与市场调研(每个市场的竞争有多密集?)、NAP 核验与数据富化,以及多门店声誉监测。这一切都取决于捕获一个真实的本地搜索者实际看到的内容。而他看到什么,完全取决于他从哪里搜索。
为什么这是一个代理问题
本地数据的三个特性,使其采集成为一个直接落在代理层上的问题。
本地结果是按地理投递的,细到城市。 这是最大的一点。地图排名、本地三包和”附近”结果,都是从搜索者的物理位置计算出来的。一家在自己街区排第一的餐厅,隔几座城市可能根本不出现。如果你所有的采集都从一个位置运行,你测的是一座城市的本地结果,却把它们当成通用的,而这对其余每一个市场都只是错误的数据。要看到一家商家在某座城市里真实的本地排名,需要从那座城市去查询,而这正是城市级定位存在的意义。目录还会在其上叠加它们自己的区域个性化。
这些来源防守森严。 Maps 和主要目录运行着激进的反机器人系统。一个数据中心 IP 一眼就会被标记,然后得到一个 CAPTCHA、一次封锁,或一个被削减的结果,于是你记录下来的是列表的机器人版本,而不是真实版本。(为什么爬虫会被封讲解了其中的机制。)住宅 IP 带着真实用户的信任,所以你看到的是一个真实的人所得到的完整、真实的本地结果。
覆盖既广又要反复。 随时间跨越众多城市去追踪众多商家、类别和查询,是海量的请求。从少数几个 IP 出发,你会触发速率限制,得到一个片面、有偏的样本,恰好漏掉某个来源防守最凶的那些高价值查询。是一个庞大的轮换池,才能把覆盖保持完整。
这三者的解法是同一个:从看起来像真实用户、且物理上位于每一座目标城市里的 IP 去采集。
住宅代理在哪里契合
住宅代理把你的请求经由真实的消费者 IP 路由,于是 Maps 和目录回应你的方式,就如同回应一个真正的本地用户。专门就本地商家数据而言,这解锁了:
真实的本地结果,而非一个遥远的近似。 借助细化到城市的地理定位,你作为一个站在那座城市里的用户去查询本地三包和地图结果,于是你所捕获的排名、列表和”附近”结果,就是真实的本地人所看到的。这就是一份你可以向客户收费的本地排名报告,与一次猜测之间的区别。
真实的列表,而非机器人版本。 因为住宅 IP 带着真实用户的信任,你得到的是完整的商家资料,评分、营业时间、属性、评论数量,而不是给可疑流量的那个降级或被封的页面。
跨越每一个市场的完整覆盖。 一个庞大的轮换池会把请求分散开,让你可以持续地跨越众多城市追踪众多商家而不被封锁,让你的本地数据集保持完整而非零碎。(与用于数据采集的住宅代理中相同的采集质量原则在此适用,它还与密切相关的本地化 Google 搜索结果相搭。)
简单地说:住宅代理把”我们办公室碰巧看到的本地结果”变成了”一个真实客户在我们在意的每一座城市里所看到的本地结果”。
它是如何运作的
在 Shifter gateway 上,你通过把城市编码进代理用户名来挑选它,一个端点,没有 IP 列表需要管理:
# 作为芝加哥的搜索者采集本地结果curl -x customer-USERNAME-country-us-city-chicago:PASSWORD@p.shifter.io:443 https://maps-or-directory.example
# 同一商家类别,一个不同的市场curl -x customer-USERNAME-country-de-city-munich:PASSWORD@p.shifter.io:443 https://maps-or-directory.example那条让你免于坏数据的规则:让查询位置与代理位置相符。 如果你请求芝加哥的结果,就经由一个芝加哥的住宅 IP 路由,别用一座城市的 IP 去请求另一座城市的结果,否则平台自己的位置信号会与你的查询相矛盾,排名也就毫无意义。当你翻阅多步结果时保持一个粘性会话,让这一串序列看起来像一个用户;当你切到下一座城市或下一家商家时,在池中轮换。同一个 gateway,每个请求不同的定位,为你构建的任何采集管道供料。(持续被封而非偶尔被封,指向的是 IP 质量或请求行为,而非地理,见如何在抓取时避免被封。)
负责任地使用
本地商家数据在很大程度上是面向公众的,也就是任何搜索者都能看到的列表、营业时间和评分。这让它立足稳固,但要负责任地采集:收集公开的商家信息,遵守每个平台的条款和速率限制,不要削弱你所查询的服务,并远离个人数据,评论者的身份以及任何附在评论上的个人信息都不是可取之物。代理改变的是一个请求从哪个 IP 发出,而不是你是否应该发出它;我们的可接受使用政策是 Shifter 上何为允许的权威依据。
常见问题
我为什么需要代理来抓取 Google Maps 或本地目录? 因为本地结果是按物理位置投递的,而这些平台防守森严。从一个位置或一个数据中心 IP 出发,你只看到一座城市的结果(或一个被封/CAPTCHA 的版本)。住宅代理让你作为每一座目标城市里的真实用户去查询,于是你所采集的排名和列表就是真实的本地结果。
本地排名真的会因城市而变化这么大吗? 是的。本地三包和地图排名是从搜索者的位置计算的,一家商家可以在自己城市排第一,隔几座城市却不出现。从一个地方去度量,给你的是一座城市的答案,并歪曲了其余所有地方。
我能这样采集哪些本地数据? 商家名称、地址、电话、营业时间、类别、评分与评论数量、属性,以及本地三包/地图排名,任何按位置变化的公开列表信号,都能从城市级的住宅采集中受益。
本地数据该用住宅代理还是数据中心代理? 住宅。Maps 和目录会检测并区别对待数据中心 IP,所以数据中心给你的是被封或被削减的结果。住宅 IP 看到的是一个真正的本地搜索者会看到的真实、地理精准的列表和排名。
抓取本地商家数据合法吗? 本地列表是面向公众的,而采集通常处理公开数据,只要负责任地进行(尊重条款和速率限制,并回避评论者身份等个人数据),大体上没有问题。代理不会改变底层活动的合法性;对任何不确定的事项请获取法律意见。
底线
本地商家数据只有在它就是一个真实的本地搜索者实际看到的数据时才有用,而因为 Maps 和目录是按物理位置投递结果、并对机器人严防死守的,从一个办公室 IP 去采集,给你的是一座城市的答案,却被打扮成了真相。要做对,你必须作为每一座目标城市里的真实用户去查询,而这正是住宅代理所提供的:真实的本地排名和列表、完整的真实资料而非机器人版本,以及跨越每一个市场、不被封锁的完整覆盖。
如果你的团队在做本地 SEO、线索生成或多门店监测,一个带城市级定位的优质住宅代理网络,就是让本地图景精准、而非近似的关键。池的质量决定了那份覆盖有多完整,所以在评估时值得理解 IP 信誉。定价页面有按 GB 计费的套餐,可以拿它对着你在意的城市和类别试用。