知识

航空公司和酒店会按你所在的出境国给出不同报价吗?我们做了核实

我们通过住宅IP从六个国家加载了相同的Ryanair票价和Booking.com酒店价格。哪些发生了变化,哪些没有变化,以及我们无法访问到的内容。

Chris Collins

Chris Collins

2026年9月24日 · 2 分钟阅读

“提前从别的国家订机票会更便宜”是互联网上被反复重复的旅行建议之一。它也很少被认真测试过,因为一次公平的测试比看起来要难。价格每分钟都在变动,货币随国家而变化,同一网站在搜索页面显示的价格和结账时显示的价格也可能不同。

于是我们做了一次测试。2026年9月24日,我们通过住宅IP地址,从六个国家加载相同的航空公司票价和相同的酒店房源,除了出口所在的国家之外不改变任何其他条件。本文将准确报告我们看到了什么、已发表的研究说了什么,以及同样重要的是,我们无法触及的那部分价格。

关键要点

  • 航空公司票价并未随我们的出口国家变化。 在对Ryanair公共票价数据进行的72次请求以及六次对其真实预订页面的加载中,每个国家看到的相同航班价格都一样。
  • 货币跟随出发机场,而非我们的身份。 从都柏林出发的航班以欧元定价,从伦敦出发的航班以英镑定价,无论我们身处哪个国家皆是如此。
  • Booking.com公开的”起价”价格也没有变化。 十家巴黎酒店在全部六个国家、两轮测试中显示的价格完全相同。显示的货币跟随浏览器语言,而非IP地址。
  • 最有可能出现差异的酒店价格恰恰是我们无法触及的部分。 Booking.com允许酒店提供仅对来自指定国家访客可见的”国家价格”(Country Rates)。我们的自动化浏览器无法进入带日期的搜索结果页面,而这些价格正是在那里出现的。
  • 这与大多数已发表的研究结果一致。 针对航空公司网站的研究大多没有发现系统性的基于位置的定价,而针对酒店预订平台的研究则发现了真实但有限的差异。

我们如何测试

原则很简单:保持一切不变,只改变请求看起来来自的国家。

设置值
测试日期2026年9月24日,主要运行时段为UTC时间11:29至12:03
出口国家美国、英国、德国、法国、印度、巴西
网络Shifter住宅网关,每个会话选择国家
出口检查在每次主要运行中,会话的位置在加载旅行页面之前都得到确认;全部与所请求的国家一致
航空公司Ryanair:2026年11月10日三条航线的公共票价数据,外加从都柏林到伦敦斯坦斯特德的真实航班选择页面
酒店Booking.com:以英式英语显示的公开巴黎城市页面,读取每家上市酒店的”起价”数字
重复次数两轮,国家顺序随机打乱,请求间隔数秒
行为未登录,仅公开页面,未进行任何预订,少量请求,节奏缓慢

出口都是普通的家庭连接。例如,在美国,会话落在Comcast和Charter上;在英国落在BT上;在德国落在Deutsche Telekom上。在每个国家内部,粘性会话使页面及其加载的所有内容保持在同一个IP地址上,因此网站看到的是一个一致的访问者,而不是一群轮换的访问者。

比较本身就是同一个请求,从不同国家发出:

import json
import urllib.request

URL = ("https://www.ryanair.com/api/farfnd/v4/oneWayFares?departureAirportIataCode=DUB"
       "&arrivalAirportIataCode=STN&outboundDepartureDateFrom=2026-11-10"
       "&outboundDepartureDateTo=2026-11-10&currency=EUR")


def price_from(country, username, password):
    proxy = f"http://{username}-country-{country}:{password}@p.shifter.io:443"
    opener = urllib.request.build_opener(urllib.request.ProxyHandler({"https": proxy}))
    with opener.open(URL, timeout=45) as r:
        fare = json.loads(r.read())["fares"][0]["outbound"]["price"]
    return fare["value"], fare["currencyCode"]


for country in ["us", "gb", "de", "fr", "in", "br"]:
    print(country, price_from(country, "customer-USERNAME", "PASSWORD"))

我们的发现:航空公司

Ryanair通过一个公共数据接口发布其最低票价,因此可以进行干净的比较。我们从每个国家请求了2026年11月10日的三条航线,一次将货币固定为欧元,一次不指定货币,共两轮。

航线六个国家均看到的价格货币
都柏林到伦敦斯坦斯特德€19.99EUR
都柏林到巴塞罗那€40.99EUR
米兰贝加莫到伦敦斯坦斯特德€14.99EUR
伦敦斯坦斯特德到都柏林,未指定货币£17.99GBP

全部72次请求都成功了,且完全没有随国家变化。当我们不指定货币时,货币跟随出发机场:从都柏林和贝加莫出发是欧元,从伦敦出发是英镑,无论我们看起来身处哪个国家。

一个数据接口并非事情的全部,因此我们还使用完整浏览器从每个国家加载了Ryanair真实的航班选择页面。围绕11月10日前后几天的票价条,以及当天每个航班的票价,在全部六个国家中都完全相同。一次英国的试运行加载因连接重置而失败,重试后正常加载;我们没有看到其他错误。

