找回密码
 立即注册
搜索
楼主: normanzb

[软件] IE这婊子怎么又开始userAgent spoof了

[复制链接]
     
发表于 2014-1-16 16:47 | 显示全部楼层
normanzb 发表于 2014-1-16 16:01
feature detection是不错,但也不是万能灵药,一些情况你没法在运行之前detect:

1. bug随机出现,或者和 ...

bug确实每个浏览器都有。比如我之前就遇到过chrome一个元素position:fixed,但拉滚动条时它的border不跟着一起动。
不过边写边测试一般是可以变通绕过吧。
我自己是不太写前台的,所以倒是没遇到过一定要用ua才能解决的情况。

可能它确实在有些时候能临时起点辅助作用,但它并不可靠,也不易于维护。前面有位同学提到的,网上有很多用ua的垃圾代码,那些你抄我我抄你的代码都是例子,可以去看看,看了让人看了想吐。
整个依赖ua的程序肯定不能算是健壮的程序。

另外ie9开始,win7开着自动更新现在都自动升11了。
举个大家都很熟悉的例子,webkit你还会判断版本是不是高于525,去照顾它老版本不支持DOMContentLoaded吗?如果不会,那干嘛盯着ie9呢。
回复

使用道具 举报

 楼主| 发表于 2014-1-16 17:08 | 显示全部楼层
uroko 发表于 2014-1-16 16:47
bug确实每个浏览器都有。比如我之前就遇到过chrome一个元素position:fixed,但拉滚动条时它的border不跟 ...

举IE9的一些例子,只是说feature detect不是你想象的那样,很多时候浏览器声称支持并不真的支持。就连最新的CHROME浏览器都有一些rendering和GC上的小bug,更不要说IE了。

多做点前端开发你就知道了,大道理谁都会讲,我也知道少用ua sniffing。

支持不支持IE9,这个我们是有用户数据的,很多用户还在用就必须支持。
回复

