Откуда взялся пользовательский агент Cobalt по умолчанию?

При запуске кобальта я вижу юзерагент из лога:

[0101/000230:INFO:application.cc(690)] User Agent: Mozilla/5.0 (DirectFB; Linux x86_64) Cobalt/4.13031-qa (unlike Gecko) Starboard/1

Так откуда это взялось? Есть ли способ изменить это?


person Community    schedule 10.02.2017    source источник


Ответы (2)


Пользовательский агент по умолчанию установлен в следующем файле, вы можете проверить:

https://cobalt.googlesource.com/cobalt/+/e9b4b99dab6e774b8b6e63add74c352cc5dd395a/src/cobalt/network/user_agent_string_factory.cc

std::string UserAgentStringFactory::CreateUserAgentString() {
  // Cobalt's user agent contains the following sections:
  //   Mozilla/5.0 (ChromiumStylePlatform)
  //   Cobalt/Version.BuildNumber-BuildConfiguration (unlike Gecko)
  //   Starboard/APIVersion,
  //   Device/FirmwareVersion (Brand, Model, ConnectionType)
  //   Mozilla/5.0 (ChromiumStylePlatform)
  std::string user_agent =
      base::StringPrintf("Mozilla/5.0 (%s)", CreatePlatformString().c_str());
  //   Cobalt/Version.BuildNumber-BuildConfiguration (unlike Gecko)
  base::StringAppendF(&user_agent, " Cobalt/%s.%s-%s (unlike Gecko)",
                      COBALT_VERSION, COBALT_BUILD_VERSION_NUMBER,
                      kBuildConfiguration);
  //   Starboard/APIVersion,
  if (!starboard_version_.empty()) {
    base::StringAppendF(&user_agent, " %s", starboard_version_.c_str());
  }
  //   Device/FirmwareVersion (Brand, Model, ConnectionType)
  if (youtube_tv_info_) {
    base::StringAppendF(
        &user_agent, ", %s_%s_%s/%s (%s, %s, %s)",
        youtube_tv_info_->network_operator.value_or("").c_str(),
        CreateDeviceTypeString().c_str(),
        youtube_tv_info_->chipset_model_number.value_or("").c_str(),
        youtube_tv_info_->firmware_version.value_or("").c_str(),
        youtube_tv_info_->brand.c_str(), youtube_tv_info_->model.c_str(),
        CreateConnectionTypeString().c_str());
  }
  return user_agent;
}
person bitchainer    schedule 10.02.2017
comment
Может быть, вам нужно поискать ключевое слово по всему исходному коду кобальта, и вы его найдете. - person bitchainer; 10.02.2017
comment
В идеале вы должны просто обновить строку User-Agent, изменив значения, сообщаемые Starboard, а не возиться с общей UserAgentStringFactory. - person David Ghandehari; 10.02.2017
comment
Дэвид прав. Никогда не вносите изменения в user_agent_string_factory.cc. Вместо этого правильно внедрите system_get_property.cc, system_get_device_type.cc в Starboard. Затем правильно отформатированные строки пользовательского агента будут заполнены автоматически. - person Daniel Juyung Seo; 12.12.2017

Если ваш SbSystemGetDeviceType() верен для SystemDeviceTypeIsTv() (в файле user_agent_string_factory_starboard.cc), вы можете настроить UA, внедрив некоторые поля SbSystemGetProperty() + некоторые SbSystemGet() функции.

Это типичный пример:

Mozilla/5.0 (1) Cobalt/11.119147-gold (в отличие от Gecko) Starboard/8, 2_8_6/5 (3, 4, 7)

куда,

  1. kSbSystemPropertyPlatformName
  2. kSbSystemPropertyNetworkOperatorName
  3. kSbSystemPropertyManufacturerName
  4. ксбсистемпропертимодельнаме
  5. kSbSystemPropertyFirmwareVersion
  6. kSbSystemPropertyChipsetModelNumber
  7. SbSystemGetConnectionType()
  8. SbSystemGetDeviceType()
person dacBR    schedule 08.12.2017
comment
8 в Starboard/8 — это версия SB, а не пункт 8. - person dacBR; 08.12.2017