微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

BigQuery SQL 用户代理检测

如何解决BigQuery SQL 用户代理检测

如何提取有关信息 设备类型 浏览器, 操作系统等。 从用户代理字符串为:

Mozilla/5.0 (Linux; Android 10; SM-A307G Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML,like Gecko) Version/4.0 Chrome/87.0.4280.141 Mobile Safari/537.36 Instagram 170.2.0.30.474 Android (29/10; 280dpi; 720x1423; samsung; SM-A307G; a30s; exynos7904; es_US; 267925733)

谢谢

解决方法

您可以使用此处概述的方法 - https://titanwolf.org/Network/Articles/Article?AID=2af15c50-e1cb-4ce1-b641-f7263e66ac8a#gsc.tab=0 - 将 JavaScript 用户代理解析库上传到 Google Cloud Storage。然后在 Google Cloud BigQuery 用户定义函数中引用它。

基于此,您可以 - 1. 将函数定义保存在 BigQuery 本身中,2. 使用它来解析更新的数据,使用视图,例如 SELECT [my-project.[my-dataset].[parse_user_agent]([user_agent_field]) FROM [my-project].[my-dataset].[my-table]。之后就可以从View中读取解析后的信息了。

我已经测试了这种方法并且它有效。

将 woothee.js 文件上传到 Google Cloud Storage 中的存储桶后,我在 Google Cloud BigQuery 中创建了该函数

CREATE OR REPLACE FUNCTION `[my-project].[my-dataset].user_agent_parse`(ua STRING)
 RETURNS STRUCT<category STRING,name STRING,version STRING,os STRING,vendor STRING,os_version STRING>
 LANGUAGE js AS """  return {category:woothee.parse(ua).category,name:woothee.parse(ua).name,version:woothee.parse(ua).version,os:woothee.parse(ua).os,vendor:woothee.parse(ua).vendor,os_version:woothee.parse(ua).os_version};
"""OPTIONS(library="gs://[my-bucket]/woothee.js");

唯一的担忧是,根据您的数量,每当您从视图中读取时,基本上重新解析所有用户代理可能会花费您很多。因此,您可能需要考虑按计划将解析后的数据存储在表中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。