normanzb 发表于 2014-1-15 19:51

IE这婊子怎么又开始userAgent spoof了

本帖最后由 normanzb 于 2014-1-15 22:13 编辑

http://blogs.msdn.com/b/ieintern ... ageIndex=1#comments

故意将userAgent字符串改得和firefox或者webkit类似,以欺骗过多数userAgent sniff逻辑。
和以前刚出来那会儿一样。

傻逼吗这是,目光短浅只看眼前的兼容性。页面哪怕好看了10张,付钱的页面上只要出一个功能性错误就糟大糕了。

我认为有良心的个人网站都应该直接完全禁止IE浏览,这货不在于功能有多强,而是根本就不关心开发人员。只顾自己怎么扩张市场,不管别人死活。它只知道这么一改从大多数网站“看起来”“能浏览”,才不管因此网页开发人员有多蛋疼。
到现在那个ie11developer tool还是一驼屎,切换到模拟IE7下面连inline style都不能正确修改。

infinte 发表于 2014-1-15 20:13

Trident 关键字在,够识别了没?
我见到的惟一不兼容的情况是银联,识别成 Chrome 了

infinte 发表于 2014-1-15 20:15

不过现在已经 2014 年,UA 也该改回应有的样子了吧,类似这种

Chrome/33.0 (Windows NT 6.1, WOW64, Blink ooo.xxx)

normanzb 发表于 2014-1-15 20:18

infinte 发表于 2014-1-15 20:13
Trident 关键字在,够识别了没?
我见到的惟一不兼容的情况是银联,识别成 Chrome 了 ...

说得轻巧,那么多遗留站点,遗留代码怎么办?全部改一边?jquery老版本里的浏览器信息全显示是mozilla,怎么办?改jquery源代码还是全换别的方案?

一开始IE故意加上mozilla,让你以为是netscape,为了修复IE specific的问题,开发人员用MSIE来做sniffing。
现在IE删掉MSIE,让你以为是firefox或者chrome,为了修复IE的问题,开发人员开始结合trident来做sniffing。
以后是不是IE干脆换个引擎名字,直接拿掉trident?

跟IE混就没一天轻松的。

infinte 发表于 2014-1-15 20:21

normanzb 发表于 2014-1-15 20:18
说得轻巧,那么多遗留站点,遗留代码怎么办?全部改一边?jquery老版本里的浏览器信息全显示是mozilla, ...

你知道当年为什么要加 mozilla 么?
当时浏览器有两个:Mosaic 和 Netscape,UA 都很规则
因为 Netscape 功能更多,所以服务器会根据 UA 中是否包含「Mozilla」字段来判断用户是否在用 Netscape,如果用户用的是 Netscape 就发更华丽的网页比如带框架的。
然后 IE 出现的时候支持 Netscape 所有功能,但为了避免网站修改代码给 IE 用户发 Mosaic 适用的烂网页,他们才将 UA 定的那么奇怪。
后来 KHTML 与 Webkit 的故事就不多说了。

normanzb 发表于 2014-1-15 20:27

本帖最后由 normanzb 于 2014-1-15 20:30 编辑

infinte 发表于 2014-1-15 20:22
你知道当年为什么要加 mozilla 么?
当时浏览器有两个:Mosaic 和 Netscape,UA 都很规则
因为 Netscape...
我当然知道,

但是问题在于,网页怎么显示,这是开发人员的职责,不是IE的职责,IE只要正确告诉我他是谁就好了。
IE不能自私的为了自己的浏览器表现的好一点就直接糊一把屎在useragent上面。
我的网站,我想不想让他在IE下表现的更好一点,这是我的职责和权利,我不需要IE对我的站点怎么显示指手画脚。
这样乱改useragent,是非常不负责任的行为。如果倒过来,假设现在HTML5站点都为IE设计,chrome在自己useragent里加个MSIE,你愿意?

useragent大家都这样乱搞,很难或者不容易分清楚哪个浏览器,那还要useragent干嘛?

tonyunreal 发表于 2014-1-15 20:34

为开发者着想,微软应该放弃自己的引擎,改用Webkit

hein 发表于 2014-1-15 20:37

“我的网站,我想不想让他在IE下表现的更好一点,这是我的职责和权利,我不需要IE对我的站点怎么显示指手画脚。”

我不知道谁自私了,如果大家都自私,就看谁的流氓耍的更厉害了。这是商业市场,我觉得现在web前端,比IE6时代付出更多收获更少,FF和chrome彪版本也甚是欢乐。

normanzb 发表于 2014-1-15 20:49

hein 发表于 2014-1-15 20:37
“我的网站,我想不想让他在IE下表现的更好一点,这是我的职责和权利,我不需要IE对我的站点怎么显示指手画 ...

至少chrome刚出来的时候没有加个opera或者msie或者firefox吧

