首页 > 其他分享 >浏览器指纹修改指南2024 - 分析Geolocation API实现(十)

浏览器指纹修改指南2024 - 分析Geolocation API实现(十)

时间:2024-11-01 17:45:09浏览次数:6  
标签:Geolocation last being Member 2024 修改 API position Geoposition

geolocation.h文件中,可以找到一个私有成员

  Member<GeoNotifierSet> one_shots_;
  Member<GeolocationWatchers> watchers_;
  // GeoNotifiers that are in the middle of invocation.
  //
  // |HandleError(error)| and |MakeSuccessCallbacks| need to clear |one_shots_|
  // (and optionally |watchers_|) before invoking the callbacks, in order to
  // avoid clearing notifiers added by calls to Geolocation methods
  // from the callbacks. Thus, something else needs to make the notifiers being
  // invoked alive with wrapper-tracing because V8 GC may run during the
  // callbacks. |one_shots_being_invoked_| and |watchers_being_invoked_| perform
  // wrapper-tracing.
  // TODO(https://crbug.com/796145): Remove this hack once on-stack objects
  // get supported by either of wrapper-tracing or unified GC.
  Member<GeoNotifierSet> one_shots_being_invoked_;
  HeapVector<Member<GeoNotifier>> watchers_being_invoked_;
  Member<Geoposition> last_position_;

这个last_position_就是返回位置的关键对象,通过这个对象获取到最后一次的位置并返回。

我们去.cc文件中查看修改这个对象的部分

OnPositionUpdated函数中对这个成员变量进行了修改,修改的值是通过传进来的参数result来获得的,如果我们想要修改这个值,需要拦截更新的部分,把它变成我们自定义的值。

last_position的类型

如果我们想要修改这个值,首先要搞清楚这是一个什么类型,我们从.h中可以获取到

Member<Geoposition> last_position_;

last_position_是一个Member<Geoposition>类型的对象。

详细分析一下其中的语法:

  1. Member:
    • Member 是一个模板类,用于管理指向垃圾回收堆(heap)中对象的指针。它确保这些对象在不再使用时能够被正确地回收。
    • 例如,Member<Geoposition> 表示一个指向 Geoposition 对象的指针,并且这个指针由垃圾回收机制管理。
  2. Geoposition:
    • Geoposition 是一个类,通常用于表示地理位置信息,包括经度、纬度、高度等。
  3. last_position_ 变量:
    • last_position_ 是一个 Member<Geoposition> 类型的成员变量,表示最后一次记录的地理位置信息。

所以我们需要找到Geoposition类的定义及构造方法,这样才能自定义出来一个新的对象。

Geoposition类

打开相同目录下的geoposition.h,查看与构造有关的代码。

构造需要一个GeolocationCoordinates类型的指针与一个EpochTimeStamp类型的时间戳,EpochTimeStamp我们可以通过blink层的静态方法ConvertTimeToEpochTimeStamp与base库中的time.h中的方法获得。

blink::ConvertTimeToEpochTimeStamp(base::Time::Now());

这样就可以获得当前时间的EpochTimeStamp类型的时间戳。

GeolocationCoordinates类

我们去相同目录下的GeolocationCoordinates.h中查看其成员与构造方法。

可以看到它是由传入七个对应的数值来进行构造,其中有一些可选项。

具体的对应的含义如下

  // 纬度
  double latitude_;
  // 经度
  double longitude_;
  // 海拔,可选
  std::optional<double> altitude_;
  // 精度
  double accuracy_;
  // 海拔精度,可选
  std::optional<double> altitude_accuracy_;
  // 方向,可选
  std::optional<double> heading_;
  // 速度,可选
  std::optional<double> speed_;

结语

通过本文的详细分析,我们已经了解了如何在Chromium源码中找到并修改Geolocation API的返回值。我们探讨了last_position_变量的类型和作用,并深入分析了Geoposition类和GeolocationCoordinates类的构造方法。通过这些知识,我们可以自定义地理位置信息,从而实现修改浏览器指纹的目的。

在下一篇文章中,我们将继续深入探讨如何具体实现这些修改,并提供详细的代码示例和操作步骤,帮助读者更好地掌握这项技术。敬请期待!

标签:Geolocation,last,being,Member,2024,修改,API,position,Geoposition
From: https://blog.csdn.net/qqyy_sj/article/details/143290899

