一种Web匿名用户识别、追踪方法及系统与流程

文档序号:18165598发布日期:2019-07-13 09:35阅读:535来源:国知局
一种Web匿名用户识别、追踪方法及系统与流程

本发明涉及互联网技术领域,具体提供了一种web匿名用户识别、追踪方法及系统。



背景技术:

匿名web用户是指未提供任何标记信息,如用户名、id、身份证、手机号等的web用户。如果要对这类用户提供定制化的内容、提高内容触达率与用户转化率,则必须尽可能准确的对其进行标记和追踪,并保证标记与追踪的稳定性。目前大部分网站或应用一般使用记录用户的ip、采集用户浏览器的httpcookie并进行匹配的方式来实现。部分网站/应用也会采集其他的用户信息,如浏览器的分辨率、useragent、canvas指纹等以提高识别的可能性,但这些技术均存在其缺点。

ip记录技术相对容易实现,但普通用户一般通过isp宽带或移动网络来访问网站/应用,这些ip一般是不断变化的,只有极少的访客通过固定ip访问,且固定ip一般由多个用户共用。因此ip记录技术本身无法准确的对用户进行识别与追踪。cookie识别技术,是通过给用户浏览器设置一段长期有效的cookie标记,当用户下次访问网站或应用的时候,会携带该标记,以此达到识别和追踪的目的。然而随着人们隐私保护意识提高和隐私保护技术的发展,特别是随着2018年欧盟《通用数据保护条例(gdpr)》的正式生效,第三方cookie的留存率已经大大降低,极大的限制了第三方cookie的使用。同时,非第三方cookie的留存时间也在随着隐私保护技术的发展逐渐降低。这使单独使用cookie识别技术的匿名web用户识别与追踪效果与稳定性大大降低。canvas指纹技术,是一种利用各浏览器的曲线、抗锯齿等绘图算法的实现细节不同,同时各终端上的字体不完全一致,所以在不同的终端调用相同的canvas绘图指令绘制特定的图形,能得到不同的绘制结果,以此来标记不同的用户的方法。该方法用于识别pc端匿名web用户有一定的作用,但是因为相同品牌的手机的canvas指纹基本一致,所以在移动端的指纹重复率太高,识别率太低,基本不可用。

现存的其他用户追踪技术,例如flash指纹、geo信息获取等,由于会降低用户体验,比如降低网页响应速度、出现插件提醒等,在实际环境中并不实用。所以,现有web用户追踪技术因为自身的限制、技术的发展或实际环境的限制,实际效果不太理想。



技术实现要素:

针对以上缺点,本发明实施例提出了一种web匿名用户识别、追踪方法及系统,通过合理的组合和调整现有的web用户追踪手段,并加入了localstorage、浏览器文件缓存等追踪手段,提高了匿名web用户识别信息的留存时间,进而提高了匿名web用户识别和追踪的准确率和稳定性。

本发明提出了一种web匿名用户识别、追踪方法,包括以下步骤:

在要识别和追踪匿名web用户的网站或应用内的页面上,依次引入id.js和ls_id.js;

当请求访问页面时,请求id.js,若id.js未缓存,则服务器接收到id.js的请求后,检测etagid和cookieid,然后分别解析etagid和cookieid的创建时间,使用检测到的或者新建标识设置e-tag和缓存并以js语句返回;若id.js缓存,则直接从浏览器缓存返回;

当请求访问页面时,请求ls_id.js,服务器读取localstorage中id,服务器然后根据ls_id.js发送的lsid和cacheid的创建时间,作出判断,并返回判断结果,最后将所述判断结果写入localstorage。

进一步的,所述的依次引入id.js和ls_id.js的方法为以<scriptsrc=”xx.js的url”></script>的方式依次引入id.js和ls_id.js。

进一步的,所述当请求访问页面时,请求id.js,若id.js未缓存,则服务器接收到id.js的请求后,检测etagid和cookieid,然后分别解析etagid和cookieid的创建时间,使用检测到的或者新建标识设置e-tag和缓存并以js语句返回的步骤为:

检测http请求头中的if-none-match头,记为etagid;

检测httpcookie中的uniq_id,记为cookieid;

分别解析etagid和cookieid的创建时间,选择较早的一个有效标识作为输出标识;如果etagid和cookieid均不存在或者etagid的格式不正确、cookieid的格式不正确,则创建一个新的用户标识作为输出标识;

设置cache-control、expires、etag、set-cookie和content-type的http响应头;

输出http响应体。

进一步的,所述当请求访问页面时,请求ls_id.js,服务器读取localstorage中id,服务器然后根据ls_id.js发送的lsid和cacheid的创建时间,作出判断,并返回判断结果,最后将所述判断结果写入localstorage的方法步骤为:

读取localstorage中的uniq_id;

读取id.js中设置的用户标识;

使用ajax请求方式,异步将lsid和cacheid发送到服务端,服务器在收到成功的返回后,将服务器返回的内容写入localstorage。

进一步的,ls_id.js对应的服务器在接收到ls_id.js发出的ajax请求后,执行的步骤为:

检测httpcookie中的uniq_id,记为cookieid;

解析ls_id.js发来的cacheid和lsid,以及所述的cookieid,分别根据cacheid、lsid和cookieid的创建时间,选出所述创建时间最早的,作为输出标识;

设置set-cookie、expires的httpcookie响应头;

将所述输出标识作为http响应体输出。

一种web匿名用户识别、追踪的系统,包括引入模块、第一请求处理模块和第二请求处理模块;

所述引入模块用于在要识别和追踪匿名web用户的网站或应用内的页面上,依次引入id.js和ls_id.js;

所述第一请求处理模块用于当请求访问页面时,请求id.js,若id.js未缓存,则服务器接收到id.js的请求后,检测etagid和cookieid,然后分别解析etagid和cookieid的创建时间,使用检测到的或者新建标识设置e-tag和缓存并以js语句返回;若id.js缓存,则直接从浏览器缓存返回;

所述第二请求处理模块用于当请求访问页面时,请求ls_id.js,服务器读取localstorage中id,服务器然后根据ls_id.js发送的lsid和cacheid的创建时间,作出判断,并返回判断结果,最后将所述判断结果写入localstorage。

进一步的,所述第一请求处理模块包括id.js未缓存处理模块和id.js缓存处理模块;

所述id.js未缓存处理模块用于若id.js未缓存,则服务器接收到id.js的请求后,检测etagid和cookieid,然后分别解析etagid和cookieid的创建时间,使用检测到的或者新建标识设置e-tag和缓存并以js语句返回;

所述id.js缓存处理模块用于若id.js缓存,则直接从浏览器缓存返回。

进一步的,所述第二请求处理模块包括请求读取模块和判断模块;

所述请求读取模块用于当请求访问页面时,请求ls_id.js,服务器读取localstorage中id;

所述判断模块用于服务器根据ls_id.js发送的lsid和cacheid的创建时间,作出判断,并返回判断结果,最后将所述判断结果写入localstorage。

发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:

本发明实施例提出了一种web匿名用户识别、追踪方法及系统,该方法首先在要识别和追踪匿名web用户的网站或应用内的页面上,依次引入id.js和ls_id.js,当请求访问页面时,请求id.js,若id.js未缓存,则服务器接收到id.js的请求后,检测etagid和cookieid,然后分别解析etagid和cookieid的创建时间,使用检测到的或者新建标识设置e-tag和缓存并以js语句返回;若id.js缓存,则直接从浏览器缓存返回。当请求访问页面时,请求ls_id.js,服务器读取localstorage中id,服务器然后根据ls_id.js发送的lsid和cacheid的创建时间,作出判断,并返回判断结果,最后将所述判断结果写入localstorage。基于本发明提出的一种web匿名用户识别、追踪方法,还提出了一种web匿名用户识别、追踪系统。本发明综合使用了cookie、localstorage、http缓存这3种最简洁有效的技术,在cookie、浏览器缓存、浏览器etag和localstorage这4个位置进行用户标识的存储,并可根据用户标识中嵌入的创建时间信息,使得即使4个位置中的某几个标识丢失仍可准确的恢复,大大提高了匿名用户识别的准确率和可靠性。本方案选择性的放弃canvas指纹、flash指纹和geo信息获取技术,使得用户的访问体验不受影响。