商业竞争也要有底线,乱改真的应该叫做耍流氓而不是竞争

infinte 发表于 2014-1-15 21:01

normanzb 发表于 2014-1-15 20:27
我当然知道,

但是问题在于,网页怎么显示,这是开发人员的职责,不是IE的职责,IE只要正确告诉我他是谁 ...

在有标准的情况下网页怎么显示当然是 IE 的职责。否则干嘛要 Web 标准化?直接一家一个规格得了。
IE11 改 UA 的一个背景是 IE11 标准化进程,现在连当初开发组极力反对的 webgl 都弄进来了,和他家尽量一致,当然有权说自己和别人「兼容」。

normanzb 发表于 2014-1-15 21:02

我不知道eric law怎么想的,但是我作为一开发,ie不能为我提供比较好的开发体验,还整天喂我吃屎,我个人情感上是不会愿意吧ie的效果放在首位考虑的。我也不太相信一个用chrome作为默认工具开发出来的页面在ie上能有多棒

infinte 发表于 2014-1-15 21:06

normanzb 发表于 2014-1-15 21:02
我不知道eric law怎么想的,但是我作为一开发,ie不能为我提供比较好的开发体验,还整天喂我吃屎,我个人情 ...

标准化的意义就在于让所有浏览器效果一致。
我写网页也是用 Chrome,直接丢 IE11 上效果一样,就是因为我用的是标准接口。

gofbayrf 发表于 2014-1-15 21:07

我好奇 就算ie改ua 不能顯的還是不能顯示吧 好像沒什麼好處

gofbayrf 发表于 2014-1-15 21:07

我好奇 就算ie改ua 不能顯的還是不能顯示吧 好像沒什麼好處

normanzb 发表于 2014-1-15 21:07

infinte 发表于 2014-1-15 21:01
在有标准的情况下网页怎么显示当然是 IE 的职责。否则干嘛要 Web 标准化?直接一家一个规格得了。
IE11...



你再怎么兼容也是兼容标准不是兼容firefox或者chrome.

firefox的bug你兼容的了吗

normanzb 发表于 2014-1-15 21:11

infinte 发表于 2014-1-15 21:06
标准化的意义就在于让所有浏览器效果一致。
我写网页也是用 Chrome,直接丢 IE11 上效果一样,就是因为我 ...

这是乌托邦,标准都在不停的修改和增加,你ie就异想天开完美实现标准了?

infinte 发表于 2014-1-15 21:11

normanzb 发表于 2014-1-15 21:07
你再怎么兼容也是兼容标准不是兼容firefox或者chrome.

firefox的bug你兼容的了吗 ...

firefox 的 bug,是 firefox 的问题,解决的正确方法是:

1. 用小的 workaround 保证用户显示正确
2. 给 Mozilla 开 ticket 报 bug 叫他们修

Chrome 和 IE 也是相同。都应该先基于标准做网页,然后再针对浏览器去 workaround。

normanzb 发表于 2014-1-15 21:14

infinte 发表于 2014-1-15 21:11
firefox 的 bug,是 firefox 的问题,解决的正确方法是:

1. 用小的 workaround 保证用户显示正确


听不懂我说什么吗?ie兼容的是标准,那就应该在ua里写上兼容w3c,而不是加上mozilla删掉msie

adrftgyh 发表于 2014-1-15 21:20

ua这东西,直接提供多个供人选择好了........ie改成其他浏览器的ua,能显示的不会少,不能显示的一样不会多出来........

hein 发表于 2014-1-15 21:23

gofbayrf 发表于 2014-1-15 21:07
我好奇 就算ie改ua 不能顯的還是不能顯示吧 好像沒什麼好處

不是这样的,因为有些网站没有跟上IE的进步,如果识别为IE,就不给你显示其他浏览器能显示的东西(但是其实IE11甚至IE10都是能正常显示的)
而开发IE的人因为这些网站过多,或者网站不能及时更新维护以支持IE的UA(间接导致用户对IE的不信任),于是就这么干了。

这应该就是一个情况,其实有时候我用IE6测试很多网站,把UA改成FF或者Chrome,也基本正常,使用毫无问题,但是这些网站会屏蔽IE6甚至IE8。

这么做,IE开发者觉得对自己有利,还剩了很多前端工作者的麻烦事,而有些前端工作者觉得这TMA就是作弊,是对前端和标准的亵渎。于是就争起来了。

我是看戏的。

normanzb 发表于 2014-1-15 21:27

本帖最后由 normanzb 于 2014-1-15 21:32 编辑

