Google 杀死 URL 的第一步

Google Chrome团队计划简化URL以增强Web安全性和确保网站身份的完整性,同时方便用户分享链接。这一举措旨在防止钓鱼攻击,利用名为TrickURI的开源工具检查URL准确性,对潜在的钓鱼URL发出警告。

640?wx_fmt=gif

“关键挑战是避免将合法域名标记为可疑域名。” —— Chrome 可用性安全团队负责人 Emily Stark

640?wx_fmt=jpeg

去年 9 月,Google Chrome 团队透露了受争议的“杀死” URL 的计划。URL 是 Uniform Resource Locator(统一资源定位符)的缩写,用户无需记住复杂的 IP 地址而只需要记住域名就能访问一个网站。但随着 Web 功能的扩展,组成网址的字符串日益复杂和难以理解。

640?wx_fmt=png

Google Chrome 团队设想在增强 Web 安全和确保网站身份完整性的同时为用户分享链接提供方便。Chrome 可用性安全团队负责人 Emily Stark 在湾区 Enigma 安全会议上谈论了搜索巨人杀死网址的第一步。

Stark 强调,Google 没有试图在消除 URL 的同时引发混乱,相反它想要让黑客更难利用用户对网站身份的混淆。目前复杂的 URL 让黑客可以进行钓鱼或其它欺骗性攻击,例如攻击者可以设计出与真实网站相似的恶意网页,使得受害者不会注意到他们访问的是 G00gle 而不是 Google。Chrome 团队当前的重心正是在防钓鱼攻击上,其基础是名叫 TrickURI 的开源工具,它可以检查 URL 是否准确和一致,对潜在的钓鱼 URL 向用户发出警告。

640?wx_fmt=jpeg

对于 Google 用户来说,防范网络钓鱼和其他在线诈骗的第一道防线仍然是该 Google 的安全浏览平台。而 Chrome 团队目前也正在探索和完善安全浏览平台,特别是针对容易导致用户上当受骗的 URL。

其实 Chrome 团队一直在考虑网址安全问题,2014 年,Chrome 尝试了一种称为 origin chip 的格式化功能,该功能仅显示网站的主域名,以帮助用户明确他们实际浏览的是哪个域。该实验获得了一些人的支持,因为它使得网络身份更加直观,但也遭到了另外一些人的批评,后来项目夭折。Chrome 工程总监 Parisa Tabriz 指出,这就是当你要变革一个老古董的时候将面临的——人们不允许你去变革。

同样的,Chrome 在 HTTPS 的推广计划中也遭到了不少阻力,人们觉得 Google 太激进了。“所以无论我们在这里做什么,我都知道它会引起争议,我们的 URL 改造计划还有很长的路要走”,Chrome 的工程经理 Adrienne Porter Felt 表示。

声明:本文经授权转自开源中国,作者局长。

 热 文 推 荐 

☞ 微信再次“杠上”支付宝!|畅言

☞ 嘘,iPhone 正在监听你!

☞ 加密货币的寒冬如何破冰?

☞ 便利蜂“高数裁员”开天下先河!

☞ AI,被“横扫记录”反噬?

☞ 绑定1亿用户,15分钟众筹完毕,BitTorrent能否重生

☞ Gartner预测2019年全球IT支出将达到3.8万亿美元

☞ 嫁人当嫁程序员


 

print_r('点个好看吧!');
var_dump('点个好看吧!');
NSLog(@"点个好看吧!");
System.out.println("点个好看吧!");
console.log("点个好看吧!");
print("点个好看吧!");
printf("点个好看吧!");
cout << "点个好看吧!" << endl;
Console.WriteLine("点个好看吧!");
fmt.Println("点个好看吧!");
Response.Write("点个好看吧!");
alert("点个好看吧!")
echo "点个好看吧!"

640?wx_fmt=gif点击“阅读原文”,打开 优快云 App 阅读更贴心!