附图说明

图1是本发明实施例1一种web匿名用户识别、追踪方法步骤示意图;

图2是基于本发明实施例1提出的一种web匿名用户识别、追踪系统结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明的描述中,需要理解的是,术语“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

实施例1

本发明实施例1提出了一种web匿名用户识别、追踪方法,如图1所示为本发明实施例1一种web匿名用户识别、追踪方法步骤示意图。

在要识别和追踪匿名web用户的网站或应用内的页面上,依次引入id.js和ls_id.js;

当请求访问页面时,请求id.js,若id.js未缓存,则服务器接收到id.js的请求后,检测etagid和cookieid,然后分别解析etagid和cookieid的创建时间,使用检测到的或者新建标识设置e-tag和缓存并以js语句返回;若id.js缓存,则直接从浏览器缓存返回;

当请求访问页面时,请求ls_id.js,服务器读取localstorage中id,服务器然后根据ls_id.js发送的lsid和cacheid的创建时间,作出判断,并返回判断结果,最后将所述判断结果写入localstorage。

其中,id.js其内容由服务端生成,形式为window.uniq_id="cxgakwl4ajmjeactcxgokwl4rjmjeu=";其中引号内的部分是用户的标识。该文件(url)被配置为被浏览器长期缓存。

ls_id.js负责读取localstorage内的用户标识,收集各处用户标识发送给服务器,并根据返回结果重新把用户标识写如不localstorage。

服务器,负责生成用户标识,输出id.js和接收ls_id.js发来的用户标识请求并经过综合比较后输出合适的用户标识。

一种web匿名用户识别、追踪方法中,首先在要识别和追踪匿名web用户的网站或应用内的每个页面上,以<scriptsrc=”xx.js的url”></script>的方式依次引入id.js和ls_id.js。id.js的url需要和网站或应用同域名,配置id.js由服务器处理,ls_id.js可以静态文件的方式提供。

当用户访问页面时,会请求id.js和ls_id.js。服务器在收到对id.js的请求后,若id.js未缓存,处理的步骤为:

s1:检测http请求头中的if-none-match头,记为etagid;

s2:检测httpcookie中的uniq_id,记为cookieid;

s3:解析etagid和cookieid中的创建时间,选择较早的一个有效标识作为输出标识。用户标识的格式可自行定义。在本发明实施例中,采用20字节随机id+8字节unix时间戳+4字节crc32校验码组成,并使用base64编码输出。本发明保护的范围不局限于实施例。

s4:如果etagid和cookieid均不存在或格式不正确,则创建一个新的用户标识作为输出标识。

s5:设置cache-control、expires、etag、set-cookie和content-type的http响应头,

cache-control:private,max-age=31536000,

expires:monapr08202400:00:00gmt,

etag:"输出标识",

set-cookie:uniq_id=输出标识;expires=monapr08202400:00:00gmt;path=/;

content-type:text/javascript;charset=utf-8

其中expires是当前日期后延5年,“输出标识”为前面步骤中选择或创建的输出标识。id.js的服务器响应完成,该请求应该被浏览器缓存,同一浏览器下次对id.js的请求将不再发往服务器,而是直接使用被缓存的内容。

若id.js缓存,则直接从浏览器缓存返回;

浏览器继续请求ls_id.js并在页面上执行,ls_id.js执行的步骤为:

s1:读取localstorage中的uniq_id;其中,uniq_id:varlsid=window.localstorage.uniq_id;

s2:读取id.js中设置的用户标识:varcacheid=window.uniq_id;

s3:使用ajax请求方式,异步将lsid和cacheid发送到服务器,并在收到成功的返回后,将服务器返回的内容写入localstorage:window.localstorage.uniq_id="服务端处理程序返回的内容"。

ls_id.js对应的服务器应在接收到ls_id.js发出的ajax请求后,执行的步骤为:

s1:检测httpcookie中的uniq_id,记为cookieid;

s2:解析ls_id.js发来的cacheid和lsid,以及的cookieid,分别根据cacheid、lsid和cookieid的创建时间,选出所述创建时间最早的,作为“输出标识”;

s3:设置set-cookie、expires的httpcookie响应头;

set-cookie:uniq_id=输出标识;

expires=monapr08202400:00:00gmt;path=/;其中expires是当前日期后延5年,“输出标识”为前面步骤中选择或创建的输出标识;

s4:将所述输出标识作为http响应体输出。

通过本发明实施例1提出的一种web匿名用户识别、追踪方法,即可以服务器中判定的创建时间最早的用户标识作为此匿名web用户的唯一标识。一直以来使用cookie追踪用户时非常普遍的选择,近年来使用localstorage追踪用户也常见,但使用http缓存技术以js文件为载体实现用户标识的存储鲜有使用,本发明同时在用户标识中嵌入创建时间信息,以便在某处的用户标识丢失时进行分析合并。

对于本发明,从用户体验和移动端的原因放弃了canvas指纹技术,但若网站或应用对此不敏感,也可以加入canvas指纹甚至flash指纹,或其他标识保存方式。用户标识中可以加入创建时间的unix时间戳,也可以加入其他的识别类信息,校验码也可以使用crc32之外的其他算法如crc16或md5、sha等。id.js一旦被浏览器缓存就无法通过本系统主动修改,因此当发生4个标识中仅剩余localstorage未丢失时,系统会在http缓存中新建一个用户标识,导致http缓存标识与cookie和localstorage不一致。虽然这并不影响系统最终的判定,但此时若其他3个位置的用户标识丢失,系统会以新创建的http缓存标识为准,这就造成了用户标识的丢失。要解决这个问题,可以在服务端遇到此类不一致的标识时,记录http缓存的用户标识与正确用户标识的对应关系。当其他标识丢失时,再从对应关系里查询之前的标识即可恢复。这个场景理论上存在但实际情况比较罕见,如无特殊需求可以忽略。

基于本发明提出的一种web匿名用户识别、追踪方法,还提出了一种web匿名用户识别、追踪系统。如图2所示为基于本发明实施例1提出的一种web匿名用户识别、追踪系统结构示意图。该包括引入模块、第一请求处理模块和第二请求处理模块;

引入模块用于在要识别和追踪匿名web用户的网站或应用内的页面上,依次引入id.js和ls_id.js;

第一请求处理模块用于当请求访问页面时,请求id.js,若id.js未缓存,则服务器接收到id.js的请求后,检测etagid和cookieid,然后分别解析etagid和cookieid的创建时间,使用检测到的或者新建标识设置e-tag和缓存并以js语句返回;若id.js缓存,则直接从浏览器缓存返回;

第二请求处理模块用于当请求访问页面时,请求ls_id.js,服务器读取localstorage中id,服务器然后根据ls_id.js发送的lsid和cacheid的创建时间,作出判断,并返回判断结果,最后将判断结果写入localstorage。

其中,第一请求处理模块包括id.js未缓存处理模块和id.js缓存处理模块;

id.js未缓存处理模块用于若id.js未缓存,则服务器接收到id.js的请求后,检测etagid和cookieid,然后分别解析etagid和cookieid的创建时间,使用检测到的或者新建标识设置e-tag和缓存并以js语句返回;

id.js缓存处理模块用于若id.js缓存,则直接从浏览器缓存返回。

第二请求处理模块包括请求读取模块和判断模块;

请求读取模块用于当请求访问页面时,请求ls_id.js,服务器读取localstorage中id;

判断模块用于服务器根据ls_id.js发送的lsid和cacheid的创建时间,作出判断,并返回判断结果,最后将判断结果写入localstorage。

尽管说明书及附图和实施例对本发明创造已进行了详细的说明,但是,本领域技术人员应当理解,仍然可以对本发明创造进行修改或者等同替换;而一切不脱离本发明创造的精神和范围的技术方案及其改进,其均涵盖在本发明创造专利的保护范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1