相关文章

  • NOIP2024 模拟赛 #12
    学长出的模拟赛,风格挺好。赛时8:00T1会了一个\(O(n^2\logn)\)的做法,先写一下,看看能不能过样例。8:20过了小样例,大样例跑得慢但是是对的。8:40发现一个好的做法,可以枚举\(c_i\)最小的那一天选了哪个,再枚举\(k\)天,这样纯枚举复杂度是\(O(k)\)的。但是有些细节不太......
  • 2024年大湾区杯数学建模竞赛 A 题 证券市场投资风险控制模型设计 思路和代码(持续更新)
    目录任务一:风险计量指标计算与分析1.1平均收益率计算1.2市场流动性(换手率)1.3市场情绪指标(波动率)指标的经济意义和分析任务二:系统性风险预测模型构建2.1多因子模型示例2.2使用GARCH模型预测波动性任务三:事前风控体系构建任务四:合理收益预期设定任务一:风险计量......
  • 2024年大湾区杯数学建模竞赛 B 题 粤港澳大湾区经济预测数学模型 思路和代码
    目录任务一2.数据预处理3.因子分析和主成分分析4.建立多元回归模型5.模型验证与筛选重要因素6.对未来5-10年的趋势预测示例代码代码解释任务二1.选择预测模型2.时间序列预测模型步骤3.多元回归模型预测4.代码示例5.结果分析与策略设计任务三1.选......
  • 2024 Nov
    Question1.[ARCY2021]E.PlanningRailroadDiscontinuation给定\(l\)张\(n\)个点\(m\)条边的图\(G_i(0\leqi<l)\),其中图\(G_i\)中连接\(u,v\)两个点的边的边权为\(w_{u,v}+b_i\)。在所有图中钦定\(r\)个点\(s_1,s_2,\cdots,s_r\),作为特殊点,其中点\(G......
  • Pycharm 2024安装包下载与安装
    PyCharm是一种PythonIDE(IntegratedDevelopmentEnvironment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具1、安装包  Pycharm2024:链接:https://pan.quark.cn/s/4b161663b678提取码:2Suz2、安装教程(以安装Pycharm2024为例)1)     ......
  • 2024年热门电脑监控软件,十大电脑监控软件推荐
    在数字化管理日益重要的今天,电脑监控软件成为许多企业提升效率和保护信息安全的重要工具。以下是2024年热门的十大电脑监控软件推荐,帮助您选择最适合的解决方案。1.固信软件 固信软件——一次性买断免费试用https://www.gooxion.com/功能简介固信软件是一款专为企业设......
  • RTX5/FreeRTOS全家桶源码工程综合实战模板集成CANopen组件(2024-10-30)
    【前言】之前的视频教程分享了两期CANopen的专题,配套的例子都是基于裸机的,为了方便大家在OS下使用,本期视频带OS下的支持。CANopen协议栈专题,实战方式系统了解NMT,PDO,SDO,时间戳,同步报文,紧急报文等(2023-10-17)https://www.armbbs.cn/forum.php?mod=viewthread&tid=121438CANopen......
  • 2024.10.7 模拟赛 多校3
    模拟赛水题场。T1colorful签。感觉题挺好,正难则反,找出四角都相同的。在这两排有6个四角相同的矩形对于两排来说,我们只需要记录相同的列的个数,然后能直接算出个数。发现桶排每次清空复杂度太高,考虑每次只开一排的桶,只会有\(n\)个。code#include<bits/stdc++.h>u......
  • 2024-11-1校内模拟赛总结
    前言:从下了早读一直打到吃午饭,\(4h\)左右的时间,\(IOI\)赛制,\(6\)道\(ABC203\)、\(204\)的\(CDE\)题,\(318\)分。赛时:T1:水,直接模拟即可。\(100\)分。T2:中位数二分答案,有点难,但之前写过,也是直接拿下了啊。100分。T3:也是模拟,但是我开\(map\)存的是\(pair<int,int>......
  • 2024.10.31 文件管理方案
      2024.10.31文件管理方案   文件管理方案(注意:红色文字为应用程序软件的名称) 金山文档请在使用微信扫码登录的金山文档中新建或导入需要长时间大量编辑、长期记录或者分享给他人和他人一起查看/编辑的文档或表格。WPS文档表格打开文件密码和7-ZIP解压缩密码......