使用道具 举报

     
发表于 2014-1-16 17:26 | 显示全部楼层
好吧,看来你很注重用户体验,各种bug一一撞上然后针对各种浏览器一一用ua判断打补丁。
但却连找个新的正则都不愿意一定要用jquery1.4,完全无法理解:(

MSIE 9.0的比例,我看了下数据库,倒确实还不少,抓10w条访问日志,发现pc客户端里ie9占6.7%。这个是我想当然了。
回复

使用道具 举报

     
发表于 2014-1-16 18:58 | 显示全部楼层
uroko 发表于 2014-1-16 17:26
好吧,看来你很注重用户体验,各种bug一一撞上然后针对各种浏览器一一用ua判断打补丁。
但却连找个新的正则 ...

直接把jq1.4升级到最新的版本工作量更大。
回复

使用道具 举报

发表于 2014-1-16 19:54 | 显示全部楼层
实际上微软做的对,IE11删除了 ”MSIE“ 正是为了标准化,将IE6、7和8那些糟糕的CSS Hack给舍弃掉。
微软早就应该解决这些遗留问题。

LZ可以给自己的jquery打Patch,通过标识Trident应该不麻烦。
或许对于LZ的项目来说是短痛,但是实际上微软在IE11所做的标准化是长远有益的。
前端开发就应该向努力不区别浏览器进发。
回复

使用道具 举报

     
发表于 2014-1-16 22:06 | 显示全部楼层
shahito 发表于 2014-1-16 19:54
实际上微软做的对,IE11删除了 ”MSIE“ 正是为了标准化,将IE6、7和8那些糟糕的CSS Hack给舍弃掉。
微软早 ...

前端开发就应该向努力不区别浏览器进发。

这句好。
回复

使用道具 举报

 楼主| 发表于 2014-1-17 07:24 | 显示全部楼层
uroko 发表于 2014-1-16 17:26
好吧,看来你很注重用户体验,各种bug一一撞上然后针对各种浏览器一一用ua判断打补丁。
但却连找个新的正则 ...

我上面哪句说不愿意改了?

这理解能力实在是不能理解。
回复

使用道具 举报

 楼主| 发表于 2014-1-17 07:35 | 显示全部楼层
shahito 发表于 2014-1-16 19:54
实际上微软做的对,IE11删除了 ”MSIE“ 正是为了标准化,将IE6、7和8那些糟糕的CSS Hack给舍弃掉。
微软早 ...

chrome这么标准化它删了”chrome“了吗?
firefox比IE标准多了它删了”firefox“么?

user agent本来就是标准的一部分,你一边自己说要兼容标准,一边忽略user agent这个标准的一部分……

精分?


http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
http://www.w3.org/2005/MWI/BPWG/techs/User-Agent_String.html
回复

使用道具 举报

头像被屏蔽
发表于 2014-1-17 07:59 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽
回复

使用道具 举报

发表于 2014-1-17 09:12 | 显示全部楼层
shahito 发表于 2014-1-16 19:54
实际上微软做的对,IE11删除了 ”MSIE“ 正是为了标准化,将IE6、7和8那些糟糕的CSS Hack给舍弃掉。
微软早 ...

虽然标准化的目标是无视浏览器厂牌和版本,但是实际操作上标准化究竟是否实际上是长远有利的颇为值得怀疑。

回复

使用道具 举报

     
发表于 2014-1-17 11:14 | 显示全部楼层
normanzb 发表于 2014-1-16 11:21
要认IE,技术上都有办法解决,但是这些都叫做擦屁股,我上来,就是婊一婊微软,干这种鸟事,让别人帮他擦 ...

你还要婊一婊微软不再支持DOS程序了如何?
时代在变化,也不想想你用多老的库了
回复

使用道具 举报

 楼主| 发表于 2014-1-17 14:47 | 显示全部楼层
本帖最后由 normanzb 于 2014-1-17 14:50 编辑
不要叫水狗做主人 发表于 2014-1-17 11:14
你还要婊一婊微软不再支持DOS程序了如何?
时代在变化,也不想想你用多老的库了 ...

你过脑子了吗?一句时代在变化就什么道理都不讲了?

时代是在变,但改变也要讲道理,按规定来。
本来firefox useragent难以判断就是微软干的好事,导致jquery写出那种逻辑,现在微软不守规矩又瞎改useragent导致别人出错还有道理了?

下次你妈被人强奸了
”时代在变化,也不想想你妈多老了“这样?
回复

使用道具 举报

发表于 2014-1-17 20:56 | 显示全部楼层
标准的浏览器检测是怎么做的?
回复

使用道具 举报

     
发表于 2014-1-18 09:45 | 显示全部楼层
normanzb 发表于 2014-1-17 14:47
你过脑子了吗?一句时代在变化就什么道理都不讲了?

时代是在变,但改变也要讲道理,按规定来。

你去跟乔老爷讲讲,让他iPhone改变分步来,先上大屏塞班,再来多点触控,再来iOS,再来正面单按键,etc

这里是UA的道理和规矩,选自RFC2616,请问微软违反了这里的哪一条?
14.43 User-Agent

   The User-Agent request-header field contains information about the
   user agent originating the request. This is for statistical purposes,
   the tracing of protocol violations, and automated recognition of user
   agents for the sake of tailoring responses to avoid particular user
   agent limitations. User agents SHOULD include this field with
   requests. The field can contain multiple product tokens (section 3.8)
   and comments identifying the agent and any subproducts which form a
   significant part of the user agent. By convention, the product tokens
   are listed in order of their significance for identifying the
   application.

       User-Agent     = "User-Agent" ":" 1*( product | comment )

   Example:

       User-Agent: CERN-LineMode/2.15 libwww/2.17b3
回复

使用道具 举报

发表于 2014-1-18 11:32 | 显示全部楼层
我一直不明白lz的逻辑的地方就是:

分明是因为ff的bug导致楼主被迫写代码搞workaround,结果这个workaround导致ie11上网页无法正常显示。
听起来好似没有workaround,ie11就能正常显示并实现相关的功能。
那么难道应该喷的不是ff有bug不修,人家ie11都能正常用了,它版本飙得比飞机还快,bug照样存在么?

退一万步讲,楼主workaround都搞了,ie11改ua,改一行正则就解决的识别问题,工作量上来说难道不比针对ff所必须做的修正小太多了么?为什么要喷ie而不是ff呢?

最后我想知道的是,按楼主的逻辑,如果未来ff修了bug,workaround反而导致ff上网页不能正常工作了,楼主会不会也上来喷一次“ff这个婊子,居然修bug!”?

回复

使用道具 举报

发表于 2014-1-18 14:22 | 显示全部楼层
本帖最后由 ch_ch 于 2014-1-18 14:37 编辑
normanzb 发表于 2014-1-17 14:47
你过脑子了吗?一句时代在变化就什么道理都不讲了?

时代是在变,但改变也要讲道理,按规定来。

虽然ie6折磨了一代开发者,也不要这么张嘴就黑啊。如果楼主不是说的firefox而是chrome我都要怀疑是不是google股东了

之前就黑ie带头塞gecko的私货。这ie11才加的gecko就这么地“引起潮流”了
firefox ua难以判断?firefox从最初的版本(且不说当时jquery有没有出生)就在ua里有“firefox”了,还有比这更容易判断的么?ie往ua里塞“firefox”了?

微软删掉“msie”是黑点,不过这就是本来的目的
楼主的问题主要是因为被认成firefox。我觉得应该不是故意的,毕竟被认成unknown就应该够了,ms也不想平白给mozilla加市场份额。只能说jquery的判定太奇葩了。"mozilla5.0/ s1viewer rv:1"也能认成firefox(“mozilla rv:x”就够了)原来jquery是拿来侦测“mozilla"的,从来就没支持过探测"firefox"。这时候是不是应该喷楼主没按说明来用,判定正确却怒喷ie?那天firefox把”mozilla“ua给修掉到时候又能喷firefox了
回复

使用道具 举报

发表于 2014-1-18 14:52 | 显示全部楼层
normanzb 发表于 2014-1-17 07:35
chrome这么标准化它删了”chrome“了吗?
firefox比IE标准多了它删了”firefox“么?

因为绝大部分网站的前端代码在为了兼容以前版本IE而写了很多糟糕的代码,而这些大家都是基于"MSIE"来判断的。
既然说IE11往标准化走了,那么它就不用为以前那些糟糕的东西负责了,所以它才去掉了"MSIE"。它的兼容性发生了更改,从以前的IE兼容转向Mozilla;like Gecko。
另外它还加了Trident,也就是说现在User-Agent中Trident与Firefox、Chrome类似,标识这是IE。

没办法,可能大家看待的角度不同,做前端的黑微软黑IE到家表示很理解的。我前端代码写的非常少。

对了,我是Chrome粉,微软部分黑……
回复

使用道具 举报

     
发表于 2014-1-18 16:52 | 显示全部楼层
shahito 发表于 2014-1-18 14:52
因为绝大部分网站的前端代码在为了兼容以前版本IE而写了很多糟糕的代码,而这些大家都是基于"MSIE"来判断 ...

被chrome害惨了的飘过,外网自动升级,连个旧版本的渣都没剩下,结果代码要到内网N个版本之前的chrome上运行,然后还不能调试。。。。。。。。
回复

使用道具 举报

发表于 2014-1-19 17:58 | 显示全部楼层
本帖最后由 右慈 于 2014-1-19 18:25 编辑
不要叫水狗做主人 发表于 2014-1-18 09:45
你去跟乔老爷讲讲,让他iPhone改变分步来,先上大屏塞班,再来多点触控,再来iOS,再来正面单按键,etc

这里是 ...

" contains information about the user agent originating the request"

trident不算useragent吧?MSIE才算吧? 360用IE内核也说是trident啊?
回复

使用道具 举报

发表于 2014-1-19 18:01 | 显示全部楼层
本帖最后由 右慈 于 2014-1-19 18:24 编辑
nonmoi 发表于 2014-1-18 11:32
我一直不明白lz的逻辑的地方就是:

分明是因为ff的bug导致楼主被迫写代码搞workaround,结果这个workaroun ...

有什么不能理解,没做过软件开发吧?

是软件就有bug,这个是事实,是可以接受一个条件。不是说你firefox有bug就必须黑,没有这样的说法吧?要比bug数量和严重程度的话,IE更应该被黑吧?

那么你不能避免软件有bug,可微软这么直接将别人workaround firefox bug的退路斩断了一条,为什么不能黑?
你要是还不能理解的话,这话也可以倒过来说:IE故意让你区分不出IE和firefox,(这是一种主观意愿,微软今天能删MSIE,明天也能改trident),于是将来发现IE11的bug,将不能依赖ua来上workaround。因为如果仅仅依靠ua来打上workaround,可能会应用到firefox上去,导致firefox出问题。
这楼里拿什么向标准贴近的理由洗地的,都是理想的以为,是软件就没bug吧?l

明白了吗?问题不在于谁有bug,软件都有bug,关键是黑这种决策。

回复

使用道具 举报

发表于 2014-1-19 18:06 | 显示全部楼层
ch_ch 发表于 2014-1-18 14:22
虽然ie6折磨了一代开发者,也不要这么张嘴就黑啊。如果楼主不是说的firefox而是chrome我都要怀疑是不是goo ...

”楼主的问题主要是因为被认成firefox。我觉得应该不是故意的,毕竟被认成unknown就应该够了,ms也不想平白给mozilla加市场份额。“

lz发链接读过了吗?人家都说了是deliberately了,您就别洗地了。
回复

使用道具 举报

发表于 2014-1-19 18:07 | 显示全部楼层
ch_ch 发表于 2014-1-18 14:22
虽然ie6折磨了一代开发者,也不要这么张嘴就黑啊。如果楼主不是说的firefox而是chrome我都要怀疑是不是goo ...

”firefox ua难以判断?firefox从最初的版本(且不说当时jquery有没有出生)就在ua里有“firefox”了,还有比这更容易判断的么?ie往ua里塞“firefox”了?”

请问如何有效判断使用firefox引擎的其他开源浏览器?
回复

使用道具 举报

发表于 2014-1-19 18:15 | 显示全部楼层
shahito 发表于 2014-1-18 14:52
因为绝大部分网站的前端代码在为了兼容以前版本IE而写了很多糟糕的代码,而这些大家都是基于"MSIE"来判断 ...

trident不一定是IE啊,360之类的都可以使用IE内核不是吗。只是他们使用IE内核的时候,只能以API的形式使用。

不像chrome和firefox,因为是开源,很容易替换内部组件。所以使用IE内核的浏览器,多数情况下都是渲染效果一致的。

一般来说,浏览器的名字是不经常改的,但引擎的名字因为是跟随技术走的,所以随时有改变的可能。有时甚至下个版本直接换个引擎名字的也不是没有。

回复

使用道具 举报

发表于 2014-1-20 03:11 | 显示全部楼层
右慈 发表于 2014-1-19 18:01
有什么不能理解,没做过软件开发吧?

是软件就有bug,这个是事实,是可以接受一个条件。不是说你firefox ...

我没说有bug必须黑啊?

我前面也说了,在现实中一味推崇标准未必是好事。

你回复的那段几乎可以简写为“一行代码的事,多大的仇啊?有必要来这么黑么?”
回复

使用道具 举报

发表于 2014-1-20 04:07 | 显示全部楼层
nonmoi 发表于 2014-1-20 03:11
我没说有bug必须黑啊?

我前面也说了,在现实中一味推崇标准未必是好事。

naive
回复

使用道具 举报

     
发表于 2014-1-20 10:57 | 显示全部楼层
右慈 发表于 2014-1-19 17:58
" contains information about the user agent originating the request"

trident不算useragent吧?MSIE ...

The User-Agent request-header field contains information about the user agent originating the request.
User-Agent域包含了有关于发起请求的用户代理的信息
具体哪些内容算是"关于发起请求的用户代理的信息",标准没说

The field can contain multiple product tokens (section 3.8) and comments identifying the agent and any subproducts which form a significant part of the user agent.
这个好像不是must啊
回复

使用道具 举报

发表于 2014-1-21 19:49 | 显示全部楼层
不要叫水狗做主人 发表于 2014-1-20 10:57
The User-Agent request-header field contains information about the user agent originating the requ ...

有人问你要你的信息的时候你会回复“双眼,四肢,两个肾”么?
我知道你有双眼四肢两个肾我怎么能够identify你呢?你也有可能是其他动物是吧?User agent这里的目的是为了:
“ This is for statistical purposes,
   the tracing of protocol violations, and automated recognition of user
   agents for the sake of tailoring responses to avoid particular user
   agent limitations.”
你告诉我你有双眼四肢两个肾我能识别你并且进一步完成数据收集和跟踪等等吗?

还有,很显然 mozilla不是ie的user agent信息的吧?
然后,lz其实还漏喷了一些内容,这次IE11不单单是删掉MSIE,还会根据访问的站点,随机加上firefox字样。

firefox不是属于IE的user agent信息吧?
回复

使用道具 举报

发表于 2014-1-21 19:52 | 显示全部楼层
不要叫水狗做主人 发表于 2014-1-20 10:57
The User-Agent request-header field contains information about the user agent originating the requ ...

自己去看看IE干的好事:

https://iecvlist.microsoft.com/I ... ecompatviewlist.xml

请问firefox和chrome也算是IE11的user agent info吗
回复

使用道具 举报

头像被屏蔽
     
发表于 2014-1-22 12:25 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽
回复

使用道具 举报

发表于 2014-1-22 12:56 | 显示全部楼层
右慈 发表于 2014-1-21 05:52
自己去看看IE干的好事:

https://iecvlist.microsoft.com/IE11/1375395130872/iecompatviewlist.xml

你搞清楚这是啥没。。
回复

使用道具 举报

发表于 2014-1-22 19:40 | 显示全部楼层
本帖最后由 右慈 于 2014-1-22 22:50 编辑
不要叫水狗做主人 发表于 2014-1-22 12:25
那么标准有说"双眼,四肢,两个肾"是非法UA,你必须自报家门么?真以为你是公安局搞人口普查了啊?

"这好像是兼容性列表吧?你们可以对浏览器做hackfix就不准IE对于特定网站做workaround了么?"

别这么多废话,一边自己说要按标准来一边看菜吃饭,我就问你标准让你加上别家浏览器的信息了没?

好问题,Safari Opera Chrome你们死哪里去了,快站出来啊!”
第一个干这事的难道不是IE么?IE不这么干,也轮不到其他浏览器这么干啊。

你IE一声不响给别人网站访问的ua直接加上firefox,我怎么知道你是IE?怎么做数据调查?用户页面有问题报给开发人员,网站开发人员一看UA,还以为是firefox,人家死命想就是不明白firefox明明已经测试过了怎么就出问题了。弄了半天是你IE伪装,你IE不是坑人家么。
回复

使用道具 举报

发表于 2014-1-22 19:40 | 显示全部楼层
本帖最后由 右慈 于 2014-1-22 22:45 编辑
烈之斩 发表于 2014-1-22 12:56
你搞清楚这是啥没。。

你搞清楚说话的上下文是啥了没?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-9-7 17:29 , Processed in 0.236944 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表