仅限Bazaarvoice客户和合作伙伴。其他均应参考iovation公司为文档。
这个版本的iovation集成是最新的。您可以找到以前版本的文档在这里

对话API允许您以编程方式检索和提交Bazaarvoice对话数据以在应用程序中使用。要了解更多信息,请参阅对话API文档主页

内容

+显示 ——隐藏

本教程演示如何创建和提交设备指纹信息iovation公司以及用户生成的内容到Bazaarvoice对话API。

简介

大规模的广告活动、恶意攻击和自动提交内容的尝试都是不真实内容的来源。为了对抗他们,Bazaarvoice与他们合作iovation公司是欺诈检测和预防的行业领导者。

Iovation fraud的检测和预防

为了防止和检测网络浏览器中的欺诈行为,iovation's开发了一种基于JavaScript的解决方案,可以生成一个编码的设备指纹字符串黑盒-包含终端用户的计算设备的信息,如操作系统、浏览器等PII交换或维护)。此设备指纹黑匣子串与复杂的算法结合使用,使Bazaarvoice能够识别、标记和报告可疑内容。如果没有这些信息,我们的欺诈检测技术将无法将提交的内容识别为真实的消费者生成的内容。

根据Bazaarvoice真实性政策,您必须在每次提交时附上设备指纹。如果您未能在提交时发送设备指纹,Bazaarvoice可自行决定采取任何必要的行动,以保护网络的完整性。此类行动可能包括但不限于:拒绝您的内容、停止在Bazaarvoice网络上聚合您的内容、撤销您的API密钥或撤销您的API许可。

集成总结

iovation的欺诈预防和检测集成有两个组成部分:

  • JavaScript:你将托管ioation的加载器JavaScript,它将加载用于生成设备指纹黑匣子字符串的额外资源。必威投注网

  • 服务器:一个可选的服务器端代理,用于从您的域向iovation发送iovation资源的第一方请求。必威投注网这使得它看起来好像iovation的资产来自你的域,这样他们就不会被脚本拦截器拒绝。

    我们不需要服务器端集成,但如果您愿意,可以实现它。请参阅服务器集成部分以了解更多信息。

以下是收集设备信息的步骤概述。它假设有一个支持JavaScript的客户端环境,比如web浏览器:

一步一步的概述

  1. 在你的web应用中配置和加载iovation的JavaScript库。
  2. 等待ioviation的脚本分析用户代理并创建设备指纹黑匣子串
  3. 提交到Bazaarvoice对话API,包括《外交政策》参数中包含iovation黑盒值。

获取iovation的JavaScript

您需要托管iovation的JavaScript加载器文件。您可以通过以下方式之一获取该文件:

继续阅读,了解ioviation提供的不同JavaScript集成选项,以及如何将它们与Bazaarvoice Conversations API结合使用。

JavaScript的集成

使用以下集成方法之一将iovation添加到您的网站:

隐藏表单字段