流程下一步背后的Ryanair预订接口对来自各个国家的直接请求一律拒绝,因此我们没有测量结账过程。在付款时增加的费用,例如特定付款方式产生的费用,不在本次测试范围之内。

我们的发现:酒店

我们预期会在Booking.com上看到差异,原因正是Booking.com自己文档中写明的。其合作伙伴页面解释说,酒店可以提供”国家价格”(Country Rates),这些折扣”仅对使用与您所定向国家相匹配的IP地址访问我们平台的客人可见”。换句话说,基于位置的酒店定价是设计使然。

但我们无法触及它。从每个国家出发,我们的自动化浏览器都从带日期的搜索被重定向到Booking.com的巴黎通用页面,该页面搜索框中的日期选择器没有响应。带日期的结果,正是”国家价格”唯一会出现的地方,始终无法触及。这种悄无声息的功能退化在自动化访问受严密保护的网站时很常见,也是静默失败率的一个很好的例子:页面成功加载了,但它并不是真人会看到的那个页面。

巴黎页面确实显示了十家特色酒店各自的”起价”数字。在六个国家、两轮测试中,共十二次加载,列表完全相同:相同的酒店,相同的顺序,相同的价格,从最便宜的£192.72到最贵的£468.82。

货币则讲述了自己的故事。每次加载都显示英镑,因为浏览器设置为英式英语。在同一页面上将浏览器语言切换为美式英语后,则显示美元。显示的货币跟随语言设置,而非IP地址,这一点值得了解,以免在将价格差异归因于位置之前产生误判。不同的货币并不等于不同的价格。

已发表的研究说了什么

我们的结果只是一天、六个国家、两个网站的结果。更广泛的研究范围更大,虽然年代较早,但指向了同样的方向。

研究测量对象发现
Vissers等人,HotPETs 2014三周内从纽约和鲁汶访问25个航空公司网站没有系统性的价格歧视:“几乎所有航空公司在两个地点显示的价格都相似。“一个网站较高的价格由一项国家税收所解释
Steer Davies Gleave为欧盟委员会所做的研究,2012年100个航空公司和旅行社网站74%的网站不会因居住地不同而改变价格;如有变化,通常来自服务费或付款费用,“通常为€5-15”
欧盟委员会审查,2020年2019年的神秘顾客调查31.9%的航空公司网站对跨境购物者显示不同的价格,比2015年低11.6个百分点
Hupperich等人,CODASPY 2018酒店预订平台,来自多个国家的请求在部分平台上确认存在基于位置的价格调整,“尽管价格似乎只在有限范围内变化”;有一个平台对所有国家一视同仁
Which?,2023年1月消费者测试,从不同国家预订航班”在不同国家预订时,机票价格变化不大”

这种模式是一致的。航空公司票价很少随访问者的位置变动;如果出现跨境差异,通常源于费用、付款方式、税收和货币。酒店平台则不同,因为酒店本身可以按国家定向折扣,这就表现为真实但有限的差异。

这意味着什么

对旅行者而言,这条流行建议比听起来要弱得多。在航空公司方面,不同的国家不太可能改变票价,而不同的货币或付款方式所带来的额外成本可能超过节省下来的钱。在酒店方面,某个”国家价格”可能同样存在于你自己所在的国家,就像存在于其他任何国家一样。Which?也提醒,通过另一个国家进行预订可能处于法律灰色地带。

对旅游和电商团队而言,这个教训关乎测量设计。如果要跨市场比较价格,在得出与位置有关的任何结论之前,先控制货币、语言、税收和费用变量,并检查每次加载是否返回了真实访问者会看到的页面。这方面的采集工作,从国家和城市定向到粘性会话,在抓取航班和酒店价格和用于旅行票价数据的住宅代理中有所介绍。

对媒体而言,诚实的标题应该比”价格取决于你身处何地”更为局限。基于位置的定价确实存在于旅游行业中,最明显的表现是按国家定向的酒店折扣。而在我们能够触及的航空公司和酒店价格中,我们没有看到任何这样的情况。

本次测试的局限

一次单独的测试应当说明它没有涵盖的内容:

  • 只测试了一家航空公司和一个酒店平台,一天时间,六个国家。
  • 没有获取带日期的酒店搜索结果,因此没有”国家价格”数据,而这正是酒店基于位置定价最可能的来源。
  • 没有测量结账总价,因此没有涉及付款费用、预订时收取的税费,或仅限会员的价格。
  • 没有测量移动应用价格,而某些平台会单独设定这些价格。

以上每一点都值得进行后续研究。我们可以说的是,在保持其他一切不变的情况下,我们能够触及的价格数据并未随我们看起来身处的国家而变化。

来源与参考文献

准备好开始了吗?

试用 Shifter 住宅代理,205M+ 个 IP,195+ 个国家,低至 $0.10/GB。

立即开始