https://www.landiannews.com/archives/69081.html
https://www.zdnet.com/article/google-to-phase-out-user-agent-strings-in-chrome/Mozilla 关于如何识别设备类型的方案中,并不推荐使用 UA,而是建议去测试希望使用的功能是否可用,否则使用备选方案。
搜了下 stackoverflow 上关于不用 ua 的方案,基本上无非就是检测窗口大小,个人认为这样更蠢…
而且假设有这么一个场景:当你要判断跳转电脑支付网关还是拉起手机支付宝的时候,怎么办?先测试拉起看看是否保持焦点?
各位 V 友有什么更好的方案么?
1 bakabie 2020-01-16 19:55:49 +08:00 立刻使用 Edge (逃 |
2 ljpCN 2020-01-16 19:58:23 +08:00 via Android 浏览器可以像小程序一样提供一个 caniuse 的接口[doge] |
![]() | 3 antileech 2020-01-16 20:07:30 +08:00 via Android ![]() 专治百度手机版强行 app 跳转 |
![]() | 4 huluhulu 2020-01-16 20:45:49 +08:00 via iPhone ![]() 屠龙者成为了恶龙… |
![]() | 5 loading 2020-01-16 21:09:26 +08:00 via Android ![]() 作为用户:说实话,浏览器不应该告诉服务器我用的究竟是什么操作系统还有浏览器版本,这个其实是隐私。 开发者: wtf! |
![]() | 6 heixiaobai 2020-01-16 21:12:00 +08:00 via Android 使用一个不发送 UA 的浏览器,差不多意味着世界上一大堆靠 UA 自适配的网站失效了吧 |
![]() | 7 imn1 2020-01-16 21:16:22 +08:00 ![]() 同意#5 例如支付方式,应该用户选择,而不是主动拉起 但是我觉得,这个主张会被口水淹没,大多数人宁愿要方便、自动,而不是选择权,反正大部分人从小到大都习惯了“不知道候选项是什么就选择了” |
![]() | 8 anguiao 2020-01-16 21:17:18 +08:00 ![]() 现在一堆网站根据 UA 来判定移动端,然后强行让你下载 app。 |
9 wangkun025 2020-01-16 21:18:31 +08:00 呗,还能怎么办 |
10 walpurgis 2020-01-16 21:24:44 +08:00 via Android 检测窗口大小本质也算功能检测一种,没啥问题吧 |
![]() | 11 ClericPy 2020-01-16 21:27:30 +08:00 ![]() 第一反应想起那些: 使用 App 阅读全文的场景... |
12 hubqin 2020-01-16 21:29:41 +08:00 via Android 开发者应该反过来让用户自行选择当前的浏览设备是在手机端还是 PC 端。 |
13 billlee 2020-01-16 22:41:17 +08:00 把电脑支付网关的网址和 app 注册的 pattern 设置成一样就好了,就像 google 的那些 app 一样 |
![]() | 14 Livid MOD PRO |
![]() | 15 id7368 PRO 这有点操蛋了 |
![]() | 16 efsg 2020-01-17 00:24:17 +08:00 via Android 别黑过头了,这回终于干了件事 |
![]() | 17 yyfearth 2020-01-17 03:53:58 +08:00 @Archeb 对于自适应 web 本来就应该通过网页窗口的大小来觉得这么排版啊 一般就用 @media screen 对于手机或者平板要对触摸优化的话 要看是否支持触摸 css 可以用 @media pointer 之类的判断 而不仅仅看屏幕大小 对于 Chrome 等新浏览器 大部分需要通过 UA 判断的 基本上对于通过 css 或者 js 的 API 来判断 比较有名就是 Livid 提到的 modernizr 通过 UA 判断功能本来就不准 如果仅仅用来判断是否是移动端 Chrome 并没有禁止服务器读取 UA 而前端仍然可以读 UA 只是有 warning 罢了 不读用我上面说的方法前端也可以工作 @antileech @anguiao 其实并没办法彻底解决这个问题 因为根据 Chrome 的文章 UA 还是可以区分桌面和移动端 这个主要应该是考虑到服务器端可能会根据 UA 做不同的跳转 但是桌面端之间没办法区分系统和版本 移动端也一样 |
![]() | 18 yyfearth 2020-01-17 03:55:37 +08:00 @Livid modernizr 我记得也是会用 UA 的 所以 body 上面可以有 ie webkit 这种的 class 但是大部分 feature detection 是直接用 js 或者 css 做到的 |
![]() | 19 iamwho 2020-01-17 05:21:38 +08:00 因为这是国内互联网企业的一个笑话,网页本应适配各分辨率。 |
20 Dragonish3600 2020-01-17 05:37:11 +08:00 via iPhone 我个人觉得,google 这个决定的起因是 edge 现在直接使用 chrome 的 ua,导致不好下手使绊子。于是我干脆取消,看你怎么伪装 |
22 Dragonish3600 2020-01-17 07:55:33 +08:00 via iPhone @iamwho 你除了人身攻击,脑子在哪里? |
23 kx5d62Jn1J9MjoXP 2020-01-17 08:08:06 +08:00 via Android 20 楼 太有说相声的天赋了 |
![]() | 24 love4taylor PRO @ladypxy 那这就是被迫害妄想症了。 |
![]() | 25 GG668v26Fd55CP5W 2020-01-17 08:18:52 +08:00 via iPhone @ladypxy 您想多了 |
![]() | 26 murmur 2020-01-17 08:32:01 +08:00 有 ua 的是 chrome,没 ua 的就是 safari,反正 edge 也是 chrome |
![]() | 27 murmur 2020-01-17 08:32:11 +08:00 说反了 |
![]() | 28 passerbytiny 2020-01-17 08:46:50 +08:00 那么,如果我就是像让人知道我用得就是 win10 不是 win7 呢,我连个开启 UA 的开关都没有。Chrome 最大的问题不是它要干什么,而是它不让用户干什么。 Firefox 保平安。 |
![]() | 29 iamwho 2020-01-17 10:14:40 +08:00 ![]() @ladypxy #22 Apple (Safari), Microsoft (Edge), and Mozilla (Firefox) have also expressed support for Google's proposal to freeze and phase out the user-agent string, but have not announced detailed plans at the time of writing. 没脑子就多用眼睛。 |
![]() | 30 Torpedo 2020-01-17 10:26:15 +08:00 ![]() ua 可不止判断是不是移动端还是 pc。说布局的,移动端和 pc 本就是两套代码。win 和 ios 都想搞一套 ui 多端,不都失败了。 手机端本身很多浏览器也能改 ua。 而且 ua 还能判断兼容性。这些浏览器,一堆各自平台的 bug,不根据 ua 做特殊处理吗? 你装个 app,即使你不开权限,它也能获取你系统各种版本信息 |
![]() | 31 wxt2005 2020-01-17 10:37:01 +08:00 ![]() 蓝点网:“按谷歌说明该公司的最终目的是阻止所有网站或服务识别用户使用的操作系统、浏览器版本、具体的设备型号等。最终结果是谷歌浏览器只会给网站发送用户代理字符串片段,此片段不能用于识别是电脑还是手机以及其版本等。” ZDNet: "Websites will be able to tell that a user is running Chrome, and if they're on a desktop or mobile device, but that's about it." hmm? |
![]() | 32 wxt2005 2020-01-17 10:45:21 +08:00 顺便各位可以去看看[User-Agent Client Hints]( https://wicg.github.io/ua-client-hints/),并不是说现在的 UA 废弃了之后就没办法知道用户的平台信息了,只是你需要显式地去请求(当然我猜,根据用户的隐私设置,浏览器也可以选择不返回给你)。 |
![]() | 33 rogwan 2020-01-17 10:52:08 +08:00 via iPhone 要是 Safari 也没有 UA 更麻烦,很多只有 Safari 支持的特性,就没法判断了 |
![]() | 34 libook 2020-01-17 11:01:26 +08:00 个人一直都觉得 UA 不可靠,支持使用可靠、安全的方式来检测兼容性,不过浏览器厂商有点不尊重开发者。 |
35 Dragonish3600 2020-01-17 11:39:39 +08:00 @iamwho 你依然没有展现出你的脑子在哪里,复制粘贴就是脑子? google 任何动作都是有利益的。Google is killing UA as a scapegoat to promote an actual tracking technology built right into their browser, which will target the user locally and tell the whole world about the user's interests. |
![]() | 36 a719114136 2020-01-17 11:52:41 +08:00 via Android 弃前端,保平安 |
![]() | 37 hoyixi 2020-01-17 12:21:05 +08:00 挺好的,啥时候连操作系统之类也去掉更好。就说网站吧,你展示内容就行了,有交互,JS 不就行了,何必要知道我用啥浏览器。 |
38 Archeb OP @yyfearth 只是 UI 元素的话靠 media query 我觉得足够了,但是我帖子中讲到的那个场景要判断的就是“是手机还是电脑”,而不是判断应该用手机版还是电脑版。 |
40 Dragonish3600 2020-01-17 13:58:42 +08:00 via iPhone @iamwho 1,看不懂英文最好闭嘴。google 并不随机 UA,而是用 The long-term plan is to unify all Chrome UA strings into generic values that don't reveal too much information about a user. 2,google 在 youtube 上就是使用 UA 进行识别,监测到 edge 会恶意加载降低性能的代码。你连这个都不知道又发表什么意见么? 没脑子的人就是没脑子,只会乱喷。 |
41 wangxiaoaer 2020-01-17 14:02:40 +08:00 @ladypxy #20 这个逻辑有问题吧。 Google 如果只能依靠 UA 识别自家浏览器,那么他把 UA 取消又有什么意义? Google 如果可以依靠 UA 之外的手段识别,那么他把 UA 取消又有什么意义? |
![]() | 42 iamwho 2020-01-17 14:28:26 +08:00 @ladypxy #40 看不懂中文就别回了把, 我说 UA 不影响 Google 或者其它企业 Tracking 用户,你在这扯什么? youtube 在 edge 的性能问题和 UA 更没有关系,而是因为旧版 edge 不支持 shadow DOM。 |
![]() | 43 ClarkAbe 2020-01-17 14:47:13 +08:00 via Android 使用 UA 可以用来统计用户流量啊......为营销分析提供数据...又不是仅仅用来兼容你的设备.... |
![]() | 44 learningman 2020-01-17 19:17:56 +08:00 @ClarkAbe 这个是企业的用途,和用户没啥关系。。。 |
45 charlie21 2020-02-10 01:25:37 +08:00 via iPhone |
46 Dogod37 2021-09-09 22:00:19 +08:00 |