这是最简单的技术,但灵活性最低。它将只与页面上的一个表单一起工作,并且该表单必须在iovation的JavaScript加载之前在页面上。

  1. 为设备指纹黑匣子创建表单字段

  2. 配置iovation的JavaScript

    在iovation的JavaScript加载之前,配置必须在页面上。

    窗口。冰屋=窗户。IGLOO || {"bbout_element_id": "ioBlackBox", //用设备指纹填充#ioBlackBox input "enable_rip": true, //启用真实IP保护。"enable_flash": false, //禁用flash" install_flash": false, // Don't ask user to install flash" loader": {"version": "general5", //非实验性5. "x更新"fp_static": false //不加载第一方资源}};必威投注网
    删除fp_static: false如果您打算实现服务器集成
  3. 提供iovation的JavaScript加载器

    你应该在你的域中托管和服务iovation的JavaScript加载器。Iovation的加载器将加载生成设备指纹所需的额外脚本和资源。必威投注网

    < script src = " https://yourdomain.example.com/path/to/iovation/loader.js " > < /脚本>

回调函数

稍微比隐藏表单字段选项,但提供有关黑匣子字符串何时可用的有用信息。

  1. 配置iovation的JavaScript

    在iovation的JavaScript加载之前,配置必须在页面上。

    窗口。冰屋=窗户。IGLOO || {"enable_rip": true, //启用实IP保护。"enable_flash": false, //禁用flash" install_flash": false, // Don't ask user to install flash" loader": {"version": "general5", //非实验性5. "x更新"fp_static": false //不加载第一方资源}};必威投注网
    删除fp_static: false如果您打算实现服务器集成
  2. 定义bb_callback ()

    window.IGLOO。bb_callback = function(blackBoxString, isComplete) {if (isComplete){//你的代码处理blackBoxString}}
    bb_callback()函数可以快速连续地生成多个黑盒字符串。每个字符串将包含比上一个字符串更多的设备指纹信息。当用户提交他们的内容时,您应该使用最近生成的黑盒字符串。
  3. 提供iovation的JavaScript加载器

    你应该在你的域中托管和服务iovation的JavaScript加载器。Iovation的加载器将加载生成设备指纹所需的额外脚本和资源。必威投注网

    < script src = " https://yourdomain.example.com/path/to/iovation/loader.js " > < /脚本>

getBlackBox ()

此方法提供了最多的信息和控制,但它也是最复杂的,因为返回的每个对象getBlackBox ()是唯一的,所以getBlackBox ()可能需要执行几次,直到黑匣子字符串可用。

  1. 配置iovation的JavaScript

    在iovation的JavaScript加载之前,配置必须在页面上。

    窗口。冰屋=窗户。IGLOO || {"enable_rip": true, //启用实IP保护。"enable_flash": false, //禁用flash" install_flash": false, // Don't ask user to install flash" loader": {"version": "general5", //非实验性5. "x更新"fp_static": false //不加载第一方资源}};必威投注网
    删除fp_static: false如果您打算实现服务器集成
  2. 提供iovation的JavaScript加载器

    你应该在你的域中托管和服务iovation的JavaScript加载器。Iovation的加载器将加载生成设备指纹所需的额外脚本和资源。必威投注网

    < script src = " https://yourdomain.example.com/path/to/iovation/loader.js " > < /脚本>
  3. 查询getBlackBox获取相关信息

    每次呼叫ioGetBlackbox ()返回一个JavaScript对象,其中包含关于黑匣子当前状态的信息,最终返回黑匣子字符串本身。

    var timeoutId;函数useBlackboxString(intervalCount) {if (typeof window. iglo . getblackbox !== 'function'){返回;}var bbData = window. iglo . getblackbox ();if (bbData.finished) {clearTimeout(timeoutId);var blackBoxString = bbData.blackbox;//你的代码处理blackBoxString}} timeoutId = setInterval(useBlackboxString, 500);

    考虑限制你的useBlackboxString函数执行固定的次数,然后假设黑匣子字符串不可用。


一旦您能够生成一个设备指纹黑匣子字符串,您就可以将它与作者的内容一起提交给Bazaarvoice。

向Bazaarvoice提交设备指纹

iovation设备指纹黑匣子串必须使用《外交政策》参数以及用户的内容。

参数

的名字 描述 默认值
《外交政策》 值为iovation设备指纹黑匣子字符串。 N/A

内容类型

《外交政策》参数可用于以下内容类型。

  • 审查
  • 评论发表评论
  • 问题
  • 回答

例子

提交应该使用带有请求的HTTP POST方法来执行身体由于黑匣子字符串的长度和某些服务器对查询字符串长度施加的限制。

下面的示例显示了包含The的提交《外交政策》参数。

以下代码只适用于完全提交。它不适用于渐进服从。
POST /数据/ submitreview。内容类型:application/x-www-form-urlencoded x- forward -for: [AuthorIPAddress]…rating=5&title=This+is+a+review+title&reviewtext=This+is+review+text.+This+is+review+text.+This+is+review+text.+This+is+review+text.+This+is+review+text.+This+is+review+text.+This+is+review+text.+ This+is+review+text.+This+is+review+text.+This+is+review+text.+ usernickname =bvtester&productId=io_bb_callback&userId=1234567&apiversion= 5.4.0 &action=submit&passkey=hk5pv3pfasrrdjyq487m699 &fp = [BlackBoxString]

上面例子中的省略号(…)表示你的应用程序可能会生成其他头文件。

编码黑盒字符串

未能正确编码黑盒字符串将导致您的内容被认为是不真实的。

黑匣子字符串包含在URI中为特殊目的保留的字符。例如,加号(+)是空白字符的编码。方法执行提交内容类型:应用程序/ x-www-form-urlencoded头中,我们的应用程序将解码黑匣子字符串并将加号解释为空白字符。

要正确提交黑匣子字符串,必须确保黑匣子字符串是它本身百分比编码,这样任何保留字符都不会被误解。例如,加号的百分比编码为% 2 b.当我们的应用程序遇到该字符序列时,它将被解释为+的性格。

下面的例子演示了未编码和编码的黑盒字符串:

未编码

本例中描述的黑盒字符串不应该提交给Bazaarvoice,因为它没有编码。

0400年mtr4z7+BQcwNf94lis1ztli3mJEkJyoNdUgbrAJXB1FL4OEJMXZmD5jK1MaVRDhlAQ9qVcA9LW6vVIn0Up+4 mzllk7xd4mgleka0y+mB3pcCMqvMh8qRwB6l1hlSasV82UeoAtphovcW/PXBDOAZObSUZpybFcXAARVnJuq5mFWxH1ZPRIwM6iaikdE2N/iBS7gHh9oerxrosS1xgSAgNfLEMokGoGJxq3nJn2qrpH3U8XBpd1sDgWA73rYZtIsVyoA80pXCaXYch6NDTeqGONC1UJgA1BQZDi8R6wVNV9r6qoxEqm2gQ71/Y9e8eiB48zOQG3Lx3BMX0E/AY6vmjxNpiXJ/赫兹……

省略号(…)表示为了演示目的而缩短了字符串。

编码

这个黑盒字符串是编码的,可以安全地提交给Bazaarvoice。

0400年mtr4z7% 2 bBQcwNf94lis1ztli3mJEkJyoNdUgbrAJXB1FL4OEJMXZmD5jK1MaVRDhlAQ9qVcA9LW6vVIn0Up% 2 b4 mzllk7xd4mgleka0y% 2 bmB3pcCMqvMh8qRwB6l1hlSasV82UeoAtphovcW% 2 fPXBDOAZObSUZpybFcXAARVnJuq5mFWxH1ZPRIwM6iaikdE2N% 2 fiBS7gHh9oerxrosS1xgSAgNfLEMokGoGJxq3nJn2qrpH3U8XBpd1sDgWA73rYZtIsVyoA80pXCaXYch6NDTeqGONC1UJgA1BQZDi8R6wVNV9r6qoxEqm2gQ71% 2 fY9e8eiB48zOQG3Lx3BMX0E% 2 fAY6vmjxNpiXJ% 2 f赫兹……

省略号(…)表示为了演示目的而缩短了字符串。

请参阅附录查看描述如何正确编码黑盒字符串的代码示例。

编码代码示例

这些示例演示了如何对提交数据进行编码。请参阅提交基础有关执行提交的更多信息的指南。

纯JavaScript

使用纯JavaScript时,必须自己对值进行编码。了解更多encodeURIComponent ()

var title = encodeURIComponent('这是一个示例提交');var blackBoxString = encodeURIComponent('0400mTR4Z7+BQcwNf94lis1ztli…');var http = new XMLHttpRequest();http。打开('文章',' https://developer.bazaarvoice.com/data/submitreview.json ');http。setRequestHeader(“内容类型”、“应用程序/ x-www-form-urlencoded”);http。Onreadystatechange = function(){…}http。send('rating=5&title=' + title + '&fp=' + blackBoxString);
jQuery
对象方法

如果您将提交数据作为对象传递,jQuery将自动为您编码这些值。

var jqxhr = jQuery。ajax({类型:'POST', url: 'https://developer.bazaarvoice.com/data/submitreview.json',数据:{评级:5,标题:'这是一个示例提交',fp: '0400mTR4Z7+BQcwNf94lis1ztli…'},success: function(){…}})
字符串的方法

当以字符串形式传递提交数据时,必须自己对值进行编码。了解更多encodeURIComponent ()

var title = encodeURIComponent('这是一个示例提交')var blackBoxString = encodeURIComponent('0400mTR4Z7+BQcwNf94lis1ztli…')var jqxhr = jQuery。ajax({type: 'POST', url: 'https://developer.bazaarvoice.com/data/submitreview.json', data: 'rating=5&title=' + title + '&fp=' + blackBoxString, success: function(){…}})

附录

故障排除

如果没有工作,您可以使用加载器配置trace_handler故障排除参数。这将为回调函数提供输出和状态消息。

window.IGLOO。trace_handler= function(message) { console.log(message) }

服务器集成

Iovation可以使用从您的域(必威投注网第一方)和Iovation的域(第三方)请求的资源。包括来自这两个域的脚本允许iovation:

  • 第一方——收集那些浏览器配置为禁用第三方JavaScript或阻塞iovation域的用户的设备信息。
  • 第三方-在iovation订户之间共享设备和帐户的欺诈历史。

加载第一方资源将要求您设置如下所述的反向代理必威投注网。

服务器集成是可选的。如果您担心脚本拦截程序会拒绝从iovation加载的资源,那么您应该考虑实现服务器端集成。必威投注网

配置第一方资源检索

您将托管iovation的JavaScript加载器,该加载器创建脚本标记,请求第三方和第一方JavaScript。第一方资源将从您的域请求路径必威投注网为/ iojs /.例如:


               

您需要设置一个反向代理来转发带有该路径的任何请求/ iojs /iovation公司。你的代理应该使用以下配置值:

位置 / iojs /
代理主机 https://first.iovation.com/ *

/ iojs /包括路径段,以便您可以识别要代理哪些请求。它不应该包含在代理请求路径中。如下表所示:

第一方请求URL https://yourdomain.example.com/ iojs /iovation公司路径/ / /资源
代理请求URL https://first.iovation.com/path/to/iovation/resource

代理指南

您的iovation代理必须符合以下准则:

  • 不要通过重定向将URL的请求直接转发到iovation,因为这些请求可能会被阻止。
  • 不要创建特殊的子域。这可以像iovation的域一样容易被阻止。
  • 不要隐藏排卵的结果。iova必威投注网tion加载的资源本质上是动态的,可能随着每个设备而变化。
  • 不要以丢弃报头的方式将请求转发给iovation。

做以上任何一项都会破坏欺诈识别过程。

代理的例子

下面的简单示例演示了如何使用几个流行的服务器配置反向代理:

在Nginx配置文件(default.conf)的服务器部分添加以下行。您必须将位置设置为/ iojs /

服务器{…其他配置项…Location /iojs/ {proxy_pass https://first.iovation.com/;}……}

在Apache配置模块(httpd.conf)中启用以下模块:

LoadModule proxy_module modules/mod_proxy。so LoadModule proxy_http_module modules/mod_proxy_http.so

在主配置或VirtualHost指令中添加以下行:

SSLProxyEngine在ProxyPass /iojs/ https://first.iovation.com/上

保存配置文件并重启Apache。

Node不提供对代理的原生支持,但社区提供了几个可用的模块。下面的示例使用nodejitsu / node-http-proxy

Const HTTP = require(' HTTP ');const httpProxy = require('http-proxy');const proxy = httpProxy。createProxyServer({target: 'https://first.iovation.com/'});Const server = http。createServer(function(req, res){//匹配'/iojs/' const pattern = /\/iojs\//g;//代理任何包含'/iojs/'的请求if (req.url.search(pattern) !== -1){//从请求路径req. search中删除'/iojs/'Url = req.url。替换(模式,' / ');代理。Web (req, res, {}); } else { // Handle your resources } });

您的设备指纹

Iovation是在这个页面上实现的,所以你可以看到一个黑盒字符串的例子。下面的字符串是您设备的指纹

加载……