You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向Prebid.js竞价请求中添加自定义地理位置数据?

为Prebid.js竞价请求设置自定义地理位置数据的合法方法

当然有合法且官方支持的方法,无需依赖需要用户授权的地理模块,以下是几种可行方案:

1. 自定义RTD(Real-Time Data) Provider

Prebid的RTD机制专门用于在竞价请求前注入自定义数据,你可以参考官方地理模块的实现,写一个极简的自定义RTD Provider来设置自定义地理位置:

// 定义自定义RTD Provider
const customGeoRtdProvider = {
  name: 'customGeo',
  init: function(config, userConsent) {
    // 初始化逻辑(按需添加)
    return true;
  },
  getBidRequestData: function(requestBidsObject, callback) {
    // 设置自定义地理位置数据
    window.pbjs.deepSetValue(requestBidsObject, 'ortb2Fragments.global.device.geo', {
      lat: 39.9042, // 自定义纬度
      lon: 116.4074, // 自定义经度
      lastfix: 0,
      type: 2 // 自定义类型,比如代表服务器获取的位置
    });
    callback();
  }
};

// 注册RTD Provider
window.pbjs.registerRtdProvider(customGeoRtdProvider);

// Prebid初始化时启用该RTD
window.pbjs.setConfig({
  realTimeData: {
    dataProviders: [
      {
        name: 'customGeo',
        waitForIt: true // 确保数据注入完成后再发送竞价请求
      }
    ]
  }
});

2. 直接通过ortb2全局配置

在Prebid初始化时,直接设置全局的ortb2参数,其中的device.geo会被自动合并到竞价请求中:

window.pbjs.setConfig({
  ortb2: {
    device: {
      geo: {
        lat: 39.9042,
        lon: 116.4074,
        lastfix: 0,
        type: 2
      }
    }
  }
});

3. 使用beforeRequestBids钩子

利用Prebid的beforeRequestBids事件钩子,在竞价请求发送前直接修改请求对象:

window.pbjs.onEvent('beforeRequestBids', function(requestBidsObject) {
  // 覆盖或设置地理位置数据
  window.pbjs.deepSetValue(requestBidsObject, 'ortb2Fragments.global.device.geo', {
    lat: 39.9042,
    lon: 116.4074,
    lastfix: 0,
    type: 2
  });
});

以上三种方法都是Prebid官方文档明确支持的扩展方式,不属于非法修改,完全符合框架的设计逻辑。

内容的提问来源于stack exchange,提问作者Evgeniy Polyakov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 01:57:17