hein 发表于 2014-1-15 21:23
不是这样的,因为有些网站没有跟上IE的进步,如果识别为IE,就不给你显示其他浏览器能显示的东西(但是其 ...
不仅仅是觉得对标准是亵渎

firefox有他特定的bug

有时候实在没法做功能探测了会看ua来给ff加一些workaround但是现在work到ie身上去了
实际上圆角显示不了不是个屁事,但是某些功能被他这么一改直接不能用了就糟糕了,不但不省事,还给我添乱

dahuatttt 发表于 2014-1-16 01:57

&http.Request{Method:"POST", URL:(*url.URL)(0xc084035690), Proto:"HTTP/1.1", ProtoMajor:1, ProtoMinor:1, Header:http.Header{"Connection":[]string{"keep-alive"}, "Content-Length":[]string{"16"}, "Accept":[]string{"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"}, "User-Agent":[]string{"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1682.0 Safari/537.36"}, "Dnt":[]string{"1"}, "Accept-Encoding":[]string{"gzip,deflate,sdch"}, "Cookie":[]string{}, "Cache-Control":[]string{"max-age=0"}, "Origin":[]string{"null"}, "Content-Type":[]string{"application/x-www-form-urlencoded"}, "Accept-Language":[]string{"zh-CN,zh;q=0.8"}}, Body:(*http.body)(0xc08403aab0), ContentLength:16, TransferEncoding:[]string(nil), Close:false, Host:"127.0.0.1:8080", Form:url.Values{}, PostForm:url.Values{}, MultipartForm:(*multipart.Form)(nil), Trailer:http.Header(nil), RemoteAddr:"127.0.0.1:33866", RequestURI:"/", TLS:(*tls.ConnectionState)(nil)}

&http.Request{Method:"POST", URL:(*url.URL)(0xc084035a10), Proto:"HTTP/1.1", ProtoMajor:1, ProtoMinor:1, Header:http.Header{"User-Agent":[]string{"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0"}, "Accept":[]string{"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"}, "Accept-Language":[]string{"en-US,en;q=0.5"}, "Accept-Encoding":[]string{"gzip, deflate"}, "Connection":[]string{"keep-alive"}, "Content-Type":[]string{"application/x-www-form-urlencoded"}, "Content-Length":[]string{"16"}}, Body:(*http.body)(0xc08403adb0), ContentLength:16, TransferEncoding:[]string(nil), Close:false, Host:"127.0.0.1:8080", Form:url.Values{}, PostForm:url.Values{}, MultipartForm:(*multipart.Form)(nil), Trailer:http.Header(nil), RemoteAddr:"127.0.0.1:34071", RequestURI:"/", TLS:(*tls.ConnectionState)(nil)}

刚好今天抓来用的还没删,有谁能顺手给我个IE的,手头没IE.....

allenz 发表于 2014-1-16 02:55

本帖最后由 allenz 于 2014-1-16 03:01 编辑

莫名其妙,mozilla/5.0不是一早在用吗,like Gecko chrome和safari也有啊,ie8就有trident token了就不能改改,大家永远用ie8是不是更好?

中川雅 发表于 2014-1-16 03:31

magi 发表于 2014-1-16 05:33

=。= 这么改被坑的主要群体貌似是那种设计成只支持ie,各种不知道到底安不安全的安全控件一堆的坑爹网银之类的网站?虽然说看到他们吃瘪好像有点小开心。。。

烈之斩 发表于 2014-1-16 05:42

本帖最后由 烈之斩 于 2014-1-15 15:50 编辑

lz到底想表达什么?

根据lz提供的网址,ie11的ua是:    Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
我现在用的chrome的是:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36

mozilla和like gecko这俩都有,谁也不比谁好
然后为啥ie就是婊子了?
然后ie10的是:Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)

IE11是去掉了MSIE,加上了Trident,mozilla都有(实际上所有浏览器都有,这是历史遗留问题) 怎么到了lz嘴里就成了“加上mozilla删掉msie”了??

samta 发表于 2014-1-16 07:23

中川雅 发表于 2014-1-16 03:31
等所有版本的窗户系统都不内置IE之后你再跟M$提底线问题,当年虽然AOL作死但如果微软不耍流氓玩捆绑Netsc ...

那干脆文件管理器 任务管理器这些都不要内置了好不好 不然第三方怎么活啊?

newdasemo 发表于 2014-1-16 09:15

normanzb 发表于 2014-1-16 09:51

allenz 发表于 2014-1-16 02:55
莫名其妙,mozilla/5.0不是一早在用吗,like Gecko chrome和safari也有啊,ie8就有trident token了就不能改 ...

你不能读读上面帖子么,mozilla5这个混乱的表达方式就是微软第一个带头干的,微软博客自己都说删掉msie是故意让人混淆了。

引擎等于浏览器吗?我检查引擎靠谱吗?微软下次改引擎名字呢

normanzb 发表于 2014-1-16 09:55

烈之斩 发表于 2014-1-16 05:42
lz到底想表达什么?

根据lz提供的网址,ie11的ua是:    Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:1 ...

