我可以从用户的浏览器中了解到哪些意想不到的事情?
What unexpected things can I learn about a user from their browser?
我正在给一群高中生做演示,演示网页可以从他们的手机上告诉他们意想不到的事情——即使他们没有登录或其他什么。到目前为止,我选择了一些大多数人都知道的东西,比如:
设备操作系统
特定的手机(除非你用的是iPhone,否则只能用iPhone)
语言设置
和一些更模糊的东西:
Carrier(访问远程服务并返回JSONP,因为js是IP幼稚的)
电池电量/充电状态(直到今天我才知道你可以这样做)
你能想到其他类似的酷/恐怖的东西吗?我可以从UA/Navigator/等中挖掘出来?他们中的大多数都在Android或iOS上运行Chrome(幸运的是,并不是每个浏览器都支持电池)。主要的活动是关于移动安全和网络钓鱼,所以我想坚持用手机。
快速编辑:为了清楚起见,我正在建立一个他们会去的网站,这个网站将实际演示这些功能-所以不幸的是,他们需要实现,至少在Chrome中,而不是计划/草案。
你应该提到地理位置。一个有能力的javascript库,例如MaxMind或Google Analytics,可以用来精确定位用户的地理位置。
从钓鱼的角度来看,我认为这是最重要的,有几个危险的事情:
钓鱼
- 如果没有附加组件,浏览器通常不会在你访问的地址中有一个字母不同时警告你。即使URL方案禁止零宽度字符和其他Unicode字符,您仍然可以监督
l
(小写L),1
(one),I
(大写I).也有许多Unicode字符看起来像正常字母。也许unicode字符有黑名单,比如希腊字母。检查这个网站来玩。您可以尝试创建一些域名,如stackoverflow.com与希腊ο
。 -
JavaScript可以在域名后修改URL 。但我已经很多年没见过给用户命名文件夹的主机了。尽管如此,看到URL改变而不重新加载还是令人毛骨悚然的:
window.history.pushState("object or string", "Title", "/new-url");
- 不确定这是否适用,但去年HackADay.com透露了一个黑客,你可以在鼠标按钮按下链接后改变
<a>
href,有效地改变目标URL。但是,你也可以使用javascript重定向浏览器…
为此,我要做的第一件事是在MDN上检查
Window
和Document
。这绝对会揭示一些很酷的东西,让电池电量信息只是微不足道的可怕尝试:- 窗口:
- 窗口。Ondevicemotion——做它所建议的。假设您也可以
Window.addEventListener("devicemotion", ...)
-
Window.ondevicelight
-这是非常令人毛骨悚然的,但Firefox只有 - 窗口。ondeviceorientation -为设备移动提供更多广泛支持的事件。想要近似你的用户走过的路径并在画布上画出来吗?或者做一个应用程序,尖叫着"放下国王手机。"直到他们把它放在桌子上?"
- 还有,有上百万的方法来获取各种屏幕属性。其中一些被用来猜测操作系统版本,因为不同的操作系统有不同的菜单栏占用不同的屏幕部分。
- 窗口。Ondevicemotion——做它所建议的。假设您也可以
文档:
-
document.referrer
-想要跟踪你的用户吗? 您可以通过创建元素来检测广告拦截插件的存在:
<div id="advertisment" class="ad advertisment ads banner" style="pointer-events: none;position: absolute; opacity: 0;">NOTHING </div>
获取
.getBoundingClientRect()
并断言非零维度。-
- 您可以检测文档何时被firebug检查。(或者在过去,当firebug实际上在DOM中添加元素以突出显示节点时,您可以这样做)。这些元素在Firebug中是不可见的,但会触发DOM突变事件。
- 窗口:
- 用户确认后,可以录制声音和视频
- 我曾经创建了一个脚本,能够流所有的DOM突变在服务器上允许我观看其他用户使用网站实时。但不幸的是我没有完成到生产状态。但是这就是我如何发现firebug问题的。 还有其他的技巧来检查调试工具是否正在运行。这些通常是各种各样的黑客,尝试谷歌一些东西。
- 曾经想知道如果你的用户有CORS启用 localhost HTTP服务器运行?我是说,难道不值得一试吗?
-
WebWorkers
允许您在客户端机器上生成线程。您可以将其用于分布式处理或仅用于燃烧其电池。因为它不会直接影响GUI线程,他们不会注意到,直到为时已晚。此外,这听起来像一个伟大的方式来产生口令破解和破解证书。 - 您可以更改复制的文本,可能添加跨站点脚本hack到它。好的技巧是用一堆空格来抵消你的脚本,这样在没有文本换行的典型文本编辑器中就看不到了。
- 使用桌面通知,你可以假装你是防病毒,windows更新…
这些呢…
- 你可以根据搜索历史来分析他们的兴趣。
- 他们访问的频率和地点。
- 建立他们访问的时间配置文件。
- 现场时间
- 用户在哪些页面上花费的时间最多。
- 基于热点区域的页面点击或鼠标光标所在位置的配置文件。 您可以配置典型的用户行为。
所有这些的结果是-推动数据个性化营销,即你所看到的是有针对性的你,作为一个个体(谷歌在他们的广告中经常这样做)
- 正在将数据主题添加到所有项目
- ZeroClipboard-在复制之前添加到值
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 使用javascript将动态表从一个html页面打印到另一个html页
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 了解代码如何从前端流到后端
- 在 Safari 上调试功能,以了解何时将元素添加到页面
- 了解用户是否连接到确定的wifi一段时间
- 拖动按钮可导航到下一页,了解如何编写代码
- 了解angular.copy()在1.0.7到1.2.26之间的变化
- 将零移动到数组的末尾,了解如何不返回任何内容
- 我可以从用户的浏览器中了解到哪些意想不到的事情?
- 了解如何在React中获取数据.从后端到前端
- Magento最后的“了解更多”并“添加到cart"”按钮在Firefox中不起作用
- 意想不到的token新,找不到答案
- 需要了解Web进程背后的过程与HTML, PHP, Javascript,通过现有的HTML按钮到PHP函数问题
- 试图了解如何将回调合并到Node.js/SQLITE中
- 深入了解如何将两个表单字段提交到两页之外的单独页面
- 了解数字到字符串(基数)意外的标记异常