640?wx_fmt=png 喜欢就点击“好看”吧!
<think> 我们正在处理用户的问题:“如何将安卓手机作为GPS共享器使用”。根据引用内容,我们需要结合GPS硬件初始化、数据捕获与传输(引用1),同时考虑权限管理与隐私保护(引用2、3)。 核心思路:将安卓手机变成GPS共享器,本质是让手机通过某种方式(如网络或蓝牙)将其获取的GPS位置数据实时传输给其他设备使用。这通常需要两个关键部分: 1. 在安卓设备上获取并处理GPS数据。 2. 建立数据传输通道(如WiFi热点、蓝牙或网络服务器)将GPS数据共享出去。 步骤分解: 第一步:获取GPS位置数据 - 需要权限:在AndroidManifest.xml中声明位置权限(例如ACCESS_FINE_LOCATION),并在运行时请求(引用3)。 - 使用LocationManager或FusedLocationProviderClient(Google Play服务)来获取位置更新。 第二步:建立数据共享机制 - 将获取到的位置数据(经纬度、速度、精度等)通过某种方式发送出去。常见方式: 1. 模拟NMEA输出:通过蓝牙串口或网络TCP/UDP发送NMEA语句(标准GPS数据格式)。 2. 创建HTTP服务:在手机端搭建一个简单的HTTP服务器,其他设备通过访问特定URL获取实时位置(JSON格式等)。 第三步:考虑后台运行和功耗优化(引用2提到电池效率优化) - 使用前台服务(Foreground Service)来确保在后台持续获取和发送位置数据。 - 注意:长时间使用GPS会消耗大量电量,需在用户知情同意下使用。 第四步:隐私与安全(引用2、3) - 明确告知用户数据共享的目的,并获取同意。 - 在共享数据时,考虑对接收端进行认证(如设置密码),避免位置信息被未授权方获取。 具体实现方案(两种常见方式): 方案一:通过蓝牙共享(模拟蓝牙GPS接收器) 1. 在手机上启用蓝牙并设置为可被发现。 2. 将获取的GPS数据封装成NMEA语句(例如$GPGGA, $GPRMC等)。 3. 通过蓝牙串口协议(SPP)模拟一个串行端口,其他设备(如另一部手机、导航仪或电脑)可以通过配对并连接该串口来获取GPS数据。 方案二:通过网络共享(WiFi热点或局域网) 1. 手机创建热点或连接到同一局域网。 2. 在手机上运行一个简单的TCP/UDP服务器或HTTP服务器。 - TCP/UDP服务器:持续发送NMEA数据流到指定端口,客户端连接该IP和端口即可接收。 - HTTP服务器:提供RESTful接口,客户端通过GET请求获取当前位置(如返回JSON:`{"lat": 39.9042, "lng": 116.4074}`)。 代码示例(简化版,使用HTTP服务器): - 使用Android的LocationManager获取位置更新。 - 使用NanoHTTPD等轻量级库创建HTTP服务器。 注意:由于Android系统限制,后台服务需要正确配置(如使用前台服务并发送通知),且在高版本系统中需要处理后台位置访问限制。 实现步骤代码概览: 1. 权限申请(Manifest中声明并动态申请): ```xml <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" /> <!-- 如果使用前台服务,还需要 --> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> ``` 2. 创建位置服务(使用FusedLocationProviderClient): ```java // 初始化 FusedLocationProviderClient locationClient = LocationServices.getFusedLocationProviderClient(this); // 创建位置请求 LocationRequest locationRequest = LocationRequest.create(); locationRequest.setInterval(1000); // 更新间隔 locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); // 请求位置更新 locationClient.requestLocationUpdates(locationRequest, locationCallback, null); ``` 3. 在位置回调中获取位置: ```java private LocationCallback locationCallback = new LocationCallback() { @Override public void onLocationResult(LocationResult locationResult) { Location location = locationResult.getLastLocation(); if (location != null) { double lat = location.getLatitude(); double lng = location.getLongitude(); // 更新到HTTP服务器,以便外部访问 MyHttpServer.updateLocation(lat, lng); } } }; ``` 4. 创建HTTP服务器(使用NanoHTTPD): ```java public class MyHttpServer extends NanoHTTPD { private static LocationData currentLocation; // 存储当前位置 public MyHttpServer(int port) { super(port); } @Override public Response serve(IHTTPSession session) { // 只处理GET请求 if (session.getMethod() == Method.GET) { // 假设访问路径为 "/location" if (session.getUri().equals("/location")) { // 返回当前位置的JSON String json = String.format("{\"lat\": %f, \"lng\": %f}", currentLocation.lat, currentLocation.lng); return newFixedLengthResponse(Response.Status.OK, "application/json", json); } } return newFixedLengthResponse(Response.Status.NOT_FOUND, MIME_PLAINTEXT, "Not Found"); } public static void updateLocation(double lat, double lng) { currentLocation = new LocationData(lat, lng); } } ``` 5. 在后台服务中启动HTTP服务器和位置更新(注意在服务中管理生命周期)。 注意事项: - 需要处理网络权限和后台位置权限(Android 10及以上需要额外处理)。 - 需要启动一个前台服务来保持应用在后台运行(避免系统杀死进程)。 - 共享GPS数据时,确保用户知晓并同意。 以上是实现的基本框架。用户可以根据具体需求选择共享方式(蓝牙或网络)。此外,市场上已有一些应用(如“GPS over BT”或“Share GPS”)实现了类似功能,用户也可以直接使用。 相关问题: 1. 如何降低GPS共享时的电池消耗? 2. 在Android高版本(如Android 12)中,后台位置访问有哪些限制?如何适配? 3. 如何通过蓝牙将安卓手机的GPS位置共享给其他设备? </think> 要将安卓手机作为GPS共享器使用(即共享手机的GPS位置给其他设备),可以通过以下步骤实现,涉及软件配置和权限管理: --- ### 一、核心实现原理 1. **定位数据获取** 手机通过GPS模块获取实时位置(经纬度、海拔、速度等),需启动硬件并解析卫星信号[^1]。 2. **数据共享通道** 将位置数据通过无线方式(如WiFi热点、蓝牙或HTTP服务器)传输给其他设备。 --- ### 二、具体操作步骤 #### 方法1:使用专用APP(推荐) 1. **安装共享工具** 下载支持GPS共享的APP(如: - [GPS over BT](https://play.google.com/store/apps/details?id=googoo.android.gps2bluetooth)(蓝牙共享) - [Share GPS](https://play.google.com/store/apps/details?id=com.androchef.sharegps)(网络共享) - [GPS2IP](https://play.google.com/store/apps/details?id=com.rcs.mobile)(TCP/IP协议) 2. **配置权限与设置** - 授予APP**精确位置权限**(`ACCESS_FINE_LOCATION`)[^3] - 开启手机**GPS定位**和**数据共享功能** - 选择共享协议(如NMEA over TCP/UDP) 3. **连接接收设备** - **电脑/平板**:通过IP地址+端口连接(如`192.168.x.x:5000`) - **其他手机**:配对蓝牙或加入同一WiFi网络 --- #### 方法2:手动搭建HTTP服务器(开发者向) 1. 使用`LocationManager`获取位置: ```java LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, location -> { double lat = location.getLatitude(); double lng = location.getLongitude(); // 将数据发送至HTTP服务 }); ``` 2. 通过轻量级HTTP库(如[NanoHTTPD](https://github.com/NanoHttpd/nanohttpd))创建位置API: ```java public class GPServer extends NanoHTTPD { private Location currentLocation; public Response serve(IHTTPSession session) { return newFixedLengthResponse( "{\"lat\":" + currentLocation.getLatitude() + ",\"lng\":" + currentLocation.getLongitude() + "}" ); } } ``` 3. 接收端通过访问`http://手机IP:8080`获取JSON格式位置数据。 --- ### 三、关键注意事项 1. **权限与隐私** - Android 10+需动态申请后台定位权限[^3] - 明确告知用户位置共享用途(隐私合规要求)[^2] 2. **电量优化** - 使用`FusedLocationProviderClient`降低功耗 - 设置合理的定位频率(避免持续高精度) 3. **网络配置** - 确保手机与接收设备在同一局域网 - 防火墙开放对应端口(默认5000/8080) > ⚠️ 持续共享GPS可能导致手机发热和电量快速消耗,建议连接充电器使用。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值