麻烦你按顺序读读看帖子,充实一下浏览器历史方面的知识,看看这个mozilla最早是什么意思,又是谁弄带的头导致现在的浏览器必须加个mozilla的。

如果浏览器都说自己是mozilla,那么这本身就是一句废话,那么你难道从来不奇怪,既然是一句废话,为什么还总是在http报文里传来传去呢?

normanzb 发表于 2014-1-16 09:58

magi 发表于 2014-1-16 05:33
=。= 这么改被坑的主要群体貌似是那种设计成只支持ie,各种不知道到底安不安全的安全控件一堆的坑爹网银之 ...

网银煞笔我同意,但是怎么会只坑他们呢?我就刚中招啊,你看我上面的帖子啊。

一个解决firefox bug 的代码应用到ie上去了,结果页面直接不能使用了

还有很多做浏览器跟踪的,也会错误认为ie11是火狐吧

normanzb 发表于 2014-1-16 09:59

magi 发表于 2014-1-16 05:33
=。= 这么改被坑的主要群体貌似是那种设计成只支持ie,各种不知道到底安不安全的安全控件一堆的坑爹网银之 ...

网银煞笔我同意,但是怎么会只坑他们呢?我就刚中招啊,你看我上面的帖子啊。

一个解决firefox bug 的代码应用到ie上去了,结果页面直接不能使用了

还有很多做浏览器跟踪的,也会错误认为ie11是火狐吧

allenz 发表于 2014-1-16 10:02

normanzb 发表于 2014-1-16 09:51
你不能读读上面帖子么,mozilla5这个混乱的表达方式就是微软第一个带头干的,微软博客自己都说删掉msie是 ...

blog上面明确说明了应该用feature detection代替ua测试,你怎么就无视了。本来ie 11就砍了很多以前微软非标的东西,浏览效果接近chrome和ff,和以前的ie作出区分有什么问题。

对国内一堆还要死支持ie 6和只支持ie的网站没什么好说的。

normanzb 发表于 2014-1-16 10:04

烈之斩 发表于 2014-1-16 05:42
lz到底想表达什么?

根据lz提供的网址,ie11的ua是:    Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:1 ...

另外trident也是ie一早就有的,但是这是引擎的名字,不是浏览器的名字。

normanzb 发表于 2014-1-16 10:06

本帖最后由 normanzb 于 2014-1-16 10:13 编辑

allenz 发表于 2014-1-16 10:02
blog上面明确说明了应该用feature detection代替ua测试,你怎么就无视了。本来ie 11就砍了很多以前微软非 ...
我上面说了啊,不是所有firefox的bug都可以feature detection的啊

你认真看看再回好吗,还有微软这么一改,所有用老jquery的站点全部认为ie11是firefox,这个屁股谁擦?

normanzb 发表于 2014-1-16 10:11

allenz 发表于 2014-1-16 10:02
blog上面明确说明了应该用feature detection代替ua测试,你怎么就无视了。本来ie 11就砍了很多以前微软非 ...

我的站点不想支持ie6,但是想workaround一个firefox bug,结果现在这个workaround应用到ie11上去了,这个workaround直接导致在ie11上页面无法正常使用。

现在我要回头修改一堆老的代码,来解决这个问题,我们工作做的浏览器跟踪也不能正确检查ie11。

这些我上面都写了的,不要再叫我一遍一遍重复,好吗

ch_ch 发表于 2014-1-16 10:20

本帖最后由 ch_ch 于 2014-1-16 10:32 编辑

> 如果浏览器都说自己是mozilla,那么这本身就是一句废话,那么你难道从来不奇怪,既然是一句废话,为什么还总是在http报文里传来传去呢?
> 说得轻巧,那么多遗留站点,遗留代码怎么办?全部改一边?jquery老版本里的浏览器信息全显示是mozilla,怎么办?改jquery源代码还是全换别的方案?

???

> 一个解决firefox bug 的代码应用到ie上去了,结果页面直接不能使用了
你之前是怎么检测的?ie又没给ua里加firefox,你检测的是gecko?那其他浏览器不也完蛋了?
还是
if (gecko && not (safari or chrome or opera))?原来是历史jquery版本
微软大概考虑隔壁presto,webkit,blink都带gecko,那我也带个gecko没问题吧?结果有人想检测firefox不用“firefox”而去用gecko

allenz 发表于 2014-1-16 10:28

究竟为什么国内这么多网站只能用老版jquery,你懂的,这可不是因为洋鬼子不负责任

allenz 发表于 2014-1-16 10:28

究竟为什么国内这么多网站只能用老版jquery,你懂的,这可不是因为洋鬼子不负责任

newdasemo 发表于 2014-1-16 10:30

页: [1] 2 3
查看完整版本: IE这婊子怎么又开始userAgent spoof了