<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/rss.xsl" type="text/xsl"?>
<rss version="2.0">
  <channel>
    <title>IT瘾浏览器推荐</title>
    <link>https://itindex.net/tags/浏览器</link>
    <description>IT社区推荐资讯 - ITIndex.net</description>
    <language>zh</language>
    <copyright>https://itindex.net/</copyright>
    <generator>https://itindex.net/</generator>
    <docs>http://backend.userland.com/rss</docs>
    <image>
      <url>https://itindex.net/images/logo.gif</url>
      <title>IT社区推荐资讯 - ITIndex.net</title>
      <link>https://itindex.net/tags/浏览器</link>
    </image>
    <item>
      <title>一文搞懂前端兼容问题</title>
      <link>https://itindex.net/detail/62360-%E5%89%8D%E7%AB%AF-%E9%97%AE%E9%A2%98</link>
      <description>&lt;blockquote&gt;如果你喜欢我的文章，希望点赞 收藏  评论  三连支持一下，谢谢你，这对我真的很重要！&lt;/blockquote&gt; &lt;hr&gt;&lt;/hr&gt; &lt;p&gt;对于大部分开发者来说，版本兼容是一件存在感很低的事情，因为它在绝大部分情况下都是一行配置，在一些前端工具链（例如 Babel、CoreJS，Autoprefixer 等工具）的帮助下适配到目标浏览器，只会在一些大的 break change 事件（例如 Vue3 必须在支持 Proxy 的现代浏览器下才能运行）下才会关注这件不起眼的事情。&lt;/p&gt; &lt;p&gt;但当你稍微研究一下的时候，才会发现这块儿内容知识非常杂，因为版本兼容的相关知识没有那么多内在逻辑性，很多细碎的知识点散落在在各个商业公司的博弈和版本变更中。前段时间因工作需要对部分语言/浏览器特性重点关注了一下，以此文做一下记录。&lt;/p&gt; &lt;p&gt;本文主要记录了移动端的版本适配问题，未对桌面端做更多的研究，后面有可能补充相关内容。&lt;/p&gt; &lt;h2&gt;1.iOS &amp;amp; Safari&lt;/h2&gt; &lt;p&gt;iOS 和 Android 虽然都是一年更新一个大版本，但受益于生态的封闭性，iOS 的更新率  &lt;strong&gt;极高&lt;/strong&gt;，基本上最近的两个版本就能覆盖 95% 以上的人群。&lt;/p&gt; &lt;p&gt;例如   &lt;a href="https://developer.apple.com/support/app-store/" rel="nofollow noreferrer"&gt;Apple 官方统计&lt;/a&gt;，截止到 2022-05-31，Apple 四年内推出的新机型中，  &lt;code&gt;iOS 15&lt;/code&gt; 已经有 89% 的装机率，  &lt;code&gt;iOS 14&lt;/code&gt; 也有 10% 的装机率；而在所有历史机型里，  &lt;code&gt;iOS 15&lt;/code&gt; 和   &lt;code&gt;iOS 14&lt;/code&gt; 加起来也有 96% 的装机率，隔壁 Android 都羡慕哭了：&lt;/p&gt; &lt;p&gt;  &lt;img alt="" src="https://segmentfault.com/img/remote/1460000042301386" title=""&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;为什么如此关注 iOS 的版本号？  &lt;strong&gt;因为 iOS 版本基本上和 Safari 版本一一对应的&lt;/strong&gt;，例如   &lt;code&gt;iOS 15.6&lt;/code&gt; 上安装着   &lt;code&gt;Safari 15.6&lt;/code&gt;，  &lt;code&gt;iOS 14.5&lt;/code&gt; 上安装着   &lt;code&gt;Safari 14.1&lt;/code&gt;，具体的映射关系可见   &lt;a href="https://github.com/mdn/browser-compat-data/blob/main/browsers/safari_ios.json" rel="nofollow noreferrer"&gt;MDN 的映射表&lt;/a&gt;，或者可以看   &lt;a href="https://github.com/zloirock/core-js/blob/master/packages/core-js-compat/src/mapping.mjs" rel="nofollow noreferrer"&gt;core-js: SafariToIOS&lt;/a&gt;，所以我们基本上只要比对 iOS 版本号即可。&lt;/p&gt; &lt;p&gt;另外一个问题是，有一定 C 端开发经验的开发者可能还会关注 iOS 上运行的是 UIWebView 还是 WKWebView，在 2022 年这个时间点其实已经不需要关注了，因为 Apple Store 已经发过  &lt;a href="https://developer.apple.com/cn/news/?id=edwud51q" rel="nofollow noreferrer"&gt;公告&lt;/a&gt;，2020 12 月之后已经禁止含 UIWebView 的 APP 上架了，所以 iOS 平台只有 WKWebView 这一个 WebView 了，而且它  &lt;a href="https://developer.apple.com/documentation/webkit/wkwebview" rel="nofollow noreferrer"&gt;兼容性也不错&lt;/a&gt;，最低支持到   &lt;code&gt;iOS 8&lt;/code&gt;。&lt;/p&gt; &lt;h2&gt;2.Android &amp;amp; Chrome&lt;/h2&gt; &lt;p&gt;说完 iOS 我们再谈谈 Android。因为两个操作系统的发展策略不同，再加上国内各大厂商的魔改，Android 从一开始就深陷碎片化的深渊，有 Android 开发经历的同学一定都深有感触。&lt;/p&gt; &lt;p&gt;Android 系统本身碎片化，Android 系统自带的浏览器  &lt;strong&gt;更碎片化&lt;/strong&gt;。在 Android 早期，Android 版本和 Chrome 浏览器版本是有绑定关系的，那这个早期是有多早？那就是   &lt;code&gt;Android 4&lt;/code&gt;，2014 年发布，绑定了 Chrome 早期几个版本，因为数据不多，我这里就直接列出来：&lt;/p&gt; &lt;pre&gt;  &lt;code&gt;// https://github.com/zloirock/core-js/blob/master/packages/core-js-compat/src/mapping.mjs
ChromeToAndroid: [
  [9, &amp;apos;3.0&amp;apos;],
  [12, &amp;apos;4.0&amp;apos;],
  [30, &amp;apos;4.4&amp;apos;],
  [33, &amp;apos;4.4.3&amp;apos;],
]&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;事情的转机出现在   &lt;code&gt;Android 5&lt;/code&gt;，  &lt;a href="https://developer.chrome.com/docs/multidevice/webview/" rel="nofollow noreferrer"&gt;这个版本&lt;/a&gt;里 WebView 被移植为一个独立的 APK，可以独立更新，不再和 Android 系统深度绑定。&lt;/p&gt; &lt;p&gt;Google 的想法初衷是好的，借助于 Google 商店，解耦更利于浏览器的版本迭代。但是在国内多厂商魔改和一些网络问题上，极有可能发生这样的事情：对于一台   &lt;code&gt;Android 5&lt;/code&gt; 手机，理论上用户可以安装   &lt;code&gt;Chrome 36&lt;/code&gt; -   &lt;code&gt;Chrome 95&lt;/code&gt;   &lt;strong&gt;任意一个版本&lt;/strong&gt;！&lt;/p&gt; &lt;p&gt;所以和 iOS 对比起来，Android 因为他的开放性带来严重的碎片化问题：Android 版本多样，Chrome 版本多样，还有各种魔改内核，对于开发者来说适配起来真的苦不堪言。&lt;/p&gt; &lt;h2&gt;3.Web Browser&lt;/h2&gt; &lt;p&gt;了解完操作系统的版本历史，我们再看看浏览器上最关键的 JavaScript 语法兼容度。&lt;/p&gt; &lt;h3&gt;JavaScript&lt;/h3&gt; &lt;p&gt;最近十年内，JS 这门语言的的最大变革就是 ES6（ES2015）的发布了，带来了非常多的新特性。下面我搞了一个表格，列出几个大家常用的 JS 语法是从哪个版本开始支持的：&lt;/p&gt; &lt;table&gt;  &lt;tr&gt;   &lt;th&gt;语法/API&lt;/th&gt;   &lt;th&gt;iOS&lt;/th&gt;   &lt;th&gt;Chrome&lt;/th&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;    &lt;code&gt;Class&lt;/code&gt;&lt;/td&gt;   &lt;td&gt;9&lt;/td&gt;   &lt;td&gt;49&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;    &lt;code&gt;=&amp;gt;&lt;/code&gt;&lt;/td&gt;   &lt;td&gt;10&lt;/td&gt;   &lt;td&gt;45&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;    &lt;code&gt;const&lt;/code&gt;&lt;/td&gt;   &lt;td&gt;11&lt;/td&gt;   &lt;td&gt;49&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;    &lt;code&gt;let&lt;/code&gt;&lt;/td&gt;   &lt;td&gt;11&lt;/td&gt;   &lt;td&gt;49&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;    &lt;code&gt;Proxy&lt;/code&gt;&lt;/td&gt;   &lt;td&gt;10&lt;/td&gt;   &lt;td&gt;49&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;    &lt;code&gt;generators&lt;/code&gt;&lt;/td&gt;   &lt;td&gt;10&lt;/td&gt;   &lt;td&gt;39&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;    &lt;code&gt;Promise&lt;/code&gt;&lt;/td&gt;   &lt;td&gt;8&lt;/td&gt;   &lt;td&gt;33&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;    &lt;code&gt;async await&lt;/code&gt;&lt;/td&gt;   &lt;td&gt;11&lt;/td&gt;   &lt;td&gt;55&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;    &lt;code&gt;import&lt;/code&gt;     &lt;code&gt;export&lt;/code&gt;&lt;/td&gt;   &lt;td&gt;10.3&lt;/td&gt;   &lt;td&gt;61&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;...&lt;/td&gt;   &lt;td&gt;...&lt;/td&gt;   &lt;td&gt;...&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;我们可以看到，这些语法的最低支持版本集中在   &lt;code&gt;iOS 10&lt;/code&gt;、  &lt;code&gt;iOS 11&lt;/code&gt;，  &lt;code&gt;Chrome 49&lt;/code&gt;，  &lt;code&gt;Chrome 61&lt;/code&gt; 这几个版本上，我们把它们的版本发布时间列出来：&lt;/p&gt; &lt;table&gt;  &lt;tr&gt;   &lt;th&gt;事件&lt;/th&gt;   &lt;th&gt;发布时间&lt;/th&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;    &lt;code&gt;ES5&lt;/code&gt; 标准发布时间&lt;/td&gt;   &lt;td&gt;2009.12&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;    &lt;code&gt;ES6&lt;/code&gt; 标准发布时间&lt;/td&gt;   &lt;td&gt;2015.06&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;    &lt;code&gt;iOS 10&lt;/code&gt; 发布时间&lt;/td&gt;   &lt;td&gt;2016.06&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;    &lt;code&gt;iOS 11&lt;/code&gt; 发布时间&lt;/td&gt;   &lt;td&gt;2017.06&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;    &lt;code&gt;Chrome 49&lt;/code&gt; 发布时间&lt;/td&gt;   &lt;td&gt;2016.03&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;    &lt;code&gt;Chrome 61&lt;/code&gt; 发布时间&lt;/td&gt;   &lt;td&gt;2017.09&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;时间列出来后结论基本上是呼之欲出了：  &lt;strong&gt;ES6 标准发布后的未来一年时间内，各大浏览器语法就支持的差不多了，两年后基本上就全部支持了&lt;/strong&gt;，  &lt;strong&gt;这个时间点就是 2017 年，对应着&lt;/strong&gt;   &lt;code&gt;iOS 11&lt;/code&gt;   &lt;strong&gt;和&lt;/strong&gt;   &lt;code&gt;Chrome 61&lt;/code&gt;。&lt;/p&gt; &lt;h3&gt;legacy vs modern&lt;/h3&gt; &lt;p&gt;看完 ES6 的支持情况，我们再来了解两个概念，「经典浏览器」和「现代浏览器」。&lt;/p&gt; &lt;p&gt;这两个词在英文里对应着「legacy browser」和「modern browser」。如果大家比较关注一些相对前沿的前端项目，比如说 Vue3，Solidjs，Vite，它们的官网里其实经常提到这两个词。&lt;/p&gt; &lt;p&gt;那么问题来了，既然有两个称呼，那在工程里必然存在一个分界线去区分 legacy 和 modern，  &lt;strong&gt;这个分界线就是    &lt;code&gt;iOS10.3&lt;/code&gt; 和    &lt;code&gt;Chrome 61&lt;/code&gt;，既浏览器支持 ES Modules 的版本&lt;/strong&gt;（支持   &lt;code&gt;&amp;lt;script type=&amp;quot;module&amp;quot;&amp;gt;&lt;/code&gt; &amp;amp;   &lt;code&gt;import&lt;/code&gt; &amp;amp;   &lt;code&gt;export&lt;/code&gt;）。&lt;/p&gt; &lt;p&gt;这样一看是不是就和上面的内容对上了？Babel 官网也做了相关的  &lt;a href="https://babeljs.io/docs/en/options#targetsesmodules" rel="nofollow noreferrer"&gt;解释&lt;/a&gt;，core-js 也专门做了  &lt;a href="https://github.com/zloirock/core-js/blob/master/packages/core-js-compat/src/external.mjs" rel="nofollow noreferrer"&gt;区分&lt;/a&gt;，更详细的介绍可以看 MDN 的文章：  &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules" rel="nofollow noreferrer"&gt;JavaScript modules&lt;/a&gt;，我就不做多余介绍了。&lt;/p&gt; &lt;h3&gt;modern feature&lt;/h3&gt; &lt;p&gt;经过上面的探索，我们再回过来看看一些比较 modern 的 browser feature 的支持程度：&lt;/p&gt; &lt;table&gt;  &lt;tr&gt;   &lt;th&gt;browser fature&lt;/th&gt;   &lt;th&gt;iOS&lt;/th&gt;   &lt;th&gt;Chrome&lt;/th&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;Web Worker&lt;/td&gt;   &lt;td&gt;5&lt;/td&gt;   &lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;SubtleCrypto&lt;/td&gt;   &lt;td&gt;7&lt;/td&gt;   &lt;td&gt;37&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;Service Worker&lt;/td&gt;   &lt;td&gt;11.3&lt;/td&gt;   &lt;td&gt;45&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;WebAssembly&lt;/td&gt;   &lt;td&gt;11&lt;/td&gt;   &lt;td&gt;57&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;CSS Grid Layout&lt;/td&gt;   &lt;td&gt;10.3&lt;/td&gt;   &lt;td&gt;58&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;WebGPU&lt;/td&gt;   &lt;td&gt;not support&lt;/td&gt;   &lt;td&gt;not support&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;   &lt;td&gt;...&lt;/td&gt;   &lt;td&gt;...&lt;/td&gt;   &lt;td&gt;...&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;看看各个 API 的兼容度，再结合上文的内容，就可以发现很多「兼容性不好」人云亦云的说法不攻自破，  &lt;strong&gt;其实大部分情况下不是兼容度不好从而不用，是项目还没有复杂到那个程度需要用这些高级功能&lt;/strong&gt;。&lt;/p&gt; &lt;h2&gt;4.Open Source Project&lt;/h2&gt; &lt;p&gt;日常开发中肯定不能写一行代码查一下兼容度，这些都是由社区工具做抹平的。&lt;/p&gt; &lt;p&gt;兼容度数据源头可以追述到 MDN 的   &lt;a href="https://github.com/mdn/browser-compat-data" rel="nofollow noreferrer"&gt;browser-compat-data&lt;/a&gt;，记录了各种 API 的兼容，MDN 网站的兼容度直接是从这个 repo 里读的。我们常用的   &lt;a href="https://caniuse.com/" rel="nofollow noreferrer"&gt;caniuse&lt;/a&gt; 网站，一部分数据也是依赖于它的。&lt;/p&gt; &lt;p&gt;接下来是工程上依赖最多的   &lt;a href="https://github.com/browserslist/browserslist" rel="nofollow noreferrer"&gt;browserslist&lt;/a&gt;，babel、eslint、autoprefixer、postcss，webpack 等构建工具都依赖于它，browserslist 的数据又依赖于   &lt;a href="https://github.com/browserslist/caniuse-lite" rel="nofollow noreferrer"&gt;caniuse-lite&lt;/a&gt;，其实也是依赖于   &lt;a href="https://github.com/Fyrd/caniuse" rel="nofollow noreferrer"&gt;caniuse&lt;/a&gt;，lite 只保留了核心数据，对一些说明文案做了裁剪处理。&lt;/p&gt; &lt;p&gt;综合以上分析，我们可以看出，在项目工程里依赖的 browserslist，数据准确性还是可以得到保证的，所以兼容性还是无需担心的。&lt;/p&gt; &lt;h2&gt;5.Adaptation Suggestions&lt;/h2&gt; &lt;p&gt;说了这么多，那么有什么配置建议呢？我个人认为主要有 3 点建议提供参考。&lt;/p&gt; &lt;p&gt;  &lt;strong&gt;第一个是参考国民级 APP 的最低支持度配置&lt;/strong&gt;。&lt;/p&gt; &lt;p&gt;在国内，在日活上能称为国民级 APP 的就是微信抖音了，这两个 APP 因为日活巨大，基本上已经覆盖到全部中国人，所以他们的配置一定有所考量，可以反应出国内的整体手机版本水平。&lt;/p&gt; &lt;p&gt;从 App Store/Android 应用商店/浏览器 UA 上看，我们可以得处以下结论（截止到 2022-8-8）：&lt;/p&gt; &lt;ul&gt;  &lt;li&gt;   &lt;strong&gt;微信&lt;/strong&gt;：最低支持到    &lt;code&gt;iOS 12&lt;/code&gt;、   &lt;code&gt;Android 5&lt;/code&gt;、内置浏览器版本为    &lt;code&gt;Chrome 86&lt;/code&gt;&lt;/li&gt;  &lt;li&gt;   &lt;strong&gt;抖音&lt;/strong&gt;：最低支持到    &lt;code&gt;iOS 10&lt;/code&gt;、   &lt;code&gt;Android 5&lt;/code&gt;、内置浏览器版本为    &lt;code&gt;Chrome 75&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;当然你也可以参考其他 APP，由于精力有限我就不做过多展开了。&lt;/p&gt; &lt;p&gt;根据项目的迭代速度来看，iOS 基本上可以做到一年一升级，比如说今年   &lt;code&gt;iOS 16&lt;/code&gt; 出来后，明年最低适配版本基本上可以升到   &lt;code&gt;iOS 11&lt;/code&gt; 了，Android 因为长尾效应和版本不绑定的问题，应该还会支持到   &lt;code&gt;Android 5&lt;/code&gt;。&lt;/p&gt; &lt;p&gt;  &lt;strong&gt;第二个建议是直接看当前业务的版本数据&lt;/strong&gt;。&lt;/p&gt; &lt;p&gt;不同的公司不同的项目都有不同的用户场景，比如说面向三四线 C 端用户的场景，一般低端机就会多一些；面向门店的场景，说不定还得适配 IE 浏览器；面向企业内的开发者项目，直接适配到最新几个浏览器即可。&lt;/p&gt; &lt;p&gt;场景如此之多就要依赖于用户版本数据统计了。一般中大厂都有比较完善的数据监控中台，直接拉一份数据就能获取大致情况，基建不完善的小公司也可以单独开个接口记录数据，收集一个月做个去重统计也能得到相关数据。拿到数据后再结合业务场景做些  &lt;strong&gt;取舍&lt;/strong&gt;，基本上就可以拿到最低适配了。&lt;/p&gt; &lt;p&gt;  &lt;strong&gt;第三个建议结合前端框架和 Chrome 版本做兼容。&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;结合前端框架其实很好理解，比如说你用了 Vue3，底层依赖于 Proxy，那么最低依赖已经锁死到   &lt;code&gt;iOS 10&lt;/code&gt; 和   &lt;code&gt;Chrome 49&lt;/code&gt; 了，那你的最低配置只能比以上版本高，假如你无脑设置为   &lt;code&gt;iOS 9&lt;/code&gt; 或   &lt;code&gt;Android 4&lt;/code&gt;，除了在最低版本上跑不起来，还要平白无故的多了许多语法转换和 polyfill，在   &lt;strong&gt;构建速度/运行时性能/产物体积&lt;/strong&gt; 上都会产生不必要的劣化。&lt;/p&gt; &lt;p&gt;结合 Chrome 版本做兼容其实就是本文第二大节的内容。因为   &lt;code&gt;Android 5&lt;/code&gt; 之后不再和 Chrome 做深度绑定，版本兼容设置 Android 版本其实是无意义的行为，应该根据统计结果直接设置 Chrome 版本，做更细粒度的配置。&lt;/p&gt; &lt;h2&gt;Refs: Version History&lt;/h2&gt; &lt;p&gt;以上的版本历史和发布时间主要参考官方更新日志/文档 和 维基百科，相关链接如下所示：&lt;/p&gt; &lt;ul&gt;  &lt;li&gt;iOS 版本历史：   &lt;a href="https://en.wikipedia.org/wiki/IOS_version_history" rel="nofollow noreferrer"&gt;https://en.wikipedia.org/wiki/IOS_version_history&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;Android 版本历史：   &lt;a href="https://en.wikipedia.org/wiki/Android_version_history" rel="nofollow noreferrer"&gt;https://en.wikipedia.org/wiki/Android_version_history&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;Chrome 版本历史：   &lt;a href="https://en.wikipedia.org/wiki/Google_Chrome_version_history" rel="nofollow noreferrer"&gt;https://en.wikipedia.org/wiki/Google_Chrome_version_history&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;WKWebView API 兼容度：   &lt;a href="https://developer.apple.com/documentation/webkit/wkwebview" rel="nofollow noreferrer"&gt;https://developer.apple.com/documentation/webkit/wkwebview&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;Android Verison 和 APILevel 的对应关系：   &lt;a href="https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels" rel="nofollow noreferrer"&gt;https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;&lt;/p&gt; &lt;hr&gt;&lt;/hr&gt; &lt;blockquote&gt;如果你喜欢我的文章，希望点赞 收藏  评论  三连支持一下，谢谢你，这对我真的很重要！&lt;/blockquote&gt; &lt;p&gt;欢迎大家关注我的微信公众号：  &lt;strong&gt;卤蛋实验室&lt;/strong&gt;，目前专注前端技术，对图形学也有一些微小研究。&lt;/p&gt; &lt;p&gt;原文链接    &lt;a href="https://supercodepower.com/fontend-target" rel="nofollow noreferrer"&gt; 对前端版本兼容问题的研究&lt;/a&gt;：更新更及时，阅读体验更佳。&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>前端 babel webpack 浏览器兼容性 兼容性问题</category>
      <guid isPermaLink="true">https://itindex.net/detail/62360-%E5%89%8D%E7%AB%AF-%E9%97%AE%E9%A2%98</guid>
      <pubDate>Thu, 11 Aug 2022 10:19:23 CST</pubDate>
    </item>
    <item>
      <title>UC浏览器被曝中间人攻击漏洞，全球多达十几亿设备均受影响</title>
      <link>https://itindex.net/detail/59403-uc-%E6%B5%8F%E8%A7%88%E5%99%A8-%E4%B8%AD%E9%97%B4%E4%BA%BA</link>
      <description>&lt;p&gt;  &lt;strong&gt;自从 Symbian 时代开始，UC浏览器就已经成为移动端用户量最大的浏览器之一，此后逐渐发展之Android、iOS及Windows平台。目前在Google Play上UC浏览器安装量超过5亿、而在国内某安卓应用市场下载量也超过12亿。&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;        &lt;/p&gt;
 &lt;p&gt;  &lt;em&gt;Android端UC浏览器中间人攻击 Demo&lt;/em&gt;&lt;/p&gt;
 &lt;p&gt;而近期，Dr.Web恶意软件分析师发现UC浏览器存在中间人攻击漏洞，允许远程攻击者将恶意模块推送到目标设备。而根据 BleepingComputer 的测试结果，桌面端UC浏览器可能同样容易遭受中间人攻击，导致攻击者可以在用户电脑上下载恶意拓展。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="WX20190327-161016@2x.png" height="225" src="https://image.3001.net/images/20190327/15536742262213.png!small" width="690"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;根据Google Play的政策，应用程序禁止从Google Play意外的其他来源下载可执行代码。不过，虽然UC浏览器在Google Play上架，但其本身却存在违反上述规定的行为。&lt;/p&gt;
 &lt;p&gt;根据Dr.Web的分析，UC浏览器可以从远程服务器下载可执行的Linux组件，其本身并不存在恶意行为，只是为了方便打开office、PDF文档。下载之后，该组件会保存到其目录下以供执行。这也意味着，UC浏览器存在直接绕过 Google Play 服务器直接接受和执行代码，这也为中间人攻击提供了可能。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="D2lD72TX0AAVOsA.png" height="435" src="https://image.3001.net/images/20190327/1553675932351.png!small" width="690"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;为了下载新的插件，UC浏览器会向远程服务器发送请求，并接收响应文件的链接。关键在于，应用程序是通过不安全的通道（HTTP协议而不是加密的HTTPS）与服务器实现通信。攻击者可以hook来自应用的请求并替换命令，使得浏览器在无意识中从恶意服务器下载某个插件。而UC浏览器由于使用未签名的插件，启动恶意插件无需经过任何安全验证。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="UC Browser and UC Browse Mini.png" height="325" src="https://image.3001.net/images/20190327/15536756464370.png!small" width="690"&gt;&lt;/img&gt;  &lt;img alt="WX20190327-112656@2x.png" height="395" src="https://image.3001.net/images/20190327/1553675654187.png!small" width="690"&gt;&lt;/img&gt;鉴于UC浏览器在全球范围内的装机量，该漏洞所带来的威胁不容小觑。通过这种中间人攻击的模式，犯罪分子可以传播并执行各种恶意差插件，例如可以显示钓鱼邮件以窃取用户名、密码、银行卡信息等多种个人数据，才外，还可木马插件还能够访问受保护的浏览器文件并窃取存储在程序目录中的密码信息。&lt;/p&gt;
 &lt;p&gt;除了UC浏览器之外，Google Play还上架了一款“UC 浏览器 Mini版”，显示安装次数已经超过1亿。在UC 浏览器 Mini版本中，同样存在绕过Google Play下载未经测试插件的行为，这表明同样存在中间人攻击的风险。不过，上述视频所展示的中间人攻击方式并不适用于Mini版本的UC浏览器。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="UC Browser downloding extensions over HTTP.png" height="364" src="https://image.3001.net/images/20190327/15536764035025.png!small" width="690"&gt;&lt;/img&gt;  &lt;strong&gt;   &lt;em&gt;桌面端UC浏览器，通过HTTP下载插件&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;不止在Android版本，BleepingComputer对桌面端UC浏览器进行了类似的测试。桌面端UC浏览器在查看PDF文档时会要求下载额外的插件，通过不安全的HTTP通信从远程服务器下载插件。这意味着攻击者可能通过中间人攻击的方式在用户计算机上下载恶意插件。&lt;/p&gt;
 &lt;p&gt;在发现该漏洞之后，Dr.Web专家联系了两个浏览器的开发人员，但均拒绝发表评论。于是，Dr.Web方面转而直接将此情况报告给Google，但截止FreeBuf发稿之时，两款UC浏览器在Google Play商店依然可供下载，且该漏洞仍然可被利用。&lt;/p&gt;
 &lt;h3&gt;参考链接&lt;/h3&gt;
 &lt;blockquote&gt;  &lt;p&gt;1.   &lt;a href="https://vms.drweb.com/search/?q=UC%20Browser"&gt;https://vms.drweb.com/search/?q=UC%20Browser&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;2.   &lt;a href="https://news.drweb.com/show/?i=13176"&gt;https://news.drweb.com/show/?i=13176&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;3.   &lt;a href="https://www.bleepingcomputer.com/news/security/uc-browser-for-android-desktop-exposes-500-million-users-to-mitm-attacks/"&gt;https://www.bleepingcomputer.com/news/security/uc-browser-for-android-desktop-exposes-500-million-users-to-mitm-attacks/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
 &lt;p&gt;  &lt;strong&gt;*本文作者：shidongqi，转载请注明来自FreeBuf.COM&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>资讯 UC浏览器 中间人攻击 漏洞</category>
      <guid isPermaLink="true">https://itindex.net/detail/59403-uc-%E6%B5%8F%E8%A7%88%E5%99%A8-%E4%B8%AD%E9%97%B4%E4%BA%BA</guid>
      <pubDate>Wed, 27 Mar 2019 16:56:27 CST</pubDate>
    </item>
    <item>
      <title>合理使用 HTTP 缓存</title>
      <link>https://itindex.net/detail/56830-%E5%90%88%E7%90%86%E4%BD%BF%E7%94%A8-http-%E7%BC%93%E5%AD%98</link>
      <description>&lt;p&gt;HTTP 缓存
  &lt;a href="http://harttle.com/2017/04/04/using-http-cache.html"&gt;使用 HTTP 缓存：Etag, Last-Modified 与 Cache-Control&lt;/a&gt;
一文对 HTTP 协议的缓存机制进行了简单的讨论，本文集中讨论实际操作中的最佳实践。&lt;/p&gt;

 &lt;h1&gt;TL;DR&lt;/h1&gt;

 &lt;ul&gt;
    &lt;li&gt;谨慎地使用过期时间，最好配合 MD5 一起使用。&lt;/li&gt;
    &lt;li&gt;总是启用条件请求，比如    &lt;code&gt;Etag&lt;/code&gt; 或    &lt;code&gt;Last-Modified&lt;/code&gt;。&lt;/li&gt;
    &lt;li&gt;文件服务采用    &lt;code&gt;Last-Modified&lt;/code&gt;，动态内容采用    &lt;code&gt;Etag&lt;/code&gt;。&lt;/li&gt;
    &lt;li&gt;分离经常变化的部分，也会提高缓存的命中率。&lt;/li&gt;
&lt;/ul&gt;



 &lt;h1&gt;谨慎使用过期时间&lt;/h1&gt;

 &lt;p&gt;设置过期时间可以使用  &lt;code&gt;Cache-Control&lt;/code&gt;字段也可以使用  &lt;code&gt;Expires&lt;/code&gt;字段，前者设置有效期长度后者设置截止日期。
一旦浏览器获得这样的资源，在一定时期内服务器都无法保证资源的更新。
因此使用不当的过期时间可能导致资源的有效性和一致性问题。&lt;/p&gt;

 &lt;p&gt;  &lt;strong&gt;有效性问题&lt;/strong&gt;。考虑一个简单的场景：  &lt;a href="http://harttle.com"&gt;Harttle&lt;/a&gt; 编写了一篇工作周报，设置更新周期为一周并立即发布。
发布后很快 Harttle 便发现里面老板的名字写错了， 更新后又再次发布。
即便如此，在两次发布之间打开过该周报的同学，可能在一周内都会看到错误的版本。&lt;/p&gt;

 &lt;p&gt;  &lt;strong&gt;一致性问题&lt;/strong&gt;。页面的脚本文件之间可能存在依赖关系，这时如果使用   &lt;code&gt;max-age&lt;/code&gt; 策略来缓存这些文件
可能会使整个页面不可访问，因为   &lt;code&gt;max-age&lt;/code&gt; 无法表达依赖关系。
文件版本错乱的状况远比你想象的常见：浏览器随时可以丢弃任意一个文件的缓存、
相互依赖的文件并非总是一同载入、同一页面的资源到达时间也略有不同。&lt;/p&gt;

 &lt;p&gt;过期时间对于前端的基础库、博客页面、带MD5的资源等比较有用，尤其是 CDN 上的资源常常都有很长的过期时间。&lt;/p&gt;

 &lt;h1&gt;启用条件请求&lt;/h1&gt;

 &lt;p&gt;  &lt;strong&gt;条件请求&lt;/strong&gt;（  &lt;a href="https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Conditional_requests"&gt;Conditional Requests&lt;/a&gt;）是指结果可能会被校验程序改变的   &lt;a href="http://harttle.com/2014/10/01/http.html"&gt;HTTP 请求&lt;/a&gt;。
其中  &lt;strong&gt;校验器&lt;/strong&gt;（validator）通常是指缓存相关的校验程序。
条件头字段包括   &lt;code&gt;If-Match&lt;/code&gt;,   &lt;code&gt;If-None-Match&lt;/code&gt;,   &lt;code&gt;If-Modified-Since&lt;/code&gt;,   &lt;code&gt;If-Unmodified-Since&lt;/code&gt;,   &lt;code&gt;If-Range&lt;/code&gt;。
详情可参考   &lt;a href="http://harttle.com/2017/04/04/using-http-cache.html"&gt;使用 HTTP 缓存&lt;/a&gt; 一文，交互过程在   &lt;a href="https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Conditional_requests"&gt;MDN Conditional Requests&lt;/a&gt; 也有很好的图示。&lt;/p&gt;

 &lt;p&gt;不论有无   &lt;code&gt;max-age&lt;/code&gt;，总是应该启用条件请求。因为浏览器在刷新时就会忽略   &lt;code&gt;max-age&lt;/code&gt;，
另外假设文件已过期，条件请求也可能减少不必要的传输。&lt;/p&gt;

 &lt;p&gt;对于静态的文件服务采用   &lt;code&gt;Last-Modified&lt;/code&gt; 比较方便，但对于很多网站页面而言最后修改时间很难确定。
此时   &lt;code&gt;Etag&lt;/code&gt; 更加方便，只需渲染结束后通过一次哈希来决定是否发送。
比如在   &lt;a href="http://expressjs.com/zh-cn/api.html"&gt;Express.js&lt;/a&gt; 中   &lt;code&gt;Etag&lt;/code&gt; 是默认开启的，此外我们也可以做   &lt;a href="http://harttle.com/2016/10/07/express-cache.html"&gt;进一步的性能优化&lt;/a&gt;。&lt;/p&gt;

 &lt;h1&gt;使用 MD5&lt;/h1&gt;

 &lt;p&gt;由于过期时间独自无法解决快速更新的问题，条件请求也无法避免发送一次请求。
MD5 + 永不过期的 CDN 几乎已经成为业界常态：为每一个静态文件的文件名都增加版本号（或 MD5 值），
每次更新文件都同时更新版本号，每个文件都在  &lt;code&gt;Cache-Control&lt;/code&gt;设为永不过期，
同时 HTML 等入口文件的   &lt;code&gt;Cache-Control&lt;/code&gt; 则设为禁止缓存。&lt;/p&gt;

 &lt;blockquote&gt;
    &lt;p&gt;标准上讲，使用 URL 的 search 字符串作为文件版本号是完全等价的，这样文件名都无需改变。
这一 Trick 在 Github Badges 中很常见。但是在实践中，网络运营商和 CDN 提供商不一定会理会 search 字符串。&lt;/p&gt;
&lt;/blockquote&gt;

 &lt;p&gt;增加版本号这一操作（成为 revision）通常在发布过程中进行，与压缩混淆一起。
主流的构建工具均已支持：&lt;/p&gt;

 &lt;ul&gt;
    &lt;li&gt;gulp-rev:    &lt;a href="https://www.npmjs.com/package/gulp-rev"&gt;https://www.npmjs.com/package/gulp-rev&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;rev-hash:    &lt;a href="https://www.npmjs.com/package/rev-hash"&gt;https://www.npmjs.com/package/rev-hash&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;grunt-rev:    &lt;a href="https://github.com/sebdeckers/grunt-rev"&gt;https://github.com/sebdeckers/grunt-rev&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;webpack-md5-hash:    &lt;a href="https://www.npmjs.com/package/webpack-md5-hash"&gt;https://www.npmjs.com/package/webpack-md5-hash&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

 &lt;h1&gt;分离变化的部分&lt;/h1&gt;

 &lt;p&gt;按照现在的节奏，一个互联网应用几乎每天都会有更新。
那么对于一个使用频次较高的网站，将所有静态文件（比如 JavaScript 脚本）打包在一起会让缓存整体失效。
在这种情况下分离的缓存会更加有效。比如：&lt;/p&gt;

 &lt;ul&gt;
    &lt;li&gt;把经常变化的业务逻辑抽离，单独缓存。&lt;/li&gt;
    &lt;li&gt;基础工具库独立打包并缓存。&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>HTTP 缓存 网络 浏览器</category>
      <guid isPermaLink="true">https://itindex.net/detail/56830-%E5%90%88%E7%90%86%E4%BD%BF%E7%94%A8-http-%E7%BC%93%E5%AD%98</guid>
      <pubDate>Tue, 04 Apr 2017 08:00:00 CST</pubDate>
    </item>
    <item>
      <title>应用分发当年的大戏要重演了，只是这一次主角变成了新媒体内容</title>
      <link>https://itindex.net/detail/54267-%E5%BA%94%E7%94%A8-%E5%A4%A7%E6%88%8F-%E4%B8%BB%E8%A7%92</link>
      <description>&lt;p&gt;如果给两三年前中国互联网上竞争最激烈的领域排个名，应用分发一定会占一个；而如果数一下中国互联网当下以及接下来会变的竞争异常激烈的领域，内容分发也一定会算一个。&lt;/p&gt;
 &lt;p&gt;说到应用分发大家应该都挺熟悉，各类应用下载商店应该是见得很多了；但说到内容分发可能就要解释一下了，毕竟这个词以前的意思和我要表述的其实并不太一样。在当下，由于科技公司越来越多的介入，内容从媒体到读者之间的传播路径正在发生非常大的变化，那些有着过亿用户的科技产品已经成了重要的内容展示渠道，更重要的是，它们开始用技术手段来影响媒体的哪些内容能被读者看到，以及读者看到的是什么。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;媒体内容当下的变化趋势&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;在国外，Facebook、苹果都已经开始介入到媒体内容分发领域；在国内，今日头条、UC 浏览器、英威诺、一点资讯以及豌豆荚一览同样在做着影响内容传播路径的事。按照一位业内人士的说法，从下半年开始，内容渠道领域的竞争会变的非常激烈。&lt;/p&gt;
 &lt;p&gt;其实，无论国外还是国内，这些积极介入到媒体内容领域的科技公司的一个共同点就是：它们自己都不是内容的生产者，它们做的事更多是用技术或者产品的手段介入到媒体内容和读者之间，改变已有的媒体内容传播路径、分析并影响读者的阅读习惯。&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://cdn.pingwest.com/wp-content/uploads/2015/08/Untitled34561.jpg"&gt;   &lt;img alt="Untitled3456" height="821" src="http://cdn.pingwest.com/wp-content/uploads/2015/08/Untitled34561.jpg-700x0" width="1404"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;拼图依次是：今日头条、豌豆荚一览、UC 浏览器&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;当然了，在这个大的共同点下，各家的做法也各有各的不同：&lt;/p&gt;
 &lt;blockquote&gt;
  &lt;p&gt;Facebook：Facebook 在 5 月份推出的    &lt;a href="http://tech.qq.com/a/20150513/047367.htm" target="_blank"&gt;Instant Articles&lt;/a&gt; 让媒体可以直接发布自制新闻内容，它的载入速度更快，并且还可以通过算法为用户推荐感兴趣的文章；&lt;/p&gt;
  &lt;p&gt;苹果：苹果在 iOS 9 中内置一个 News 新闻阅读 app，利用算法和人工编辑一起为用户提供可能感兴趣的内容。&lt;/p&gt;
  &lt;p&gt;今日头条：这个阅读应用主要在做三件事：媒体内容抓取、算法个性推荐、收编内容作者也就是自媒体。&lt;/p&gt;
  &lt;p&gt;UC 浏览器：浏览器也开始做个性化内容阅读了。在新版的 UC 中，只要在主屏幕向上一划，它立马就变身成了一个今日头条。按照 UC 浏览器总经理朱挺的说法，App 的竞争真的结束了，内容的纯粹性、内容的依附性越来越变成一个竞争的优势。&lt;/p&gt;
  &lt;p&gt;   &lt;a href="http://www.pingwest.com/inveno/" target="_blank"&gt;英威诺&lt;/a&gt;：它做的事情和今日头条很类似，最大的区别就英威诺直接和手机厂商合作，酷派瀑布流、华为悦读、联想小知、天语语知，这些内容产品背后都有英威诺的身影。简单说就是直接预装在手机里。&lt;/p&gt;
  &lt;p&gt;豌豆荚一览：一览和上面这些应用不同的是它是通过应用内搜索技术抓取各个应用内的内容，这包括新闻资讯，但又不仅限于这一类，像豆瓣、Instagram、什么值得买之类的也都是一览抓取的对象。&lt;/p&gt;
&lt;/blockquote&gt;
 &lt;p&gt;看完上面的案例之后不难发现，无论大公司还是创业公司都已经挤到内容分发这个领域中来。大公司往往是希望借内容增加已有产品的粘性，创业公司则是寻求新风口下的成功机遇。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;为什么会出现这种变化？&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;说起来，媒体内容其实是个挺古老的东西，它为什么突然就成为科技公司的焦点了呢？在我个人看来，这和当下互联网线上服务创新乏力不无关系。&lt;/p&gt;
 &lt;p&gt;看看这半年多以来美国的科技公司在研究什么？汽车、虚拟现实、机器学习、无人机、帮更多的人接入互联网；中国的科技公司呢？大多都在想着怎么把线下服务互联网化；而至于聚焦在线上产品方面的创新，其实非常少，就像我的一位同事在硅谷呆半年回来后也说那边能感受到比较有意思的服务其实挺有限。&lt;/p&gt;
 &lt;p&gt;虽然线上服务本身的创新正在面临瓶颈，但用户倾注在手机上的注意力却并没有减少。这个时候针对已有服务的优化自然也就变的更加关键。想一想，你的手机里，既能吸引大量用户的注意力，又能让科技公司的技术有足够的释放空间的，媒体内容自然可以算得上比较靠前的那一类。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;这对媒体来说是一件好事吗？&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;媒体的内容纷纷被科技公司看中，这对经常被看衰的媒体产业来说是一件好事吗？其实并不一定。&lt;/p&gt;
 &lt;p&gt;首先，那些内容主要靠转载、更新量少的媒体在这一波内容变革中会首先被冲击。有了个性化的内容聚合和分发平台后，这样的媒体品牌对用户的价值会越来越小，相应的，也难以再获取新的用户。&lt;/p&gt;
 &lt;p&gt;其次，对于原创的媒体来说，这类产品也可能会削弱媒体本身的品牌。因为，当用户在 UC 浏览器上看到一篇 PingWest 品玩的文章时，他和别人提起时自然会说是在 UC 浏览器上看到的，而不会说是在 PingWest 品玩上。&lt;/p&gt;
 &lt;p&gt;最后，当然就是人才争夺了。像今日头条正在努力签约自媒体，一些员工被要求每周找 5 名自媒体作者开头条号。未来，今日头条会直接向这些作者提供利益分成。这样以来，媒体的人才难免会被分流一部分。&lt;/p&gt;
 &lt;p&gt;当然了，对于媒体公司来说，让技术参与到内容分发中也不是没有好处。利用这些公司的技术手段和用户量优势，某些内容可以获得更多的阅读量，作者也可以通过跟踪数据变化来生产更符合用户口味的文章。这些方式相当于让内容产业也有了获得快速增长的机会。&lt;/p&gt;
 &lt;p&gt;总结来说，由于技术和产品的因素越来越多的介入到内容传播之中，这件事往上看会影响到上游的内容生产者，往下看也会影响到下游的读者。这些科技公司之间的竞争将在接下来极大的影响到整个产业链条上的每一个参与方。应用分发当年的大戏正在重演，只是这一次主角变成了新媒体内容。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;题图来源：   &lt;a href="http://www.hellorf.com/" target="_blank"&gt;站酷海洛创意&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;相关阅读：&lt;/p&gt;
 &lt;p&gt;      &lt;a href="http://www.pingwest.com/wanbao-2015-08-28/"&gt;【第2编辑室】一周科技数字：苹果终于要扔掉“祖传800万像素”摄像头了&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;      &lt;a href="http://www.pingwest.com/social-is-dead/"&gt;还打算创业做一款社交产品？我劝你还是歇歇吧&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;      &lt;a href="http://www.pingwest.com/pw-2015-08-28/"&gt;【晨间阅读】就在这周，地球上1/7的人在同一天内使用了Facebook&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;      &lt;a href="http://www.pingwest.com/hey-siri-give-us-a-hint/"&gt;嘿，Siri，你怎么又淘气了！&lt;/a&gt;&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>现象 Facebook UC 浏览器 今日头条 内容</category>
      <guid isPermaLink="true">https://itindex.net/detail/54267-%E5%BA%94%E7%94%A8-%E5%A4%A7%E6%88%8F-%E4%B8%BB%E8%A7%92</guid>
      <pubDate>Sat, 29 Aug 2015 09:00:39 CST</pubDate>
    </item>
    <item>
      <title>移动浏览器的需求弱化之后，UC 想要变成你的资讯阅读器</title>
      <link>https://itindex.net/detail/55516-%E7%A7%BB%E5%8A%A8-%E6%B5%8F%E8%A7%88%E5%99%A8-%E9%9C%80%E6%B1%82</link>
      <description>&lt;p&gt;“趋势来了，即便不做什么，也会被推着向前走，大家非常高兴；趋势走了，谁都挡不住”。UC 总裁何小鹏今天讲的这句话应该可以引起很多移动互联网行业从业者的共鸣，这其实也是 UC 浏览器自身的真实经历。作为一款已经 12 年的老产品，UC 浏览器现在决定去抓内容这个新趋势。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;手机浏览器该怎么办？&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;不用我说，你可能也觉得自己现在用浏览器的时长在降低。以前，浏览器是我们手机上耗时最多的应用之一，但现在你不用浏览器，各种 app 也能基本满足你的需求。何小鹏说，UC 尝试过借应用商店、搜索引擎、H5 等来维护浏览器在移动端的优势，但结果发现都不行，那浏览器要怎么办？&lt;/p&gt;
 &lt;p&gt;答案是内容。如果你足够细心的话，  &lt;a href="https://itunes.apple.com/cn/app/uc-liu-lan-qi-5yi-ren-liu/id586871187?mt=8" target="_blank"&gt;或许已经发现 UC 浏览器在 App Store 中把自己归到了“新闻”这一类&lt;/a&gt;。这件事放到几年前是很难想象的，对于一款已经存在了十多年的工具型产品，UC 这么变能比的过今日头条、腾讯新闻这些从一开始就做资讯的产品吗？今天，阿里移动事业群总裁俞永福、UC 总裁何小鹏一起谈了谈自己的看法。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="IMG_0440 2" height="532" src="http://cdn.pingwest.com/wp-content/uploads/2016/04/IMG_0440-2.jpg?imageView2/2/w/750/q/90" width="800"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;UC 浏览器的第三次转型&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;俞永福在谈这次转变时首先把 UC 划分为三个阶段。在第一个阶段，智能手机性能还不行，UC 浏览器做的是提高用户获取信息的速度；在第二个阶段，智能手机性能已经很不错了，UC 浏览器用网址导航、搜索这些让用户体验更丰富、简单；在第三个阶段，UC 浏览器的管理者们认为它应该帮助用户获取信息，而获取信息最简单的方式就是千人千面，所以这一次转型的方向也就确定了。&lt;/p&gt;
 &lt;p&gt;对于 UC 浏览器来说，这次要在新方向上有突破可能比之前都要困难。在以前，它虽然也会根据市场改变策略和方向，但仍然还是浏览器；但接下来，UC 浏览器可能会涉及图文、视频、直播、音乐等各类内容，这就让它越来越从一个工具型产品变成了一个资讯型产品。&lt;/p&gt;
 &lt;p&gt;从行业的角度来说，现在内容分发行业的竞争非常激烈，今日头条在喊着赶超腾讯，腾讯也做了和今日头条非常类似的产品天天快报来对抗今日头条。在 2015 年的前半年，这件事看上去还是腾讯、今日头条、一点资讯等资讯产品之间的争执，但现在 UC 浏览器却突然加入到这场战斗了。俞永福说：“现在内容平台的竞争已经进入了决赛阶段，这场比赛的参与者不超过四个，在这之外的都已经出局了”。&lt;/p&gt;
 &lt;p&gt;刚进场不久，游戏就是决赛阶段了，这看上去对新加入的 UC 浏览器好像并不是好事。而且，由于各个内容平台能拿到的媒体内容往往差别不大，这对后来者来说就更不利了。不过，俞永福在谈到和对手之间的差别时却比较看得开，在他看来：“现在大家都在做“猜你喜欢”看什么，差别在于：一类是基于社交，另一类是基于一个更大的数据”。&lt;/p&gt;
 &lt;p&gt;俞永福认为，由于人的线上、线下行为往往差别很大，所以社交数据并不真的知道你喜欢什么。在 UC 之前，淘宝已经做了很多年千人千面的产品，所以 UC 浏览器也能把这一套方法从电商产品搬到内容领域。&lt;/p&gt;
 &lt;p&gt;从理论上来说，阿里巴巴确实有大数据方面的优势，UC 也有大量的用户基数，但这些最终能不能让 UC 浏览器成为一款推荐精准的产品还是要靠数据说话。俞永福也愿意把这个时间维度放到 5 年的长度来看，或许要不了那么久我们就知道这场竞争谁赢谁输了。&lt;/p&gt;
 &lt;p&gt;“还没有看过一个硬件产品能在 20 年里活的很棒”。何小鹏在演讲时说的这句话用到软件领域恐怕也合适，不管 UC 浏览器的老用户们愿不愿看它变成一款资讯产品，已经 12 年的 UC 浏览器的确要做它该做的改变。&lt;/p&gt;
 &lt;p&gt;相关阅读：&lt;/p&gt;
 &lt;p&gt;      &lt;a href="http://www.pingwest.com/antgroup-elephant/"&gt;小蚂蚁变大象：支付宝母公司蚂蚁金服完成 45 亿美元融资&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;      &lt;a href="http://www.pingwest.com/eleme-belong-to-alibaba-in-the-future/"&gt;饿了么获阿里巴巴12.5亿美元投资，离被收购也不远了&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;      &lt;a href="http://www.pingwest.com/the-reason-we-love-laoluo/"&gt;当他远远地站在马云身后时，我们尤爱这样的罗永浩&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;      &lt;a href="http://www.pingwest.com/youku-tudou-joins-alibaba/"&gt;优酷土豆正式加入阿里巴巴集团，看看双方高层都是怎么说的&lt;/a&gt;&lt;/p&gt;
 &lt;img src="http://www.pingwest.com/r.png?n=new-uc-strategy"&gt;&lt;/img&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>短新闻 UC 浏览器 阿里巴巴</category>
      <guid isPermaLink="true">https://itindex.net/detail/55516-%E7%A7%BB%E5%8A%A8-%E6%B5%8F%E8%A7%88%E5%99%A8-%E9%9C%80%E6%B1%82</guid>
      <pubDate>Thu, 28 Apr 2016 18:34:26 CST</pubDate>
    </item>
    <item>
      <title>如何理解谷歌浏览器的安全警告信息</title>
      <link>https://itindex.net/detail/54185-%E7%90%86%E8%A7%A3-%E8%B0%B7%E6%AD%8C-%E6%B5%8F%E8%A7%88%E5%99%A8</link>
      <description>&lt;p&gt;最近如果使用Chrome访问国内的很多网站的时候，比如exmail.qq.com, 你可能会注意到这样一个对话框，这个是什么意思？访问链接没有私密性吗? 等等，这里好像有点不对， 网页私密性到底是个啥，为啥会提醒我这个问题，我不是已经输了密码登录了嘛？事情要从头说起。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="722" src="http://www.techug.com/wordpress/wp-content/uploads/2015/08/10081946_iTuw.jpg?9bae72" width="600"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;blockquote&gt;  &lt;p&gt;我上个邮箱，连私密性都没有了，那里面的照片应该怎么办，以前修电脑没有私密性，现在连上网都没有私密性，难道我又要红了？&lt;/p&gt;&lt;/blockquote&gt;
 &lt;p&gt;一、HTTPS (安全超文本协议）怎么来的？&lt;/p&gt;
 &lt;p&gt;1997 年 CERN发明HTTP 协议并用于万维网的时候，仅仅是为了在学术界内部做一个共享数据的平台, 并没有想到太多传输中的安全性。毕竟当年网络规模非常小，而计算机以及昂贵的网络设备并不是每个人都可以买得起的。&lt;/p&gt;
 &lt;p&gt;他们当然没有料到之后万维网居然成了一个信息传递的通用平台，一帮人甚至丧心病狂地在上面做起了Web电子邮箱、网络银行一类的服务。这类服务对安全性和私密性的要求都非常严格， 因为基本上没有人希望自己的银行密码，私人的邮件在传输中被第三方看到。&lt;/p&gt;
 &lt;blockquote&gt;  &lt;p&gt;所以问题就来了， HTTP 是明文传输的。 HTTP倒是支持密码认证，只是不巧的是，密码也是明文传的。&lt;/p&gt;&lt;/blockquote&gt;
 &lt;p&gt;针对这种情况，在网景一帮科学家，特别是 Dr. Taher Elgamal （号称SSL 之父）的努力下， HTTPS 横空出世了。&lt;/p&gt;
 &lt;blockquote&gt;  &lt;p&gt;HTTPS 里面，所有传输的数据都是加密过的，于是第三方无法在数据的传输过程中获得任何有用的数据，数据传输中的私密性自然得到了保证。&lt;/p&gt;&lt;/blockquote&gt;
 &lt;p&gt;至少当初设计的目的是这样子。&lt;/p&gt;
 &lt;p&gt;HTTPS 并非是一个全新的协议，其实是在 HTTP的 基础上，加了 SSL （安全套接字）或者是后来的 TLS (传输安全协议)。 SSL/TLS 工作在 HTTP 之下, 负责加密所有传输的数据。&lt;/p&gt;
 &lt;p&gt;说个题外话，当时不仅仅是 HTTP，众多的互联网上层协议，即应用层协议，STMP 电子邮件协议 一类，大多都是明文传输的。而移动互联网或  &lt;br /&gt;
者其他网络，都是基于一些标准的协议，就是TCP/IP协议簇。早期时候，这些协议是由互联网领域专家联合制定的，就像现在制定法律的过程一样。而经过实  &lt;br /&gt;
际的验证，其不严谨性渐渐被发现，于是人们在此前的基础上进行不断更新，SSL/TLS就是这样出来的。 SSL/TLS  &lt;br /&gt;
由于是工作在TCP层和应用层之间，它可以加密任何应用层协议，包括STMP一类。 从这个角度说来，网景对互联网的贡献其实是非常深远的。&lt;/p&gt;
 &lt;p&gt;HTTPS 使用非对称算法交换密钥，这个也是一个非常精巧的算法，有兴趣的同学可以点击这里了解下，号称是20世纪最重要的算法之一。&lt;/p&gt;
 &lt;p&gt;HTTPS 除了解决加密问题以外，还需要还解决另外一个问题： 网站真实身份鉴别&lt;/p&gt;
 &lt;p&gt;比如，如果你上招行网站，你怎么知道你上的就是招商银行网站而不是一个做得和招商银行一模一样的钓鱼网站呢？&lt;/p&gt;
 &lt;p&gt;这个其实和现实生活中如何鉴定一个长的像警察并且突然站到你面前要你交罚款的人是否是真正的人民警察是一个场景。&lt;/p&gt;
 &lt;p&gt;”警官证可以给我看看吗，谢谢！“&lt;/p&gt;
 &lt;p&gt;HTTPS 用的是同一种方法，它要求每一个使用这个协议的网站从专业的第三方机构申请一个数字证书，数字证书中包括网站的域名，所有者等等 （当然也包括公钥，这里不详细展开协议细节了）。&lt;/p&gt;
 &lt;p&gt;这个数字证书其实就相当于现实中的警官证。&lt;/p&gt;
 &lt;p&gt;在访问这个网站的时候浏览器会对证书做一次检查，而这个对话框，就是检查的结果。&lt;/p&gt;
 &lt;p&gt;我们来看看这个对话框内容是个什么鬼。&lt;/p&gt;
 &lt;p&gt;二、如何鉴别你是警察？因为警官证也有可能是假的。&lt;/p&gt;
 &lt;p&gt;第一个：&lt;/p&gt;
 &lt;blockquote&gt;  &lt;p&gt;该网站的身份验证已经通过GeoTrust SSL CA–G2的验证，但没有公开审核记录。该网站的安全设置已过期，可能导致日后的Chrome 版本无法安全访问该网站。&lt;/p&gt;&lt;/blockquote&gt;
 &lt;p&gt;刚才有提到证书是由专业机构颁发的，不过，&lt;/p&gt;
 &lt;blockquote&gt;  &lt;p&gt;－ 专业机构就没有坏人了嘛。&lt;/p&gt;
  &lt;p&gt;－ 证书就不会被人偷吗。&lt;/p&gt;
  &lt;p&gt;－ 专业机构被骗了怎么办。&lt;/p&gt;&lt;/blockquote&gt;
 &lt;p&gt;事实上，荷兰专业机构(DigiNotar)甚至被入侵过一次， 丢了好几百个证书，你可以自行脑补一下有人潜入公安部自己办了几百个警官证是一个多么壮观的场景。&lt;/p&gt;
 &lt;blockquote&gt;  &lt;p&gt;于   &lt;br /&gt;
是，IETF在2013年启动了一个叫做certificate-transparency的开源项目，把所有已知的合法证书做了一个白名单，浏览器在验   &lt;br /&gt;
证证书的时候同时也会去查看这个证书是不是在白名单里面。 如果不在的话，就会告知用户这个证书找不到记录，于是，有可能是假或者是被盗的证书。&lt;/p&gt;&lt;/blockquote&gt;
 &lt;p&gt;但是，这里有一个致命的问题：&lt;/p&gt;
 &lt;blockquote&gt;  &lt;p&gt;到目前为止，这个还只是一个试验性项目，而这个世界上那么多的网站， 你白名单得过来嘛。&lt;/p&gt;&lt;/blockquote&gt;
 &lt;p&gt;  &lt;img alt="" height="438" src="http://www.techug.com/wordpress/wp-content/uploads/2015/08/10081946_alMV.jpg?9bae72" width="307"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;（注意：已经没有警示标志）&lt;/p&gt;
 &lt;p&gt;比如上图所显示的，其实也没有审核纪录，不过警告的标示去掉了。说明谷歌其实自己也知道目前白名单的覆盖很差，一般找不到记录，并不会加上确切的警告标示。所以，目前你可以忽略它。&lt;/p&gt;
 &lt;p&gt;关键在第二个：&lt;/p&gt;
 &lt;blockquote&gt;  &lt;p&gt;本网站采用较弱的安全配置（SHA-1签名），所以你的连接可能不是私人的。&lt;/p&gt;&lt;/blockquote&gt;
 &lt;p&gt;这个就比较有意思了。&lt;/p&gt;
 &lt;p&gt;还是那个警官证的问题。 要搞一个警官证除了去偷/骗/潜入公安部自己做一个真的以外, 你还可以做个假的嘛。&lt;/p&gt;
 &lt;p&gt;对于数字证书来说，最重要的鉴别真假的部分是数字签名，而鉴于数字证书一般不小，不可能对每个字节都签一次名，一般来说是对数字证书的一个哈希值进行签名。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="196" src="http://www.techug.com/wordpress/wp-content/uploads/2015/08/10081946_6Jdd.png?9bae72" width="600"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;如果你不知道哈希值是什么，我给你打个比方。如果你是一个数字证书， 那你的照片就是你的哈希值。&lt;/p&gt;
 &lt;p&gt;它包含下面2个条件：&lt;/p&gt;
 &lt;blockquote&gt;  &lt;p&gt;－ 通过合适的手段，可以从你产生你的照片， 但是没法从照片产生你 。意思是，先有你，才能有照片。&lt;/p&gt;
  &lt;p&gt;－ 只有你可以精确的产生你的照片，别人都不行。你就是唯一的，你的特征是别人没有的。&lt;/p&gt;&lt;/blockquote&gt;
 &lt;p&gt;所以如果想检查一个人的警官证，只需要看看照片能不能对上人(哈希值符合)，照片上面的骑缝章对不对(数字签名)。但是这个骑缝章只需要盖在照片上，而不需要盖在警官兄的脸上。当然我知道这个比喻有非常多学术上的不严谨性，不过这个是我目前能找到最容易理解的比喻之一了。&lt;/p&gt;
 &lt;p&gt;数字证书中， SHA-1就是一种常见的哈希算法。 可以像照相机一样，给你的数字证书生成一个唯一值（照片）。&lt;/p&gt;
 &lt;p&gt;只是这个算法有一个问题。 这个算法这个函数由于设计时间早，强度太差，导致有可能用两个不同的数字证书可能会生成同样一个值。&lt;/p&gt;
 &lt;p&gt;这个就像如果你有一个照身份照的照相机，不过这个神奇的照相机拍的太模糊，以致于通过特殊的设定，可以用另外一个人照出和真实警官一模一样的照片。恭喜你，如果你发现了这个设定，你就可以大规模的制作套牌警官证了。&lt;/p&gt;
 &lt;blockquote&gt;  &lt;p&gt;这种现象在哈希函数中被称为是“碰撞”。&lt;/p&gt;&lt;/blockquote&gt;
 &lt;p&gt;对于SHA-1 算法 如果要找到这个“特殊的设定”大概需要2的74次方个操作，（也有论文指出，只需要2的61次方个操作即可完成）  这个在SHA-1发明的时候是不可想象，不过其实在现在也是不可行的。只是按照现在计算机的发展速度 2018 年左右使用价格合适服务器集群理论上就可以破解（可以参考这里）：&lt;/p&gt;
 &lt;p&gt;”A  &lt;br /&gt;
collision attack is therefore well within the range of what an  &lt;br /&gt;
organized crime syndicate can practically budget by 2018, and a  &lt;br /&gt;
university research project by 2021。“&lt;/p&gt;
 &lt;p&gt;（”因此，在一个有组织犯罪集团的范围内，一次碰撞攻击的实际预算是2018，而一个大学的研究项目是2021“）&lt;/p&gt;
 &lt;p&gt;于是，Chrome 认为使用SHA-1的哈希函数都是潜在不安全的，于是会对所有使用SHA-1的网站证书提出警告，督促所有使用SHA-1的网站换为SHA-2。&lt;/p&gt;
 &lt;p&gt;不过注意，仅仅是潜在不安全， 目前还没有可行可靠的SHA-1碰撞算法出现。&lt;/p&gt;
 &lt;blockquote&gt;  &lt;p&gt;所以，这些网站暂时是安全的，不过也希望站长们多多提高安全意识，因为SHA-1已经非常接近可以被“破解”边缘。很有可能会出现以上情况：被人找到碰撞算法或者说被破解，从而制作虚假警官证。&lt;/p&gt;&lt;/blockquote&gt;
 &lt;p&gt;如果要详细的证书设置以去除这个警告的步骤，可以参考这里（点击进入链接）&lt;/p&gt;
 &lt;p&gt;因为工作原因——欧朋Opera是Chromium安全组成员，所以我对这个内情比较了解。有兴趣可以去看看讨论组里面的撕逼贴, 截个屏放在这里：   &lt;img alt="" height="287" src="http://www.techug.com/wordpress/wp-content/uploads/2015/08/10081946_c1fF.png?9bae72" width="600"&gt;&lt;/img&gt;&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>编程技术 谷歌浏览器</category>
      <guid isPermaLink="true">https://itindex.net/detail/54185-%E7%90%86%E8%A7%A3-%E8%B0%B7%E6%AD%8C-%E6%B5%8F%E8%A7%88%E5%99%A8</guid>
      <pubDate>Mon, 17 Aug 2015 17:13:35 CST</pubDate>
    </item>
    <item>
      <title>PHP判断访客是否移动端浏览器访问</title>
      <link>https://itindex.net/detail/52856-php-%E8%AE%BF%E5%AE%A2-%E7%A7%BB%E5%8A%A8</link>
      <description>&lt;p&gt;今天要给大家分享一段PHP代码，该代码的功能是用来判断访客是否移动端浏览器访问，该功能的实现思路是通过HTTP_X_WAP_PROFILE、HTTP_VIA、HTTP_USER_AGENT等信息来判断访客是否通过移动端浏览器访问PHP网站。以下是PHP代码：&lt;/p&gt;
 &lt;pre&gt;/**
 * 是否移动端访问访问
 *
 * @return bool
 */
function isMobile()
{ 
    // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
    if (isset ($_SERVER[&amp;apos;HTTP_X_WAP_PROFILE&amp;apos;]))
    {
        return true;
    } 
    // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
    if (isset ($_SERVER[&amp;apos;HTTP_VIA&amp;apos;]))
    { 
        // 找不到为flase,否则为true
        return stristr($_SERVER[&amp;apos;HTTP_VIA&amp;apos;], &amp;quot;wap&amp;quot;) ? true : false;
    } 
    // 脑残法，判断手机发送的客户端标志,兼容性有待提高
    if (isset ($_SERVER[&amp;apos;HTTP_USER_AGENT&amp;apos;]))
    {
        $clientkeywords = array (&amp;apos;nokia&amp;apos;,
            &amp;apos;sony&amp;apos;,
            &amp;apos;ericsson&amp;apos;,
            &amp;apos;mot&amp;apos;,
            &amp;apos;samsung&amp;apos;,
            &amp;apos;htc&amp;apos;,
            &amp;apos;sgh&amp;apos;,
            &amp;apos;lg&amp;apos;,
            &amp;apos;sharp&amp;apos;,
            &amp;apos;sie-&amp;apos;,
            &amp;apos;philips&amp;apos;,
            &amp;apos;panasonic&amp;apos;,
            &amp;apos;alcatel&amp;apos;,
            &amp;apos;lenovo&amp;apos;,
            &amp;apos;iphone&amp;apos;,
            &amp;apos;ipod&amp;apos;,
            &amp;apos;blackberry&amp;apos;,
            &amp;apos;meizu&amp;apos;,
            &amp;apos;android&amp;apos;,
            &amp;apos;netfront&amp;apos;,
            &amp;apos;symbian&amp;apos;,
            &amp;apos;ucweb&amp;apos;,
            &amp;apos;windowsce&amp;apos;,
            &amp;apos;palm&amp;apos;,
            &amp;apos;operamini&amp;apos;,
            &amp;apos;operamobi&amp;apos;,
            &amp;apos;openwave&amp;apos;,
            &amp;apos;nexusone&amp;apos;,
            &amp;apos;cldc&amp;apos;,
            &amp;apos;midp&amp;apos;,
            &amp;apos;wap&amp;apos;,
            &amp;apos;mobile&amp;apos;
            ); 
        // 从HTTP_USER_AGENT中查找手机浏览器的关键字
        if (preg_match(&amp;quot;/(&amp;quot; . implode(&amp;apos;|&amp;apos;, $clientkeywords) . &amp;quot;)/i&amp;quot;, strtolower($_SERVER[&amp;apos;HTTP_USER_AGENT&amp;apos;])))
        {
            return true;
        } 
    } 
    // 协议法，因为有可能不准确，放到最后判断
    if (isset ($_SERVER[&amp;apos;HTTP_ACCEPT&amp;apos;]))
    { 
        // 如果只支持wml并且不支持html那一定是移动设备
        // 如果支持wml和html但是wml在html之前则是移动设备
        if ((strpos($_SERVER[&amp;apos;HTTP_ACCEPT&amp;apos;], &amp;apos;vnd.wap.wml&amp;apos;) !== false) &amp;amp;&amp;amp; (strpos($_SERVER[&amp;apos;HTTP_ACCEPT&amp;apos;], &amp;apos;text/html&amp;apos;) === false || (strpos($_SERVER[&amp;apos;HTTP_ACCEPT&amp;apos;], &amp;apos;vnd.wap.wml&amp;apos;) &amp;lt; strpos($_SERVER[&amp;apos;HTTP_ACCEPT&amp;apos;], &amp;apos;text/html&amp;apos;))))
        {
            return true;
        } 
    } 
    return false;
}&lt;/pre&gt;
 &lt;p&gt;代码比较完整，有兴趣的同学可以多做一些测试，有任何bug可以在评论中留言。&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>WEB开发 收集转载 编程开发 PHP 浏览器</category>
      <guid isPermaLink="true">https://itindex.net/detail/52856-php-%E8%AE%BF%E5%AE%A2-%E7%A7%BB%E5%8A%A8</guid>
      <pubDate>Tue, 03 Mar 2015 18:52:08 CST</pubDate>
    </item>
    <item>
      <title>微软：Windows10将同时搭载IE和Spartan浏览器</title>
      <link>https://itindex.net/detail/52583-%E5%BE%AE%E8%BD%AF-windows10-ie</link>
      <description>&lt;p&gt;据国外媒体报道,   &lt;a rel="nofollow" target="_blank"&gt;微软&lt;/a&gt;昨天发布了新的  &lt;a rel="nofollow" target="_blank"&gt;Windows&lt;/a&gt;10浏览器，代号为Spartan。但该公司并没有就此结束Internet Explorer的历史。微软在其博客中证实了Windows10将附带两个浏览器，Internet Explorer短期不会消失将与Spartan共存。&lt;/p&gt;
 &lt;p&gt;IE浏览器的项目经理贾森·韦伯表示， “我们意识到，有的企业网站只使用基于Internet Explorer的技术。比如，自定义ActiveX控件和浏览器辅助对象等。对于这些用户，Windows 10也将同样适用。” 不过Internet Explorer将使用与Spartan浏览器相同的“双重渲染引擎”，但它明确被定位成进行前向兼容的浏览器。目前尚不清楚Windows 10 IE的最终版本。但有可能微软只为企业版操作系统提供Internet Explorer。 昨天的发布会，Windows 10企业技术预览版的Internet Explorer在微软校园上出现了好几次，表明Windows 10至少某个版本将附带IE浏览器。&lt;/p&gt;
 &lt;p&gt;考虑到Windows 8 Internet Explorer桌面和“Metro风格”版本的混搭给消费者造成了不小的疑惑，Internet Explorer和Spartan的共存估计也要让消费者适应一阵。虽然，微软表示Windows 10肯定会搭载Internet Explorer，但很有可能被限制或隐藏起来，除非用户真的需要才会启动。（秉翰）&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>新闻时讯 Spartan 浏览器</category>
      <guid isPermaLink="true">https://itindex.net/detail/52583-%E5%BE%AE%E8%BD%AF-windows10-ie</guid>
      <pubDate>Fri, 23 Jan 2015 11:45:38 CST</pubDate>
    </item>
    <item>
      <title>细数谷歌浏览器的 10 大隐藏技能</title>
      <link>https://itindex.net/detail/52737-%E8%B0%B7%E6%AD%8C-%E6%B5%8F%E8%A7%88%E5%99%A8-%E6%8A%80%E8%83%BD</link>
      <description>&lt;p&gt;谷歌 Chrome 浏览器一直以速度、简洁和安全为用户所熟知。除此之外，Chrome 的其他功能也非常强大，为了进一步提高工作效率，让我们一一揭晓它的那些隐藏技能吧。&lt;/p&gt;
 &lt;h2&gt;同时登入多个账户&lt;/h2&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;img alt="" src="http://static.codeceo.com/images/2015/02/fa6919afcfe5966d4fd2eaf4d9aa5acf.jpg" title="google-chrome-tips-2.jpg"&gt;&lt;/img&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;用户拥有多个谷歌账户（工作用或个人用）是很习以为常的事情，但是比较麻烦的是常常需要登出一个账号再登入另外一个。但是使用 Chrome 浏览器的话，就无需担心多账号同时登陆的问题。当使用 Gmail 邮箱和谷歌硬盘等其他谷歌服务时，用户能在多个账户之间快速切换。&lt;/p&gt;
 &lt;h2&gt;离线安装扩展程序程序&lt;/h2&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;img alt="" src="http://static.codeceo.com/images/2015/02/003830b577854c889cc63aa6257a022a.png" title="google-chrome-tips-15.png"&gt;&lt;/img&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;如今有好一些应用程序不需要网络链接就能够离线使用，比如 Gmail 邮箱、谷歌硬盘和谷歌日历。这对那些不能使用网络或经常出差工作的用户来说是理想办公工具。用户可以从 Chrome 应用商店安装离线扩展程序，并使用 Chrome 应用启动器或 Chrome 浏览器来打开这些程序。&lt;/p&gt;
 &lt;h2&gt;Chrome 进程管理&lt;/h2&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;img alt="" src="http://static.codeceo.com/images/2015/02/c7b3358d71e19bc2e586c0c7e924e7ed.png" title="google-chrome-tips-4.png"&gt;&lt;/img&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;同时按住 SHIFT+ESC 键能调出 Chrome 任务管理器并显示 Chrome 的进程列表，包括打开的标签页、插件和扩展程序。此外还会显示进程 ID、内存、CPU 和网络等使用情况。通过右击鼠标还能显示其他参数，同时也能让用户结束那些使浏览器运行速度变慢的进程。&lt;/p&gt;
 &lt;h2&gt;使用 Chrome 浏览器当记事本&lt;/h2&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;img alt="" src="http://static.codeceo.com/images/2015/02/d9835f882532eeac3980cf153ba1feac.png" title="google-chrome-tips-5.png"&gt;&lt;/img&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;通过使用 HTML5 的「contenteditable」属性，就能将浏览器的标签页转变成记事本。这个功能很简单，只需要将如下代码复制到地址栏点击回车键，就会出现一个简洁的不能再简洁的空白页面，再点击这个空白页面，就可以开始在页面上输入内容。如果你保存这个页面，你就会得到一个 HTML 文件，当你打开这个文件时，你就能看见你之前输入的内容了。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://static.codeceo.com/images/2015/02/856c68a47e0e5a3cd9e9fae2ae82eea5.png" title="google-chrome-tips-12.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;此外更加高级的编辑功能则需要如下代码：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://static.codeceo.com/images/2015/02/059d0943c7630507c2e438de99646f44.png" title="google-chrome-tips-13.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h2&gt;语音搜索&lt;/h2&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;img alt="" src="http://static.codeceo.com/images/2015/02/a5af9ec68532a0b067d45d2fdde18d4c.png" title="google-chrome-tips-6.png"&gt;&lt;/img&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;如果用户不喜欢在键盘上打字，不妨试一试语音搜索这个功能。只需打开谷歌搜索框，轻轻一点搜索框末端的麦克风标志即可打开语音搜索功能。支持多种语言，用户只需通过浏览器设置来激活「OK，Google!」语音控制功能，用户只要一句「OK，Google!」Chrome 浏览器就会执行指令。面前用户可以通过语音控制让浏览器搜索任何想查看的东西，包括天气，方向等。对于某些搜索，Chrome 浏览器的会通过语音搜索朗读搜索结果并提供相关文本。&lt;/p&gt;
 &lt;h2&gt;远程控制&lt;/h2&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;img alt="" src="http://static.codeceo.com/images/2015/02/9580346cde96e45613d8c37a45892572.png" title="google-chrome-tips-7.png"&gt;&lt;/img&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;如果用户在不同地方使用多台电脑，或者帮助亲朋好友解决电脑方面的问题，那么谷歌 Chrome 浏览器的远程桌面工具就能派上用场。它能让用户连接和控制在不同地点的电脑。&lt;/p&gt;
 &lt;p&gt;用户可以通过 Chrome 浏览器安装远程桌面控制扩展应用，这个插件必须装在每台的 Chrome 浏览器上，点击「分享」按钮则会生成一个密码与对方来共享桌面。在 Chrome 中打开一个新标签页，点击该工具图标，打开应用程序。点击分享这台电脑（Share this computer），接下来你可以选择分享你的 email 地址、你分享的电脑，以及聊天记录。每个远程分享进程都会获得一个唯一的授权码。把这个授权码发给你的好友，对方输入该授权码后便可以访问你分享的内容。&lt;/p&gt;
 &lt;h2&gt;从地址栏搜索特定站点&lt;/h2&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;img alt="" src="http://static.codeceo.com/images/2015/02/7eaf1ef6cb559de52d479d8a759b85e6.png" title="google-chrome-tips-8.png"&gt;&lt;/img&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;用户可以通过地址栏搜索 Gmail 邮箱的邮件，或者是 Google Drive 的某个文件、亚马逊或京东的某个商品。用户必须先打开浏览器的设置，在搜索项进入管理搜索引擎。然后你就会发现一系列不同站点的搜索引擎，你可以编辑当前的搜索引擎或设置其他默认搜索引擎。例如淘宝已近存在列表里，通过将其设置成默认搜索引擎后，就可以直接在地址栏里输入关键词就能搜索到你想要的商品。&lt;/p&gt;
 &lt;h2&gt;在注册页面自动生成新密码&lt;/h2&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;img alt="" src="http://static.codeceo.com/images/2015/02/d0bd510d736735beea786ae743120ebe.png" title="google-chrome-tips-9.png"&gt;&lt;/img&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;Chrome 浏览器能够自动帮助用户在新账户注册页面生成新密码。你只需要在地址栏输入「about:flags」点击确认就能进入该功能的页面，选择「启用密码生成功能」然后重新启动浏览器即可。&lt;/p&gt;
 &lt;p&gt;完成操作后，Chrome 浏览器就能识别任何用户想要注册新账户的页面，用户可以像平常那样填写注册表单，当用户点击「选择密码」的选项框时，就会出现通知气泡和一个推荐的密码，用户可以选择使用这个推荐的密码或使用自己的密码。下次再登录这个网站的时候，Chrome 会自动调用最初生成的密码，当然所有生成的密码会与 Chrome 浏览器同步。不过该功能还在试验性阶段。&lt;/p&gt;
 &lt;h2&gt;模拟移动设备访问当前网页&lt;/h2&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;img alt="" src="http://static.codeceo.com/images/2015/02/e08fe21bea53c2ce6031b74a1f58ce7b.png" title="google-chrome-tips-10.png"&gt;&lt;/img&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;Chrome 浏览器除了为普通用户提供强大的 Chrome 扩展外，还提供了强大了 chrome 开发者工具，以帮助广大网站开发者提供诸如兼容性等的测试工作。按下 F12 或（Ctrl+Shift+I）键打开「开发者工具」，点击 [Show drawer] 图标，选择 [Emulation] 后使用者能在 Device 一栏的下拉列表中看到主流的移动设备。&lt;/p&gt;
 &lt;h2&gt;固定标签页&lt;/h2&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;img alt="" src="http://static.codeceo.com/images/2015/02/6a4e93c17de9fe187260e05d3831c295.png" title="google-chrome-tips-11.png"&gt;&lt;/img&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;如果有些网页用户需要一直打开，用户可以点击鼠标右键固定该标签页。而标签页的尺寸将变小并自动移到浏览器的最左端，关闭标签页的选项会被移除，在浏览器重新启动的时候会自动打开。用户也可以选择右击鼠标右键取消固定标签页。&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>资讯 Chrome 浏览器</category>
      <guid isPermaLink="true">https://itindex.net/detail/52737-%E8%B0%B7%E6%AD%8C-%E6%B5%8F%E8%A7%88%E5%99%A8-%E6%8A%80%E8%83%BD</guid>
      <pubDate>Tue, 10 Feb 2015 18:34:21 CST</pubDate>
    </item>
    <item>
      <title>手机App仍不会取代浏览器</title>
      <link>https://itindex.net/detail/53252-%E6%89%8B%E6%9C%BA-app-%E5%8F%96%E4%BB%A3</link>
      <description>&lt;p&gt;我这几年一直在思考“手机App会不会完全取代手机浏览器，后者是否会逐渐消亡”，观点也几度变化，在当前时间点（2015年4月），我的观点是，  &lt;strong&gt;移动端浏览器在暂时H5的体验仍旧无法达到原生效果的此时，固然在重度、用户重感知的需求上会让步于App，但在可以预见的未来来看，仍旧始终会是一个大型入口，不会被完全取代。&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;早几年，苹果还未搭建起那么吸引人的App大环境，浏览器非常常用，因为人们的手机端需求早于厂商们的App出现，人们不得不在手机上浏览拙劣的未经适配优化的电脑网页，还备受网速、流量的困扰。（我是在描述当时高中/大学的自己）&lt;/p&gt;
 &lt;p&gt;而现在，移动端浏览器发展到今天，各家宣扬的点已经从最初的“省流量”（UC浏览器就是靠此起家）、“速度快”变为了“设计轻”、“嫁接读书/视频内容”、“应用大全”了。早几年的激烈厮杀已经让这块市场基本只剩下了几家巨头产品，比如我个人换机后会装的UC和QQ浏览器（前者感觉比较顺畅，我一直没有弄清楚是动效原因还是真有技术区别，后者是因为是东家的产品），搜狗浏览器、Opera、Chrome（我最常用的其实是这个..）都是比较小众的了。&lt;/p&gt;
 &lt;p&gt;可能许多同学和我一样，并不会在移动浏览器上使用它的应用大全（Web App）啥的，但即使这样，移动端浏览器仍旧会是一个大型入口。  &lt;strong&gt;因为，对于长尾需求、H5/App体验差别不大的需求、搜索等需求形态来说，仍旧是浏览器比App更适合。&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;一个个看。&lt;/p&gt;
 &lt;p&gt;1、搜索  &lt;br /&gt;
搜索对我来说，是一个要用时必须要能马上做到，但频次又不那么多的需求。这类需求很适合在浏览器上来做，因为每次用户换机后，可能不会马上遇到搜索的需求，但总会隐隐感觉需要安装一个App，这就是因为潜意识需要有一个东西可以马上打开www.baidu.com来搜索。这里想到一个事情，UC浏览器团队可能也看出来了未来搜索会是移动端浏览器的很大需求原因，因此自己早早推了神马搜索（当时说实话我没看明白，现在发现当时的决策者的确是前瞻性强）。&lt;/p&gt;
 &lt;p&gt;2、长尾需求  &lt;br /&gt;
长尾需求的典型特征是不值得、懒得安装/不记得要安装这个APP，但是又偶尔出现需求，这时通常就用百度搜索，然后网页解决了，这时也不得不依赖移动浏览器了。实际上，手机百度App目前做到App前5，原因就是人们的搜索需求和长尾需求加起来很多，又实际都是通过浏览器来作为产品形态承载，手机百度就自己做了一个浏览器（手机百度App实质上就是一个不用输入URL的浏览器，实际上是UC和QQ浏览器的重要竞争对手）。&lt;/p&gt;
 &lt;p&gt;3、缺乏App而App没用/做得太烂的情况  &lt;br /&gt;
我们知道，某些网站是没有App的，就不得不用浏览器。比如论坛，虎扑，猫扑等一些网站，还有一些常用但特殊的站点，譬如某榴。或者是App太烂了，和网站没区别，比如贴吧（贴吧稍微做好点，都没same啥机会）。&lt;/p&gt;
 &lt;p&gt;4、App和网页的体验差距不大的需求类型  &lt;br /&gt;
在体验上，并不需要特别的动效体验的需求类型，或者说白了，就是在原生APP上和在H5页上拉不开体验差距的需求类型，也始终是更适合浏览器。典型的例子就是纯粹的阅读，包括阅读小说、看笑话等。如果你只阅读不笔记什么的，浏览器完全够用了，如果你看糗百不会发小纸条上面的，网页版糗百也完全够用了。特别是对基础用户，上面现象更明显，比如我看书，会记笔记，会加色Mark，就得用QQ阅读，而我爸爸，就始终只用浏览器看小说，我跟他说QQ阅读体验更好，翻书效果更舒服，他说哦哦，然后下次回家他还是在用浏览器（我分析根本原因是他觉得没啥区别，那个翻书效果他不在乎，所以他懒得换，保持现状）。小说这一点上，我认为它绝对是除搜索外、移动浏览器里面使用率最高的需求，没有之一，甚至超过看新闻。这一点我纯粹靠个人在身边的观察和臆断，但还算比较有信心，有知道的同学可以与我交流看看。&lt;/p&gt;
 &lt;p&gt;说到未来的长远发展方向，我倒不太明了，倒也没深入想过，但觉得，在H5越来越强的未来，说不定Web APP会开始成为新的热门的服务形式（不过国内，微信公众号也在准备这一方面的事情），届时浏览器又可能有新的机遇。不过说实话，我个人对H5体验的未来始终看不明朗，毕竟对这块技术不甚了解，这又是另一个话题了。&lt;/p&gt;
 &lt;p&gt;微信搜索“邹剑波Kant”即可关注我的公众号，扫描二维码可以请我喝杯茶。  &lt;br /&gt;
  &lt;a href="http://kant.cc/wp-content/uploads/2015/04/2312.jpg"&gt;   &lt;img alt="2312" height="635" src="http://kant.cc/wp-content/uploads/2015/04/2312.jpg" width="640"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>学习笔记 所有文章 APP 浏览器</category>
      <guid isPermaLink="true">https://itindex.net/detail/53252-%E6%89%8B%E6%9C%BA-app-%E5%8F%96%E4%BB%A3</guid>
      <pubDate>Mon, 20 Apr 2015 12:27:58 CST</pubDate>
    </item>
    <item>
      <title>雅虎上位Firefox浏览器默认引擎后排名狂飙</title>
      <link>https://itindex.net/detail/52076-%E9%9B%85%E8%99%8E-%E4%B8%8A%E4%BD%8D-firefox</link>
      <description>&lt;p&gt; 上月雅虎公司宣布替代谷歌成为最新版火狐浏览器Firefox34的默认引擎以来，短短两周内该公司在用户搜索引擎中的使用百分比从9.6％一路狂升至29.4％。&lt;/p&gt;
 &lt;p&gt;据数据分析公司统计，雅虎搜索引擎在Firefox34上的使用量超过了前一版浏览器Firefox33的三倍。由于大部分用户还未进行更新，Firefox34浏览器的用户安装基础尚处于小范围之内。此外，火狐公司在美国市场的份额达到了将近百分之十五。而在Firefox34浏览器上谷歌搜索引擎的使用量则下滑到了百分之六十三。&lt;/p&gt;

 &lt;p&gt;This article addresses:  &lt;a href="http://www.iefans.net/yahushangwei-firefox-liulanqi-morenyinqinghou-paiming-kuangbiao/"&gt;http://www.iefans.net/yahushangwei-firefox-liulanqi-morenyinqinghou-paiming-kuangbiao/&lt;/a&gt;&lt;/p&gt;Here is no comments yet by the time  your rss reader get this, Do you want to be the first commentor? Hurry up &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>浏览器相关 火狐浏览器 雅虎</category>
      <guid isPermaLink="true">https://itindex.net/detail/52076-%E9%9B%85%E8%99%8E-%E4%B8%8A%E4%BD%8D-firefox</guid>
      <pubDate>Sun, 07 Dec 2014 15:01:02 CST</pubDate>
    </item>
    <item>
      <title>网速快却开打网页速度慢</title>
      <link>https://itindex.net/detail/50517-%E7%BD%91%E9%80%9F-%E7%BD%91%E9%A1%B5-%E9%80%9F%E5%BA%A6</link>
      <description>&lt;p&gt;有没有遇到过明明网速很快，但是在浏览器中打开网页的速度却很慢？到底是怎么回事。下面小编告诉您原因，教您怎么解决。&lt;/p&gt;
 &lt;p&gt;小编总结了下原因，主要是以下问题：	&lt;/p&gt;
 &lt;p&gt;1.网络最小带宽：  &lt;br /&gt;
也就是平时所说的宽带不够、太小。一个网站的打开速度不仅仅看客户端（就是用户自己）的带宽，也需要看网站服务器的带宽。只要双方有一方的带宽太低就会造成网站打开速度过慢。&lt;/p&gt;
 &lt;p&gt;2.DNS解析速度：  &lt;br /&gt;
DNS解析就是对域名和IP地址的互相转化，平时我们上网输入的是域名，而机器间却只能识别IP地址。因此，DNS解析的速度也影响到网站的打开速度。&lt;/p&gt;
 &lt;p&gt;3.电脑硬件：  &lt;br /&gt;
服务器端和客户端的电脑硬件配置也能影响到网站的打开速度。如果你用一个最新高端的CPU和一个十年前普普通通的CPU电脑打开同一个网站，速度是会明显不一样的。&lt;/p&gt;
 &lt;p&gt;4.浏览器窗口打开过多：  &lt;br /&gt;
当浏览器的窗口打开过多，同时打开大量网站会占用大量系统内存，拖慢浏览器打开网站的速度。&lt;/p&gt;
 &lt;p&gt;5.浏览器插件和加载项：  &lt;br /&gt;
浏览器自身的插件和加载项可能会影响浏览器打开网站的速度。&lt;/p&gt;
 &lt;p&gt;6.网站内容：  &lt;br /&gt;
网站代码过于重复、复杂。网站内容中图片过多、过大，网站大小未进行优化。打开这些网站就需缓存这些图片，图片过多、过大会严重影响网站的打开速度。&lt;/p&gt;
 &lt;p&gt;遇到上述问题，小编建议如下几条：  &lt;br /&gt;
1.浏览器中网站页面不要打开过多，浏览完后关闭不需要的网页。  &lt;br /&gt;
2.如果您的电脑内存还只有2G，建议您升级到4G内存。对于一般使用，4G足以胜任。  &lt;br /&gt;
3.CPU过低、太老，建议您更换CPU，CPU处理速度也是电脑的关键所在。  &lt;br /&gt;
4.隔一段时间就对浏览器进行清理，删除缓存，清除历史记录等。  &lt;br /&gt;
5.对于网站建设者，建议网站代码尽可能简单、减少冗余；网站代码要合理、规范，方便识别；作为背景图，色彩单一的，建议使用1-2像素的小图平铺；在保证美观、清晰的基础上，尽量保证图片所占存储较小。  &lt;br /&gt;
6.查看是否有人蹭网或多人使用同一宽带，影响网速  &lt;br /&gt;
  &lt;a href="http://www.iefans.net/wp-content/uploads/2014/07/114.jpg"&gt;   &lt;img alt="" height="454" src="http://www.iefans.net/wp-content/uploads/2014/07/114.jpg" title="1" width="535"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;

 &lt;p&gt;This article addresses:  &lt;a href="http://www.iefans.net/wangsukuai-dakaiwangyei-suduman/"&gt;http://www.iefans.net/wangsukuai-dakaiwangyei-suduman/&lt;/a&gt;&lt;/p&gt;Here is no comments yet by the time  your rss reader get this, Do you want to be the first commentor? Hurry up &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>IE技巧 浏览器 速度</category>
      <guid isPermaLink="true">https://itindex.net/detail/50517-%E7%BD%91%E9%80%9F-%E7%BD%91%E9%A1%B5-%E9%80%9F%E5%BA%A6</guid>
      <pubDate>Sun, 27 Jul 2014 09:38:59 CST</pubDate>
    </item>
    <item>
      <title>IE、Chrome、Firefox浏览器收藏夹同步方法</title>
      <link>https://itindex.net/detail/50106-ie-chrome-firefox</link>
      <description>&lt;p&gt;个人认为在浏览器的收藏夹同步方面做得最好的还是google chrome，不久前IE自从系统升级到windows 8.1以后必须使用microsoft账户才能同步。这里收集了IE、Chrome、Firefox浏览器收藏夹同步方法，如果你有更好的方法，请一起分享讨论哦。&lt;/p&gt;
 &lt;p&gt;一、Google Bookmarks (适合 Chrome、Firefox ，提供 Web 版，支持多操作系统平台)&lt;/p&gt;
 &lt;p&gt;将书签托管在 Google 的云端，是比较稳定可靠的方案(当然这句话放在国内得打个对折)。在线登录 Google Bookmarks 页面后，从左边的侧边栏找到 “Import bookmarks”，将之前导出的 .html 文件导入即可。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="Google Bookmarks " height="217" src="http://www.iefans.net/wp-content/uploads/2014/06/3f37_101013_Xmarks003.jpg" width="238"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;如果您使用的是Chrome 浏览器，那么恭喜您，Chrome 6 以上版本本身已经自带了完美强大的同步功能(请从右上角工具图标-&amp;gt;选项-&amp;gt;同步-&amp;gt;自定义中开启书签同步)，可自动将您保存的书签同 步保存至个人 Google 账号的 bookmarks 下。&lt;/p&gt;
 &lt;p&gt;如果您习惯了 Firefox，同样可以通过安装 GMarks这个插件来自动同步 Google Bookmarks。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="Google &amp;#36134;&amp;#21495;&amp;#30340; bookmarks" height="291" src="http://www.iefans.net/wp-content/uploads/2014/06/b6c8_101013_Xmarks004.jpg" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;对于其他浏览器用户，或许直接访问 Google Bookmarks 的网页版是最省时省力的吧。&lt;/p&gt;
 &lt;p&gt;二、Firefox Sync (适合Firefox 用户，支持多操作系统平台)&lt;/p&gt;
 &lt;p&gt;再为 Firefox 用户介绍一个强大的插件 — Firefox Sync。它不仅能同步书签，还能同步密码、设置、访问历史、当前打开书签等，非常强悍，颇有迎头赶上Xmarks 的架势。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="Firefox Sync" height="383" src="http://www.iefans.net/wp-content/uploads/2014/06/d570_101013_Xmarks005.jpg" width="472"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;Firefox 4 Beta 本身已经内置了此工具，用户可直接享受。老版本用户则需下载安装此插件。使用前需通过 Email 注册一个帐号。&lt;/p&gt;
 &lt;p&gt;并且它还有适合移动设备访问的APP，例如 iPhone 客户端、N900 Maemo 客户端、其他兼容手机客户端。&lt;/p&gt;
 &lt;p&gt;三、Sync2It(适合 Safari / IE 用户，支持 Mac / Windows 操作系统平台)&lt;/p&gt;
 &lt;p&gt;Sync2It是又一款跨平台支持的小工具。如果您的系统是 Mac，那么它会自动同步 Safari 的书签;如果系统是 Windows，则会自动同步 IE 书签。它还允许您订阅官网上他人共享的书签列表。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="Sync2It" height="389" src="http://www.iefans.net/wp-content/uploads/2014/06/40b1_101013_Xmarks006.jpg" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;四、Delicious 和 Diigo(适合 Firefox 和 Chrome，支持多操作系统平台)&lt;/p&gt;
 &lt;p&gt;与 Google Bookmarks 类似的书签云端存储服务有不少，Delicious和 Diigo算是比较知名的两家。二者均有丰富的官方和第三方插件，用于强化浏览器的工具栏、书签栏、扩展等。&lt;/p&gt;
 &lt;p&gt;其中，Diigo 也提供了导入功能，可导入从 Xmarks 中导出的 .html 文件。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="Diigo" height="376" src="http://www.iefans.net/wp-content/uploads/2014/06/9639_101013_Xmarks007.jpg" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;对于Delicious的忠实用户，推荐 Firefox和 Chrome的两个专用插件。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="Delicious" src="http://www.iefans.net/wp-content/uploads/2014/06/a0dc_101013_Xmarks008.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;五、使用第三方同步工具(Dropbox、DBank 等)&lt;/p&gt;
 &lt;p&gt;当然，也不能忘记这个屡试不爽万年通用技巧——第三方同步工具。借助它们，将应用程序的配置文件自动同步于多台电脑，就可实现一处改动，多处自动调整的效果。当然也适用于浏览器的数据资料同步，比如收藏夹、书签等。&lt;/p&gt;
 &lt;p&gt;这里首推的自然是 Dropbox，性能卓越，支持共享。国内较为稳定且实用的同步工具有 DBank，同样支持共享，并可将外链批量打包成列表。对于多人团队或是针对不同使用环境有不同书签管理方案的高级用户而言，不失为一种选择。&lt;/p&gt;
 &lt;p&gt;via:activedirectory&lt;/p&gt;

 &lt;p&gt;This article addresses:  &lt;a href="http://www.iefans.net/ie-chrome-firefox-shoucangjia-tongbu/"&gt;http://www.iefans.net/ie-chrome-firefox-shoucangjia-tongbu/&lt;/a&gt;&lt;/p&gt;Here is no comments yet by the time  your rss reader get this, Do you want to be the first commentor? Hurry up &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>IE技巧 收藏夹 浏览器同步</category>
      <guid isPermaLink="true">https://itindex.net/detail/50106-ie-chrome-firefox</guid>
      <pubDate>Fri, 20 Jun 2014 22:40:37 CST</pubDate>
    </item>
    <item>
      <title>6种节省时间提升效率的浏览器功能</title>
      <link>https://itindex.net/detail/47669-%E6%97%B6%E9%97%B4-%E6%8F%90%E5%8D%87-%E6%B5%8F%E8%A7%88%E5%99%A8</link>
      <description>&lt;p&gt;不可否认，浏览器在现在的网络时代中越来越重要，未来可能扮演着更重要的角色。工作、生活和娱乐都将无法没有浏览器的协助。学会如何使用浏览器也成为了现 代人不可或缺的技能，更有效率的使用浏览器绝对可以帮助你节省更多的时间。正所谓「时间就是金钱」，学习如何更技巧的使用浏览器对使用者而言可谓百利无害。&lt;/p&gt;
 &lt;p&gt;世界变迁迅速，如何节省你的时间并提升你的生产力非常重要，是时候学习一些技巧让做事的效率提升到极速了。让我们开始吧！6种不同的功能让你节省更多的时间完成更多的事情。&lt;/p&gt;
 &lt;h3&gt;鼠标手势&lt;/h3&gt;
 &lt;p&gt;当你可以轻易地使用鼠标手势又何必再去点选按钮呢？（补充：鼠标手势是由 Opera 浏览器率先发明的辅助功能，使用者只须按住鼠标的右键画出特定的线路，就可以触发对应的事件。目前这个功能已经成为最受欢迎也最普遍的浏览器功能了。）&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="&amp;#40736;&amp;#26631;&amp;#25163;&amp;#21183;" height="277" src="http://www.iefans.net/wp-content/uploads/2014/01/shubiao-shoushi.png" title="&amp;#40736;&amp;#26631;&amp;#25163;&amp;#21183;" width="402"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;下载    &lt;a href="http://www.ysgyfarnog.co.uk/utilities/mousegestures/"&gt;Mouse Gestures for Internet Explorer 的鼠标手势延伸套件&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
 &lt;h3&gt;搜索程序管理器&lt;/h3&gt;
 &lt;p&gt;并非只是搜索程序而已。&lt;/p&gt;
 &lt;p&gt;你会觉得开启某个网页只为了输入你想搜索的东西是一件很恼人的事吗？是的。但这可以解决。当我想执行搜索动作时，我并不会开启 Google、Yahoo、维基百科或 eBay。我会做的就是输入一些字母，然后选择你要搜索的东西，就这么简单。  &lt;em&gt;（补充：如下图所示，如果你在网址列输入「iefans」，浏览器就会自动以对应的 Google 搜索程序来搜索「iefans」这个关键字）&lt;/em&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="&amp;#25628;&amp;#32034;&amp;#31243;&amp;#24207;&amp;#31649;&amp;#29702;&amp;#22120;" height="487" src="http://www.iefans.net/wp-content/uploads/2014/01/guanli-sousuo-chengxi.jpg" title="&amp;#25628;&amp;#32034;&amp;#31243;&amp;#24207;&amp;#31649;&amp;#29702;&amp;#22120;" width="590"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;几乎所有浏览器都支持这项功能。&lt;/p&gt;
 &lt;h3&gt;恢复关闭的网页&lt;/h3&gt;
 &lt;p&gt;你是否觉得不断地开启之前浏览的网页是一件无聊透顶的事呢？没错。这就是为什么浏览器开发者们开发了  &lt;a href="http://www.iefans.net/ie-huifu-yiwai-guanbi-wangye/" title="&amp;#22312;IE&amp;#27983;&amp;#35272;&amp;#22120;&amp;#20013;&amp;#24674;&amp;#22797;&amp;#24847;&amp;#22806;&amp;#20851;&amp;#38381;&amp;#30340;&amp;#32593;&amp;#39029;"&gt;恢复关闭的网页&lt;/a&gt;功能。  &lt;em&gt;（补充：浏览器可以记录你上次浏览的网页外，一键即可恢复还原上一次关闭浏览器时访问的所有网页）&lt;/em&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="&amp;#24674;&amp;#22797;&amp;#20851;&amp;#38381;&amp;#30340;&amp;#32593;&amp;#39029;" height="623" src="http://www.iefans.net/wp-content/uploads/2014/01/chongxin-dakai-guanbi-xuanxiangka.jpg" title="&amp;#24674;&amp;#22797;&amp;#20851;&amp;#38381;&amp;#30340;&amp;#32593;&amp;#39029;" width="611"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;如今，几乎所有的浏览器都支持这项功能，对使用者而言这是一项双赢的决定。&lt;/p&gt;
 &lt;h3&gt;Snap Links&lt;/h3&gt;
 &lt;p&gt;这搞不好是我见过最好功能了。这小套件协助你同时开启多个链接。只须用鼠标右键将链接圈起来，就这么简单。每一个链接都会在新的分页中开启。这是开启搜索结果或浏览 reddit 时绝对不可或缺的功能。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="&amp;#21516;&amp;#26102;&amp;#25171;&amp;#24320;&amp;#22810;&amp;#20010;&amp;#38142;&amp;#25509;" height="194" src="http://www.iefans.net/wp-content/uploads/2014/01/dakai-duoge-lianjie.png" title="&amp;#21516;&amp;#26102;&amp;#25171;&amp;#24320;&amp;#22810;&amp;#20010;&amp;#38142;&amp;#25509;" width="625"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;下载    &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/4336"&gt;Firefox 的 Snap Link 延伸套件&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;下载    &lt;a href="https://chrome.google.com/webstore/detail/idmmhhijggcmbeejedibpdcahpkneegg"&gt;Google Chrome 的 Snap Link 延伸套件&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;下载    &lt;a href="https://addons.opera.com/en/addons/extensions/details/snap-links/1.6.1/"&gt;Opera 的 Snap Link 延伸套件&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
 &lt;h3&gt;最常用的网页&lt;/h3&gt;
 &lt;p&gt;这项功能让你轻松点选开启最常访问的网站。在更早之前，只有 Opera 提供这项功能。但在今日，几乎所有的浏览器都有类似的功能了。&lt;/p&gt;
 &lt;p&gt;IE浏览器的新建选项卡页仅支持显示10个网页，你可以参照  &lt;a href="http://www.iefans.net/ie10-xinjian-xuanxiangka-changyong-gengduo-wangzhan/" title="&amp;#35753;IE10&amp;#26032;&amp;#24314;&amp;#36873;&amp;#39033;&amp;#21345;&amp;#24120;&amp;#29992;&amp;#39029;&amp;#38754;&amp;#26174;&amp;#31034;&amp;#26356;&amp;#22810;&amp;#32593;&amp;#31449;"&gt;这个方法&lt;/a&gt;显示更多的常用网页。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="&amp;#26032;&amp;#24314;&amp;#36873;&amp;#39033;&amp;#21345;&amp;#39029;&amp;#26174;&amp;#31034;&amp;#26356;&amp;#22810;&amp;#24120;&amp;#29992;&amp;#32593;&amp;#31449;" height="461" src="http://www.iefans.net/wp-content/uploads/2012/12/changyong-wangye.jpg" title="&amp;#26032;&amp;#24314;&amp;#36873;&amp;#39033;&amp;#21345;&amp;#39029;&amp;#26174;&amp;#31034;&amp;#26356;&amp;#22810;&amp;#24120;&amp;#29992;&amp;#32593;&amp;#31449;" width="630"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h3&gt;快捷键&lt;/h3&gt;
 &lt;p&gt;  &lt;img alt="&amp;#27983;&amp;#35272;&amp;#22120;&amp;#24555;&amp;#25463;&amp;#38190;" height="253" src="http://www.iefans.net/wp-content/uploads/2014/01/kuaijiejian.png" title="&amp;#27983;&amp;#35272;&amp;#22120;&amp;#24555;&amp;#25463;&amp;#38190;" width="625"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;我不能不强调快捷键对浏览器何等重要。我现在已经不再使用鼠标开启新的分页（Ctrl + T）、存取订阅新闻。嗯，就连使用右键打开新窗口分页都已不再需要了。&lt;/p&gt;
 &lt;p&gt;这里是详细的  &lt;a href="http://www.iefans.net/ie9-kuaijiejian-jihe-xiaolv/" title="IE9&amp;#24555;&amp;#25463;&amp;#38190;&amp;#26368;&amp;#24378;&amp;#38598;&amp;#21512;&amp;#65292;&amp;#35753;&amp;#27983;&amp;#35272;&amp;#26356;&amp;#26377;&amp;#25928;&amp;#29575;"&gt;IE浏览器快捷键&lt;/a&gt;，这些快捷键对于其他浏览器大部分也都是适用的。&lt;/p&gt;

 &lt;p&gt;This article addresses:  &lt;a href="http://www.iefans.net/6zhong-jiesheng-shijian-tisheng-xiaolv-gongneng/"&gt;http://www.iefans.net/6zhong-jiesheng-shijian-tisheng-xiaolv-gongneng/&lt;/a&gt;&lt;/p&gt;Here is no comments yet by the time  your rss reader get this, Do you want to be the first commentor? Hurry up &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>浏览器相关 功能 快捷键 时间</category>
      <guid isPermaLink="true">https://itindex.net/detail/47669-%E6%97%B6%E9%97%B4-%E6%8F%90%E5%8D%87-%E6%B5%8F%E8%A7%88%E5%99%A8</guid>
      <pubDate>Sat, 18 Jan 2014 22:40:35 CST</pubDate>
    </item>
    <item>
      <title>网站是如何跟踪监视你的</title>
      <link>https://itindex.net/detail/46988-%E7%BD%91%E7%AB%99-%E8%B7%9F%E8%B8%AA-%E7%9B%91%E8%A7%86</link>
      <description>&lt;p&gt;  &lt;a href="http://www.geekfan.net/wp-content/uploads/cctv-cameras-header.jpg" rel="lightbox[4410]" title="&amp;#32593;&amp;#31449;&amp;#26159;&amp;#22914;&amp;#20309;&amp;#36319;&amp;#36394;&amp;#30417;&amp;#35270;&amp;#20320;&amp;#30340;"&gt;   &lt;img alt="cctv-cameras-header" height="300" src="http://www.geekfan.net/wp-content/uploads/cctv-cameras-header.jpg" width="650"&gt;&lt;/img&gt;&lt;/a&gt;某些监视方法是比较容易想到的，比如，当你登录网站的时候，它就可以知道你是谁了。但是这些网络监视系统是如何通过你的上网行为记录你的个人信息呢？  &lt;br /&gt;
广告系统经常通过追踪用户行为的方法来建立用户信息库，以定位谁是目标客户。如果你曾经访问过某个商业网站，之后不久你又在其他网站看到了这个商业网站的广告，那么，这个广告系统可能已经在工作了。&lt;/p&gt;
 &lt;h2&gt;  &lt;strong&gt;IP 地址&lt;/strong&gt;&lt;/h2&gt;
 &lt;p&gt;IP地址是确认用户身份的最基本的方法。现今，在家或者办公室，你电脑很可能与你的其他网络设备共享同一个IP地址。从你的IP地址，网站可以大致确定你的地理位置 —— 还不能精确到街道，但是一般能确认你所在城市或者区域。你可能见过那些弹窗小广告通过显示你的地理位置来伪装自己，广告系统就是这么干的。IP地址可以变，并且可以被其他用户所共享，所以它并不是一个追踪单个用户的好方法。但是，IP可与本文介绍的其他技术相结合来确定你的地理位置。&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://www.geekfan.net/wp-content/uploads/image.png" rel="lightbox[4410]" title="&amp;#32593;&amp;#31449;&amp;#26159;&amp;#22914;&amp;#20309;&amp;#36319;&amp;#36394;&amp;#30417;&amp;#35270;&amp;#20320;&amp;#30340;"&gt;   &lt;img alt="image" height="254" src="http://www.geekfan.net/wp-content/uploads/image.png" width="650"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;h2&gt;  &lt;strong&gt;HTTP Referrer&lt;/strong&gt;&lt;/h2&gt;
 &lt;p&gt;当你点击一个链接的时候，你的浏览器会加载这个页面，并且告诉这个网站你是从哪来的。打个比方，你单击了一个How-to Geek网站的一个指向外部网站的链接，那么这个网站会知道你是从How-to Geek的哪一篇文章点击进来的。这个信息是被存储在Http referrer信息头中。当你下载当前页面的内容的时候，http referrer也会被发送。例如，一个网站有广告或者跟踪脚本，那么你的浏览器会告诉这个广告商或者这个网络监视系统，你正在浏览哪一个网页！所谓的”web bug”是很小的，由单个像素组成的不可见的图片，它利用HTTP referrer去偷偷的监视你。它们也被用来监视你所打开的邮件，前提是你的邮件客户端会下载图片。&lt;/p&gt;
 &lt;h2&gt;  &lt;strong&gt;Cookies 和 跟踪脚本&lt;/strong&gt;&lt;/h2&gt;
 &lt;p&gt;Cookies是一些信息片段，网站可以将它们存储在你的浏览器上。它有许多正当的用途——比如，当你登陆你的网络银行，cookie可以记录你的登录信息。当你改变对一个网站的设置，那么cookie也会将它记录下来，这样你的设置就可以一直在你浏览的过程中有效。  &lt;br /&gt;
  &lt;a href="http://www.geekfan.net/wp-content/uploads/image1.png" rel="lightbox[4410]" title="&amp;#32593;&amp;#31449;&amp;#26159;&amp;#22914;&amp;#20309;&amp;#36319;&amp;#36394;&amp;#30417;&amp;#35270;&amp;#20320;&amp;#30340;"&gt;   &lt;img alt="image1" height="450" src="http://www.geekfan.net/wp-content/uploads/image1.png" width="650"&gt;&lt;/img&gt;&lt;/a&gt;  &lt;br /&gt;
Cookie也可以用来识别和记录你在某个网站上的行为。这并没有什么大的问题——这个网站可能想知道你在浏览什么网页，这样它就可以知道你体验如何。而真正有危险的是那些第三方的Cookie。&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://www.geekfan.net/wp-content/uploads/image2.png" rel="lightbox[4410]" title="&amp;#32593;&amp;#31449;&amp;#26159;&amp;#22914;&amp;#20309;&amp;#36319;&amp;#36394;&amp;#30417;&amp;#35270;&amp;#20320;&amp;#30340;"&gt;   &lt;img alt="image2" height="450" src="http://www.geekfan.net/wp-content/uploads/image2.png" width="650"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;尽管第三方cookie也有一些正当的用途，但是它们常常被广告系统用来监视你在不同网站的行为。许多网站——并不是大部分网站都会有第三方的广告和监视脚本。如果两个不同的网站有相同的广告或者监视系统，那么你浏览器上关于这两个网站的浏览历史就可以结合在一起被追踪和分析了。那些来自社交网站的脚本同样有追踪的功能。比如说你登录了Facebook，然后你浏览另一个网站，而这个网站上有Facebook的那个“Like”（点赞）按钮，那么Facebook就可以知道你浏览了这个网站。Facebook保存了一个cookie去记录你的登录状态，这样这个Like按钮（它本身就是脚本的一部分）就可以知道你是谁了。&lt;/p&gt;
 &lt;h2&gt;  &lt;strong&gt;Super Cookies&lt;/strong&gt;&lt;/h2&gt;
 &lt;p&gt;你可以清空你的cookies——事实上，我们这里有一篇专门的教程  &lt;a href="http://www.howtogeek.com/111925/delete-cookies-in-the-five-most-popular-web-browsers-in-windows/" target="_blank"&gt;教你如何清空浏览器的cookies&lt;/a&gt;。然而，清空cookies这招已经不怎么起作用了——“super cookies”正在兴起。super cookie的一个例子就是  &lt;a href="http://samy.pl/evercookie/" target="_blank"&gt;evercookie&lt;/a&gt;。super cookies如evercookie会把cookie数据存在不同的地方–比如，flash的cookie，Silverlight storage，浏览器历史记录，或者说html5的本地存储中。一个非常高明的记录用户的方法是，每次用户登录一个网站，网站都记录在一个很小的图片中记录一个特有的颜色。这些图片会被存放在用户的浏览器缓存中，这样一来，这个颜色就可以用来识别这个用户了。&lt;/p&gt;
 &lt;p&gt;当网站发觉你在某些地方删除了super cookie，那么它会利用其他的地方的存储的数据将这些信息恢复过来。例如，你可能清除了浏览器的cookies，但是你没有清除flash中的cookie，那么，这个网站会将flash中的cookie信息重新复制到你浏览器cookies中。这样来说super cookie的生命力是很强的。  &lt;br /&gt;
  &lt;a href="http://www.geekfan.net/wp-content/uploads/image3.png" rel="lightbox[4410]" title="&amp;#32593;&amp;#31449;&amp;#26159;&amp;#22914;&amp;#20309;&amp;#36319;&amp;#36394;&amp;#30417;&amp;#35270;&amp;#20320;&amp;#30340;"&gt;   &lt;img alt="image3" height="502" src="http://www.geekfan.net/wp-content/uploads/image3.png" width="650"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;h2&gt;  &lt;strong&gt;User Agent&lt;/strong&gt;&lt;/h2&gt;
 &lt;p&gt;每次你的浏览器链接一个网页的时候，它都会向网站发送User Agent信息。这些信息包括了你浏览器的信息和操作系统信息，它们会存储起来，并被广告系统利用来分析如何投放广告。如果想知道更多关于User Agent的信息，请参阅维基百科上的  &lt;a href="http://zh.wikipedia.org/wiki/%E7%94%A8%E6%88%B7%E4%BB%A3%E7%90%86" target="_blank"&gt;User Agent&lt;/a&gt;。  &lt;br /&gt;
  &lt;a href="http://www.geekfan.net/wp-content/uploads/image4.png" rel="lightbox[4410]" title="&amp;#32593;&amp;#31449;&amp;#26159;&amp;#22914;&amp;#20309;&amp;#36319;&amp;#36394;&amp;#30417;&amp;#35270;&amp;#20320;&amp;#30340;"&gt;   &lt;img alt="image4" height="361" src="http://www.geekfan.net/wp-content/uploads/image4.png" width="650"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;h2&gt;  &lt;strong&gt;浏览器指纹&lt;/strong&gt;&lt;/h2&gt;
 &lt;p&gt;每一个浏览器实际上都具有自己的特征。网站可以检测你的操作系统类型、浏览器版本、安装的浏览器插件及其版本、操作系统的屏幕分辨率、下载的字体、所在时区和其他的信息。看吧，就算你禁用了浏览器cookie，那么也有其他信息来识别你的浏览器。&lt;/p&gt;
 &lt;p&gt;有个叫  &lt;a href="https://panopticlick.eff.org/" target="_blank"&gt;Panopticlick&lt;/a&gt;的网站可以告诉你这些信息是如何使用的。事实上，在110万人中，才会有一个人的浏览器跟你有相同的设置。&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://www.geekfan.net/wp-content/uploads/image5.png" rel="lightbox[4410]" title="&amp;#32593;&amp;#31449;&amp;#26159;&amp;#22914;&amp;#20309;&amp;#36319;&amp;#36394;&amp;#30417;&amp;#35270;&amp;#20320;&amp;#30340;"&gt;   &lt;img alt="image5" height="252" src="http://www.geekfan.net/wp-content/uploads/image5.png" width="650"&gt;&lt;/img&gt;&lt;/a&gt;  &lt;br /&gt;
当然了，肯定有其他的追踪技术。每年花在这技术的钱可不少，而且有许多人每天都在绞尽脑汁想出新招来追中你——evercookie的出现就是一项证据。&lt;/p&gt;
 &lt;p&gt;要想尽可能的在网上隐藏自己的身份，那么最好使用  &lt;a href="http://zh.wikipedia.org/zh/Tor"&gt;Tor网络&lt;/a&gt;来上网。&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://www.geekfan.net/4410/"&gt;网站是如何跟踪监视你的&lt;/a&gt;，首发于  &lt;a href="http://www.geekfan.net"&gt;极客范 - GeekFan.net&lt;/a&gt;。&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>网络安全 Cookies Tor 浏览器</category>
      <guid isPermaLink="true">https://itindex.net/detail/46988-%E7%BD%91%E7%AB%99-%E8%B7%9F%E8%B8%AA-%E7%9B%91%E8%A7%86</guid>
      <pubDate>Thu, 12 Dec 2013 09:44:02 CST</pubDate>
    </item>
    <item>
      <title>教你找出那个拖慢浏览器速度的插件</title>
      <link>https://itindex.net/detail/47095-%E6%B5%8F%E8%A7%88%E5%99%A8-%E9%80%9F%E5%BA%A6-%E6%8F%92%E4%BB%B6</link>
      <description>&lt;p&gt;  &lt;a href="http://www.geekfan.net/wp-content/uploads/firefox-add-on-memory-usage.png" rel="lightbox[4462]" title="&amp;#25945;&amp;#20320;&amp;#25214;&amp;#20986;&amp;#37027;&amp;#20010;&amp;#25302;&amp;#24930;&amp;#27983;&amp;#35272;&amp;#22120;&amp;#36895;&amp;#24230;&amp;#30340;&amp;#25554;&amp;#20214;"&gt;   &lt;img alt="firefox-add-on-memory-usage" height="300" src="http://www.geekfan.net/wp-content/uploads/firefox-add-on-memory-usage.png" width="650"&gt;&lt;/img&gt;&lt;/a&gt;  &lt;br /&gt;
浏览器插件非常有用，但是插件会增加浏览器的内存占用量，让浏览器打开更慢，而且通常来说还会降低 浏览器的运行速度。但是，如果想知道一个插件在你的系统上具体是什么情况，又该怎么做呢？&lt;/p&gt;
 &lt;p&gt;每种浏览器都提供了一种方法，可以查看插件的内存占用量，CPU占用和使用这个插件带来的启动延迟时间。具体的信息取决于你所使用的浏览器。&lt;/p&gt;
 &lt;h2&gt;火狐&lt;/h2&gt;
 &lt;p&gt;在火狐里想查看浏览器插件的内存占用量可不容易，你应该使用  &lt;a href="https://addons.mozilla.org/en-us/firefox/addon/about-addons-memory/"&gt;一款插件&lt;/a&gt;来显示内存占用。是的，为了看插件的内存占用量，去装另外一个插件，看上去有点傻，但是在用完之后，你可以把这个插件删掉或者禁用。&lt;/p&gt;
 &lt;p&gt;安装about:addons-memory插件，然后在一个标签页里打开它。出现的页面中会显示出已经安装了的插件，按照内存占用的大小排序。这样你就知道那些插件用了多少内存，禁用这些插件又会多出多少内存了。如果你装了一款有内存泄漏的插件，随着浏览器的运行，它占用的内存会越来越多——你可以过段时间再来查看这个页面，看看有没有插件又占用了很多内存。  &lt;br /&gt;
  &lt;a href="http://www.geekfan.net/wp-content/uploads/view-firefox-add-on-memory-usage.png" rel="lightbox[4462]" title="&amp;#25945;&amp;#20320;&amp;#25214;&amp;#20986;&amp;#37027;&amp;#20010;&amp;#25302;&amp;#24930;&amp;#27983;&amp;#35272;&amp;#22120;&amp;#36895;&amp;#24230;&amp;#30340;&amp;#25554;&amp;#20214;"&gt;   &lt;img alt="view-firefox-add-on-memory-usage" height="500" src="http://www.geekfan.net/wp-content/uploads/view-firefox-add-on-memory-usage.png" width="650"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;h2&gt;Chrome&lt;/h2&gt;
 &lt;p&gt;Chrome是个多进程浏览器，许多插件都是有自己单独的进程的。所以说你可以用Chrome内置的任务管理器来查看内存占用量——以及当前CPU的占用量。任务管理器还会显示已安装的Chrome Web应用的内存占用，以及已经打开的标签页和其他一些后台进程的资源消耗。&lt;/p&gt;
 &lt;p&gt;单击Chrome的菜单按钮，点击工具，选择任务管理器，就可以打开Chrome的任务管理器，也可以用快捷键Ctrl + Esc。&lt;/p&gt;
 &lt;p&gt;任务管理器会让你大概明白一个插件有多么“重量级”。不过注意，只有后台运行的插件在这里有显示，把代码注入到页面中的插件有可能不会出现在这里，这些插件可能会对页面加载次数有影响。  &lt;br /&gt;
  &lt;a href="http://www.geekfan.net/wp-content/uploads/chrome-task-manager.png" rel="lightbox[4462]" title="&amp;#25945;&amp;#20320;&amp;#25214;&amp;#20986;&amp;#37027;&amp;#20010;&amp;#25302;&amp;#24930;&amp;#27983;&amp;#35272;&amp;#22120;&amp;#36895;&amp;#24230;&amp;#30340;&amp;#25554;&amp;#20214;"&gt;   &lt;img alt="chrome-task-manager" height="389" src="http://www.geekfan.net/wp-content/uploads/chrome-task-manager.png" width="650"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;h2&gt;IE&lt;/h2&gt;
 &lt;p&gt;IE不会显示插件消耗的内存，但是会告诉你每个插件的加载时间。你可以从加载时间推断出一个插件消耗多少资源——如果加载时间很长，它就很有可能会占用更多内存，会让浏览器慢得更明显。&lt;/p&gt;
 &lt;p&gt;点击IE的菜单，然后选择管理插件，就能看到加载时间。每个插件的加载时间都会显示在加载时间那一栏——如果你想禁用一个插件，在列表中选中，然后点禁用。&lt;/p&gt;
 &lt;p&gt;IE还会显示每个插件的“导航时间”，就是你进入或加载一个新页面时，插件造成的延迟时间。  &lt;br /&gt;
  &lt;a href="http://www.geekfan.net/wp-content/uploads/internet-explorer-add-on-times.png" rel="lightbox[4462]" title="&amp;#25945;&amp;#20320;&amp;#25214;&amp;#20986;&amp;#37027;&amp;#20010;&amp;#25302;&amp;#24930;&amp;#27983;&amp;#35272;&amp;#22120;&amp;#36895;&amp;#24230;&amp;#30340;&amp;#25554;&amp;#20214;"&gt;   &lt;img alt="internet-explorer-add-on-times" height="300" src="http://www.geekfan.net/wp-content/uploads/internet-explorer-add-on-times.png" width="650"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;h2&gt;使用浏览器的安全模式&lt;/h2&gt;
 &lt;p&gt;事实上，判断一个浏览器插件占用的资源并不容易。上面的方法会给你一些信息，但是不足以给你一个整体印象。&lt;/p&gt;
 &lt;p&gt;好在有方法可以知道，如果没有插件，你的浏览器运行速度有多快。你可以以安全模式打开浏览器，这样就不会加载任何插件。如果你的浏览器会快很多，那么就能知道有个插件在拖慢它。然后就可以逐个禁用插件，看看运行速度有多少提升了。&lt;/p&gt;
 &lt;h2&gt;火狐&lt;/h2&gt;
 &lt;p&gt;单击火狐按钮，指向帮助，点击以安全模式重启。  &lt;br /&gt;
  &lt;a href="http://www.geekfan.net/wp-content/uploads/firefox-restart-with-add-ons-disabled.png" rel="lightbox[4462]" title="&amp;#25945;&amp;#20320;&amp;#25214;&amp;#20986;&amp;#37027;&amp;#20010;&amp;#25302;&amp;#24930;&amp;#27983;&amp;#35272;&amp;#22120;&amp;#36895;&amp;#24230;&amp;#30340;&amp;#25554;&amp;#20214;"&gt;   &lt;img alt="firefox-restart-with-add-ons-disabled" height="355" src="http://www.geekfan.net/wp-content/uploads/firefox-restart-with-add-ons-disabled.png" width="650"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;h2&gt;Chrome&lt;/h2&gt;
 &lt;p&gt;右键单击任务栏上的Chrome图标，选择属性。在目标的后面加上 –no-extensions(双段横线开头），然后点击确定。关闭所有和Chrome有关的东西，如果系统托盘里有Chrome，也把它关闭。然后用刚才修改的快捷方式打开Chrome。如果想关掉安全模式，只要把快捷方式改回来然后重启Chrome就行了。  &lt;br /&gt;
  &lt;a href="http://www.geekfan.net/wp-content/uploads/launch-chrome-in-safe-mode-without-extensions.png" rel="lightbox[4462]" title="&amp;#25945;&amp;#20320;&amp;#25214;&amp;#20986;&amp;#37027;&amp;#20010;&amp;#25302;&amp;#24930;&amp;#27983;&amp;#35272;&amp;#22120;&amp;#36895;&amp;#24230;&amp;#30340;&amp;#25554;&amp;#20214;"&gt;   &lt;img alt="launch-chrome-in-safe-mode-without-extensions" height="563" src="http://www.geekfan.net/wp-content/uploads/launch-chrome-in-safe-mode-without-extensions.png" width="650"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;h2&gt;IE&lt;/h2&gt;
 &lt;p&gt;在Win7上面，单击开始-&amp;gt;所有程序-&amp;gt;附件-&amp;gt;系统工具-&amp;gt; Internet Explorer(无加载项)。在Win8上面，必须手动启动IE——按下Win+R，打开运行对话框，然后输入下面的命令并按下回车：  &lt;br /&gt;
iexplore.exe -extoff  &lt;br /&gt;
  &lt;a href="http://www.geekfan.net/wp-content/uploads/internet-explorer-running-without-add-ons.png" rel="lightbox[4462]" title="&amp;#25945;&amp;#20320;&amp;#25214;&amp;#20986;&amp;#37027;&amp;#20010;&amp;#25302;&amp;#24930;&amp;#27983;&amp;#35272;&amp;#22120;&amp;#36895;&amp;#24230;&amp;#30340;&amp;#25554;&amp;#20214;"&gt;   &lt;img alt="internet-explorer-running-without-add-ons" height="402" src="http://www.geekfan.net/wp-content/uploads/internet-explorer-running-without-add-ons.png" width="650"&gt;&lt;/img&gt;&lt;/a&gt;  &lt;br /&gt;
浏览器插件很有用，但是和其他软件一样，你应该只用你需要的插件。&lt;/p&gt;
 &lt;p&gt;装的插件越少，浏览器速度变慢就越不明显。在现在计算机上，使用几个轻量级的插件，并不会有可察觉的性能变化，但是如果一直装插件，就会发现浏览器变慢了。&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://www.geekfan.net/4462/"&gt;教你找出那个拖慢浏览器速度的插件&lt;/a&gt;，首发于  &lt;a href="http://www.geekfan.net"&gt;极客范 - GeekFan.net&lt;/a&gt;。&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>互联网 浏览器</category>
      <guid isPermaLink="true">https://itindex.net/detail/47095-%E6%B5%8F%E8%A7%88%E5%99%A8-%E9%80%9F%E5%BA%A6-%E6%8F%92%E4%BB%B6</guid>
      <pubDate>Tue, 17 Dec 2013 08:00:22 CST</pubDate>
    </item>
    <item>
      <title>让小孩安全使用社交网络的十个建议</title>
      <link>https://itindex.net/detail/46283-%E5%B0%8F%E5%AD%A9-%E5%AE%89%E5%85%A8-%E7%A4%BE%E4%BA%A4%E7%BD%91%E7%BB%9C</link>
      <description>&lt;p&gt;对于许多网络使用者来说，当我们通过浏览器链接互联网的时候，社交网络已经成为他们主要的网络活动。你的孩子很可能也在使用社交网络，而且程度比你所知道的更深。作为负责任的父母，我们需要知道孩子跟谁互动，并帮助他们在生活里建立有意义的关系。但我们要如何帮他们和网络朋友也做到这一点呢？&lt;/p&gt;
 &lt;p&gt;底下是可以帮你引导你的小孩安全而积极地与社交网络互动的十个建议。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;1.自己加入社交网络。&lt;/strong&gt;如果你不知道社交网络是怎么一回事，那么是时候开始去了解了。其中一个最好的方法就是直接问你的孩子。&lt;/p&gt;
 &lt;p&gt;我因为我的小孩而对社交网络有兴趣，现在我已经是个狂热的使用者了。他们可以告诉你他们使用哪些服务，如何使用这些服务，甚至可以告诉你要如何去找到社交网络有用和有趣的地方。&lt;/p&gt;
 &lt;p&gt;你的孩子会感谢你对于他们所喜欢的事物感兴趣，不管他们是否愿意承认。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;2.在你孩子所用的社交网络上与他们建立链接，并坚持他们加你好友。&lt;/strong&gt;你会想知道你的孩子出门之后去了哪里和做了些什么？在社交网络上也是一样。他们在网上所做的事情会影响到你和他们，不管是好是坏。&lt;/p&gt;
 &lt;p&gt;如果你跟你的孩子建立链接，你可以看到他们做些什么，是否张贴和阅读合适的内容，并且确保他们的社交网络交谈是正常的。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;3.教导你的孩子关于将个人资料公开的危险。&lt;/strong&gt;当你将个人资料和意见放到网络上，这些资料就是会让所有人看到，而且可以说是永久存在，无法移除。你所写的东西以后可能会反咬你一口。&lt;/p&gt;
 &lt;p&gt;一般情况下，你和你的孩子不应该写你们不会愿意公开在其他人面前说的东西。任何人都可以从你的个人资料，和你在社交网站上所写的东西来知道许多关于你的事情。如果你定期检查像是Facebook的地点功能，甚至可以找到在任何时间你可能会出现的地方。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;4.确保你的孩子知道如何控制自己的社交网络隐私设定。&lt;/strong&gt;当提到如何保护你的网络隐私时，预防甚于治疗。如果你希望你的孩子限制自己所公开的个人资料，那么他们就需要熟悉他们社交网络服务所提供的隐私控制选项。&lt;/p&gt;
 &lt;p&gt;你应该要特别注意那些你孩子所用的应用程序。社交网络应用程序通常会用独立的隐私设定来存取个人资料，和对一般使用者的隐私设定分开。也就是说，应用程序就像是另一类的使用者。你的孩子应该要跟链接其他人一样地小心使用这些应用程序。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;5.让你的孩子知道你认为什么是适当的社交内容，包括传送和接收。&lt;/strong&gt;你可能已经知道什么对你的孩子来说是适合的内容或行为。确保他们了解并能遵循你的导引。这里可以应用黄金法则。&lt;/p&gt;
 &lt;p&gt;你的孩子应该善待他人（在网络上），就跟他们想要被对待的方式一样（在网络上）。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;6.让你的孩子不要来者不拒的建立朋友关系。&lt;/strong&gt;社交网络就跟真实生活一样，你要仔细选择你的朋友。不是在那里的每个人都值得交往，不管是在网络上还是其他地方。你的孩子需要了解认识跟真正的好朋友之间的差别。&lt;/p&gt;
 &lt;p&gt;如果你珍惜你的隐私，也希望你的孩子效仿，确保他们只跟你和他们都熟识的人建立链接。这一点可能很难做到。我的孩子们链接了许多我几乎不认识的人。最基本的规则是，你的孩子不应该链接他们不知道或从未见过的人。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;7.注意那些不是他们所声称角色的人。&lt;/strong&gt;虽然你的孩子可能尽可能地遵守第六点所讨论的规则，他们还是可能会收到来自声称自己是名人或至少你的孩子所熟悉人物的链接要求。&lt;/p&gt;
 &lt;p&gt;将那些不是他们所声称角色的人加入好友可能对你的孩子造成危险。跟踪狂或犯罪份子可能会利用这来做饵给你的孩子。社交网络上的名人很少会去主动链接粉丝，通常都是粉丝想要链接他们。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;8.小心奇怪的留言，不管来自谁。&lt;/strong&gt;有时会出现社交网络帐号被入侵或被盗的事件，骇客就可以用来张贴留言或是传送讯息来引导人们点入钓鱼网站或其他可能会让你遇上恶意软件的网站。&lt;/p&gt;
 &lt;p&gt;你需要提防类似攻击出现在你孩子的帐号上，并劝他们不要点入陌生链接到未知网站去。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;9.关注社交网络与安全部落格。&lt;/strong&gt;社交媒体是不停地在变化，无论是加强新功能或出现新的安全威胁。  &lt;a href="http://www.ftc.gov/bcp/edu/pubs/consumer/tech/tec14.shtm"&gt;社交网站：给青少年和儿童的建议&lt;/a&gt;是一篇好文章，提供许多社交网络安全的建议，包括一张很棒的网站列表，让家长们可以知道更多如何保持网络安全的资讯。&lt;/p&gt;
 &lt;p&gt;其他部落格像是  &lt;a href="http://www.allfacebook.com/"&gt;All Facebook&lt;/a&gt;和  &lt;a href="http://mashable.com/"&gt;Mashable&lt;/a&gt;都是可以让你跟上社交网络趋势的有趣网站，特别是关于Facebook。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;10.使用最新版的IE浏览器。&lt;/strong&gt;通过IE的过滤功能可以有效的防止侵受恶意程序的威胁，过滤封锁不安全的网站。即便是点击陌生的链接，也让你多更多一层的保障。&lt;/p&gt;

 &lt;p&gt;This article addresses:  &lt;a href="http://www.iefans.net/anquan-shiyong-shejiao-wangluo-10-jianyi/"&gt;http://www.iefans.net/anquan-shiyong-shejiao-wangluo-10-jianyi/&lt;/a&gt;&lt;/p&gt;Here is no comments yet by the time  your rss reader get this, Do you want to be the first commentor? Hurry up &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>浏览器相关 安全</category>
      <guid isPermaLink="true">https://itindex.net/detail/46283-%E5%B0%8F%E5%AD%A9-%E5%AE%89%E5%85%A8-%E7%A4%BE%E4%BA%A4%E7%BD%91%E7%BB%9C</guid>
      <pubDate>Wed, 30 Oct 2013 23:07:47 CST</pubDate>
    </item>
    <item>
      <title>什么是浏览器指纹？它是如何泄露我们的隐私？</title>
      <link>https://itindex.net/detail/47792-%E6%B5%8F%E8%A7%88%E5%99%A8-%E6%8C%87%E7%BA%B9-%E9%9A%90%E7%A7%81</link>
      <description>&lt;p&gt;之前跟大家分享了  &lt;a href="http://www.iefans.net/ruhe-fangfan-xielu-shangwang-yinsi/" target="_blank" title="&amp;#22914;&amp;#20309;&amp;#38450;&amp;#33539;&amp;#27983;&amp;#35272;&amp;#22120;&amp;#27844;&amp;#38706;&amp;#19978;&amp;#32593;&amp;#38544;&amp;#31169;"&gt;防范浏览器泄露上网隐私的基本技巧&lt;/a&gt;，对于“隐私要求不高并且技术水平也不高”的同学，看完这篇文章基本上够了。下面继续谈谈浏览器方面的问题， 面向的是那些“对隐私要求较高，同时也具有一定折腾能力”的同学。今天这篇文章将详解浏览器的“指纹”是如何暴露你的隐私，顺便分享一些防范技巧。&lt;/p&gt;
 &lt;h3&gt;什么是“指纹”？&lt;/h3&gt;
 &lt;p&gt;说到“指纹”可能大家都知道是手指头的纹理，而且每个人的指纹都是唯一的。&lt;/p&gt;
 &lt;p&gt;如果你时常接触信息安全领域的一些资料，也会听到“指纹”这个形象的说法（比如：操作系统指纹、网络协议栈指纹、等等）。IT 领域提到的“指纹”一词，其原理跟“刑侦”是类似的——“当你需要研究某个对象的类型/类别，但这个对象你又无法直接接触到。这时候你可以利用若干技术来获取该对象的某些特征，然后根据这些特征来猜测/判断该对象的类型/类别。”&lt;/p&gt;
 &lt;h3&gt;什么是“指纹”的“信息量”？&lt;/h3&gt;
 &lt;p&gt;在 IT 领域有各种各样的特征可以用来充当“指纹”。这时候就需要判断，用哪个特征做指纹，效果更好。为了讨论这个问题，就得扫盲一下“指纹的信息量”。&lt;/p&gt;
 &lt;p&gt;为了帮助大伙儿理解，先举一个例子：&lt;/p&gt;
 &lt;p&gt;假设你要在学校中定位某个人，如果你光知道此人的性别，你是比较难定位的（只能排除 1/2 的人）；反之如果你不知道性别，但是知道此人的生日，就比较容易定位（可以排除掉大约 364/365 的人，只剩大约 1/365 的人）。为什么？因为“生日”比“性别”更加独特，所以“生日”比“性别”能够提供更多的信息量。&lt;/p&gt;
 &lt;p&gt;从这个例子可以看出：某个特征越独特，则该特征的信息量越大；反之亦然。信息量越大的特征，就可以把对象定位到越小的范围。&lt;/p&gt;
 &lt;h3&gt;“指纹”的“信息量”如何度量——关于指纹的比特数？&lt;/h3&gt;
 &lt;p&gt;（本节涉及到中学数学，数学很差的或者对数学有恐惧感的读者，请直接无视）&lt;/p&gt;
 &lt;p&gt;在 IT 领域中，可以用【比特数】来衡量某个指纹所包含的信息量。为了通俗起见，先以前面提到的“性别”来说事儿。性别只有两种可能性——“男”或者“女”，并且男女的比例是大致平均的。所以，当你知道了某人的性别，就可以把范围缩小到原先的 1/2。用 IT 的术语来讲，就是：“性别”这个特征只包含一个比特的信息量。以此类推：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;当我们说：“某特征包含3比特信息量”，意思就是：该特征会有8种大致平均的可能性（8等于2的3次方）。一旦知道该特征，可以把目标定位到八分之一。&lt;/li&gt;
  &lt;li&gt;当我们说：“某特征包含7比特信息量”，意思就是：该特征会有128种大致平均的可能性（128=2^7）。一旦知道该特征，可以定位到 1/128。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;再来说“生日”。（不考虑闰年的情况下）生日有365种可能性（并且也是平均分布的），所以生日包含的比特数大约是 8.51。为什么是 8.51 捏，因为 2 的 8.51 次方 约等于 365。因此，知道了某人的生日就可以把范围缩小到 1/365&lt;/p&gt;
 &lt;p&gt;通过上述举例，大伙儿对于指纹的信息量，应该有一些粗浅的认识了吧？&lt;/p&gt;
 &lt;h3&gt;多个指纹的综合定位&lt;/h3&gt;
 &lt;p&gt;如果能同时获取【互不相关】的若干个指纹，就可以大大增加定位的精确性。&lt;/p&gt;
 &lt;p&gt;比如要在某个公司里面定位某人，如果你知道此人的“生日”和“生肖”，那么就可以达到 1/4380（1/4380 = 1/12 * 1/365） 的定位精度。因为综合定位之后，比例之间是【乘法】的关系，所以范围就被急剧缩小了。&lt;/p&gt;
 &lt;p&gt;为什么要特别强调“互不相关”呢？假如你同时知道的信息是“生日”和“星座”，那么定位的精度依然是 1/365——因为生日的信息已经包含了星座的信息。所以，只有那些相互独立的特征（所谓的相互独立，数学称为“正交”），在综合定位的时候才可以用【乘法】。&lt;/p&gt;
 &lt;h3&gt;什么是“浏览器的指纹”？&lt;/h3&gt;
 &lt;p&gt;当你使用浏览器访问某个网站的时候，浏览器【  &lt;strong&gt;必定会暴露&lt;/strong&gt;】某些信息给这个网站。为什么强调“  &lt;strong&gt;必定&lt;/strong&gt;”呢？因为这些信息中，有些是跟 HTTP 协议相关的（本章节说的 HTTP 协议是广义的，也包括 HTTPS）。只要你基于 HTTP 协议访问网站，浏览器就【必定】会传输这些信息给网站的服务器。&lt;/p&gt;
 &lt;p&gt;再罗嗦一下：HTTP 协议是 Web 的基石。只要你通过浏览器访问 Web，必定是基于 HTTP 协议的。因此，Web 网站的服务器必定可以获取到跟你的浏览器相关的某些信息（具体是哪些信息，下面会说到）。&lt;/p&gt;
 &lt;h3&gt;“浏览器指纹”如何暴露隐私？&lt;/h3&gt;
 &lt;p&gt;“浏览器指纹”的机制跟 cookie 有点相似。关于 cookie 的作用，建议那些健忘的同学先去“  &lt;a href="http://www.iefans.net/cookie-yinsi-guanxi/" target="_blank" title="&amp;#35814;&amp;#35299;&amp;#27983;&amp;#35272;&amp;#22120;cookie&amp;#21644;&amp;#27983;&amp;#35272;&amp;#38544;&amp;#31169;&amp;#20043;&amp;#38388;&amp;#30340;&amp;#20851;&amp;#31995;"&gt;前面的博文&lt;/a&gt;”复习一下。&lt;/p&gt;
 &lt;p&gt;对于“浏览器指纹”导致的隐私问题，这里举2个例子来说明其危害。&lt;/p&gt;
 &lt;h4&gt;对于无需登录的网站&lt;/h4&gt;
 &lt;p&gt;如果你的浏览器允许记录 cookie，当你第一次访问某网站的时候，网站会在你的浏览器端记录一个 cookie，cookie 中包含某个“唯一性的标识信息”。下次你再去访问该网站，网站服务器先从你的浏览器中读取 cookie 信息，然后就可以根据 cookie 中的“唯一标识”判断出，你之前曾经访问过该网站，并且知道你上次访问该网站时，干了些什么。对付这种 cookie 很简单，你只需要在前后两次访问之间，清空浏览器的 cookie，网站就没法用 cookie 的招数来判断你的身份。&lt;/p&gt;
 &lt;p&gt;但是“清空 cookie”这招对“浏览器指纹”是无效滴。比如说你的浏览器具有非常独特的指纹，那么当你第一次访问某网站的时候，网站会在服务器端记录下你的浏览器指纹，并且会记录你在该网站的行为；下次你再去访问的时候，网站服务器再次读取浏览器指纹，然后跟之前存储的指纹进行比对，就知道你是否曾经来过，并且知道你上次访问期间干了些什么。&lt;/p&gt;
 &lt;h4&gt;对于需要登录的网站&lt;/h4&gt;
 &lt;p&gt;  &lt;strong&gt;假如网站没有采用“指纹追踪”的技术&lt;/strong&gt;，那么你可以在该网站上注册若干个帐号（马甲）。当你需要切换身份的时候，只需要先注销用户，清空浏览器的 cookie，然后用另一个帐号登录。网站是看不出来的。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;一旦网站采用“指纹追踪”的技术&lt;/strong&gt;，即使你用上述方式伪造马甲，但因为你用的是同一个浏览器，浏览器指纹相同。网站的服务器软件可以猜测出，这两个帐号其实是同一个网民注册的。&lt;/p&gt;
 &lt;h3&gt;“浏览器指纹”比“cookie”更隐蔽，更危险&lt;/h3&gt;
 &lt;p&gt;刚才对比了“浏览器指纹”和“cookie”两种身份追踪技术。两者的原理类似——都是利用某些特殊的信息来定位你的身份。两者的本质差异在于：&lt;/p&gt;
 &lt;ol&gt;
  &lt;li&gt;cookie 需要把信息保存在浏览器端，所以会被用户发现，也会被用户清除。&lt;/li&gt;
  &lt;li&gt;而“浏览器指纹”无需在客户端保存任何信息，不会被用户发觉，用户也无法清除（换句话说：你甚至无法判断你访问的网站到底有没有收集浏览器指纹）。&lt;/li&gt;
&lt;/ol&gt;
 &lt;h3&gt;“浏览器指纹”包含哪些信息？&lt;/h3&gt;
 &lt;p&gt;浏览器暴露给网站的信息有很多种，常见的有如下几种：&lt;/p&gt;
 &lt;h4&gt;User Agent&lt;/h4&gt;
 &lt;p&gt;关于 User Agent 是什么，已经在本系列前面的  &lt;a href="http://www.iefans.net/user-agent-weizhuang-liulanqi-caozuoxitong/"&gt;博文&lt;/a&gt;中有简单的说明，已了解的同学可以继续往下看。&lt;/p&gt;
 &lt;h4&gt;屏幕分辨率&lt;/h4&gt;
 &lt;p&gt;这个比较通俗易懂。稍微补充一下：这一项不仅包括屏幕的尺寸，还包括颜色深度（比如你的屏幕是16位色、24位色、还是32位色）。&lt;/p&gt;
 &lt;h4&gt;时区&lt;/h4&gt;
 &lt;p&gt;这个也比较通俗。我们应该都是“东8区”。&lt;/p&gt;
 &lt;h4&gt;浏览器的插件信息&lt;/h4&gt;
 &lt;p&gt;也就是你的浏览器装了哪些插件。&lt;/p&gt;
 &lt;p&gt;再罗嗦一次：浏览器的“插件”和“扩展”是两码事儿，别搞混了。本系列前面的博文扫盲了两者的差异，链接在“  &lt;a href="http://www.iefans.net/ruhe-fangfan-xielu-shangwang-yinsi/" target="_blank" title="&amp;#22914;&amp;#20309;&amp;#38450;&amp;#33539;&amp;#27983;&amp;#35272;&amp;#22120;&amp;#27844;&amp;#38706;&amp;#19978;&amp;#32593;&amp;#38544;&amp;#31169;"&gt;这里&lt;/a&gt;”。&lt;/p&gt;
 &lt;h4&gt;浏览器的字体信息&lt;/h4&gt;
 &lt;p&gt;和浏览器相关的一些字体信息。&lt;/p&gt;
 &lt;p&gt;如果你的浏览器安装了 Flash 或 Java 插件，有可能会暴露某些字体信息。所以在“  &lt;a href="http://www.iefans.net/ruhe-fangfan-xielu-shangwang-yinsi/" target="_blank" title="&amp;#22914;&amp;#20309;&amp;#38450;&amp;#33539;&amp;#27983;&amp;#35272;&amp;#22120;&amp;#27844;&amp;#38706;&amp;#19978;&amp;#32593;&amp;#38544;&amp;#31169;"&gt;如何防范浏览器泄露上网隐私&lt;/a&gt;”一文中就警告了浏览器插件的风险。&lt;/p&gt;
 &lt;h4&gt;HTTP ACCEPT&lt;/h4&gt;
 &lt;p&gt;这是 HTTP 协议头中的一个字段。考虑到列位看官大都不是搞 IT 技术的，这里就不深入解释这项。&lt;/p&gt;
 &lt;h4&gt;其它&lt;/h4&gt;
 &lt;p&gt;以上就是常见的浏览器指纹。当然啦，还有其它一些信息也可以成为“浏览器指纹”，考虑到篇幅就不一一列举并解释了。有兴趣的同学，请自行阅读 Mozilla 官网的  &lt;a href="https://wiki.mozilla.org/Fingerprinting" rel="nofollow" target="_blank"&gt;文档&lt;/a&gt;。&lt;/p&gt;
 &lt;h3&gt;如何看自己浏览器的指纹？&lt;/h3&gt;
 &lt;p&gt;关于浏览器指纹导致的隐私问题，可能是由“  &lt;a href="https://zh.wikipedia.org/wiki/%E7%94%B5%E5%AD%90%E5%89%8D%E5%93%A8%E5%9F%BA%E9%87%91%E4%BC%9A" rel="nofollow" target="_blank"&gt;电子前哨基金会&lt;/a&gt;”（简称 EFF）率先在2010年曝光的。后来 EFF 提供了一个页面，帮助网友看自己浏览器的指纹（请点击“  &lt;a href="https://panopticlick.eff.org/" rel="nofollow" target="_blank"&gt;这个链接&lt;/a&gt;”）。&lt;/p&gt;
 &lt;p&gt;打开此页面之后，当中有一个大大的，红色的“TEST ME”按钮。点一下此按钮，稍等几秒钟，会显示出一个表格，里面包含你当前的浏览器的指纹信息。&lt;/p&gt;
 &lt;p&gt;在这个表格中会列出每一项指纹的“信息量”以及该指纹的“占比”。关于“信息量”的含义，本文前面已经扫盲过，此处不再说明。你只需记住，某项的信息量越大，就说明该项越独特。而越独特的指纹，对隐私的威胁也就越大。&lt;/p&gt;
 &lt;p&gt;考虑到篇幅有点长，今天先聊到这里。下次跟大家分享如何防范“浏览器指纹”导致的隐私风险。&lt;/p&gt;
 &lt;p&gt;via：  &lt;a href="http://program-think.blogspot.com/" rel="external nofollow"&gt;编程随想的博客&lt;/a&gt;&lt;/p&gt;

 &lt;p&gt;This article addresses:  &lt;a href="http://www.iefans.net/liulanqi-zhiwen-ruhe-xielou-yinsi/"&gt;http://www.iefans.net/liulanqi-zhiwen-ruhe-xielou-yinsi/&lt;/a&gt;&lt;/p&gt;Here is no comments yet by the time  your rss reader get this, Do you want to be the first commentor? Hurry up &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>浏览器相关 指纹 浏览器 用户 隐私</category>
      <guid isPermaLink="true">https://itindex.net/detail/47792-%E6%B5%8F%E8%A7%88%E5%99%A8-%E6%8C%87%E7%BA%B9-%E9%9A%90%E7%A7%81</guid>
      <pubDate>Fri, 24 Jan 2014 21:59:50 CST</pubDate>
    </item>
    <item>
      <title>什么因素会影响浏览器打开网页的速度？</title>
      <link>https://itindex.net/detail/47735-%E6%B5%8F%E8%A7%88%E5%99%A8-%E7%BD%91%E9%A1%B5-%E9%80%9F%E5%BA%A6</link>
      <description>&lt;p&gt;相信大家在使用浏览器上网的时候会遇到这么一个问题，在网络环境好的情况下，使用不同的浏览器他们打开网页的速度都会差不多。但是在网络环境比较慢的情况下，每个浏览器打开网页的速度却差别比较大？&lt;/p&gt;
 &lt;p&gt;为什么在同样的环境下每个浏览器打开网页的情况会有差异呢？是什么因素使得有些浏览器的速度快，有些则很慢呢？&lt;/p&gt;
 &lt;p&gt;想必这个是很多用户不一定了解的问题，这里给大家分享一篇很好的科普文章，比较全面的介绍了是什么因素让浏览器速度更快，有兴趣的童靴们可以了解一下，全文如下：&lt;/p&gt;
 &lt;p&gt;我会试着以一种不管有没有技术背景的人都能理解的方式来解释。我用现在使用的 Quora 的网页来进行举例。假设所有的因素（平台、带宽、处理能力、磁盘速度、内存和浏览的网页）是相等的（公平起见），从用户感知和体验的角度来讲，决定浏览器速度的因素有：&lt;/p&gt;
 &lt;h3&gt;1、布局引擎/浏览器引擎&lt;/h3&gt;
 &lt;p&gt;每个浏览器内部都有一个布局引擎。如，不同的浏览器使用的浏览器引擎有：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;WebKit: Chrome and Safari&lt;/li&gt;
  &lt;li&gt;Gecko: Firefox&lt;/li&gt;
  &lt;li&gt;Trident: IE&lt;/li&gt;
  &lt;li&gt;Presto: Opera&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;布局引擎决定了HTML的标签、图片和样式在什么时候、哪一部分以及如何进行布置和渲染。基本上所有用户所看见的都是布局引擎来处理的。&lt;/p&gt;
 &lt;p&gt;下面这页中被布局引擎处理的部分都被标出来了：&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://www.iefans.net/wp-content/uploads/2014/01/liulanqi-xuanran.png" target="_blank"&gt;   &lt;img alt="&amp;#24067;&amp;#23616;&amp;#24341;&amp;#25806;&amp;#28210;&amp;#26579;/&amp;#27983;&amp;#35272;&amp;#22120;&amp;#24341;&amp;#25806;&amp;#28210;&amp;#26579;" src="http://www.iefans.net/wp-content/uploads/2014/01/liulanqi-xuanran-1024x387.png" title="&amp;#24067;&amp;#23616;&amp;#24341;&amp;#25806;&amp;#28210;&amp;#26579;/&amp;#27983;&amp;#35272;&amp;#22120;&amp;#24341;&amp;#25806;&amp;#28210;&amp;#26579;" width="620"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;在这张图片中，左边你看到的“main wrapper&amp;quot;是在整页面都生效的，而不仅是在顶部的搜索条。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;布局引擎影响速度是因为：&lt;/strong&gt;&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;在上面你看到的HTML文本下载以后，各个部分显示的顺序和渲染速度都取决于布局引擎。不同的引擎是不一样的，所以用户什么时候开始能看到页面也是不同的。&lt;/li&gt;
  &lt;li&gt;引擎也会导致在显示图片、SVG文件和可视元素上的差异。例如，IE在SVG文件的支持上有限制，而Opera对有交互内容的SVG支持性最好。&lt;/li&gt;
  &lt;li&gt;布局引擎在对HTML5的支持上的差异也比较明显。这就是为什么同样是上面的HTML，显示出来与像   &lt;a href="http://www.iefans.net/ie8-zhongwenban-guanfang-xiazai/" target="_blank" title="ie8&amp;#20013;&amp;#25991;&amp;#29256;&amp;#23448;&amp;#26041;&amp;#19979;&amp;#36733;"&gt;IE8&lt;/a&gt;这样的老的浏览器有差别的原因。&lt;/li&gt;
  &lt;li&gt;所有上面列出的引擎都是用C++编写的。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h3&gt;2、JavaScript 引擎&lt;/h3&gt;
 &lt;p&gt;每一个浏览器都有一个JavaScript引擎来处理用户与可视化元素。各个浏览器使用的JavaScript引擎如：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;V8　: Chrome&lt;/li&gt;
  &lt;li&gt;SpiderMonkey/JägerMonkey: Firefox&lt;/li&gt;
  &lt;li&gt;Nitro:　Safari&lt;/li&gt;
  &lt;li&gt;Sarakan: Opera&lt;/li&gt;
  &lt;li&gt;Chakra:    &lt;a href="http://www.iefans.net/ie9-xiazai-jianti-zhongwenban/" target="_blank" title="IE9&amp;#27983;&amp;#35272;&amp;#22120;&amp;#23448;&amp;#26041;&amp;#19979;&amp;#36733; &amp;#31616;&amp;#20307;&amp;#20013;&amp;#25991;&amp;#29256;"&gt;IE9&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;JavaScript引擎处理用户与页面的交互（所有的事情都在后台处理）。它执行页面中标识出的Java Script。&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://www.iefans.net/wp-content/uploads/2014/01/JavaScript-chuli.png" target="_blank"&gt;   &lt;img alt="JavaScript&amp;#24341;&amp;#25806;&amp;#22788;&amp;#29702;&amp;#29992;&amp;#25143;&amp;#19982;&amp;#39029;&amp;#38754;&amp;#30340;&amp;#20132;&amp;#20114;" src="http://www.iefans.net/wp-content/uploads/2014/01/JavaScript-chuli-1024x387.png" title="JavaScript&amp;#24341;&amp;#25806;&amp;#22788;&amp;#29702;&amp;#29992;&amp;#25143;&amp;#19982;&amp;#39029;&amp;#38754;&amp;#30340;&amp;#20132;&amp;#20114;" width="620"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;JavaScript 引擎影响速度是因为：&lt;/strong&gt;&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;当用户与页面交互的时候（如，按了一个按钮；在搜索条中输入一些文本等等），JavaScript引擎处理请求，把搜到的信息返回给文本框。&lt;/li&gt;
  &lt;li&gt;在程序中的所有Ajax调用，jQuery、DOM 操作等也都是被Javascript引擎来处理的。&lt;/li&gt;
  &lt;li&gt;每个引擎处理Java script的方法都不同。由于JavaScript的编译器和JSON数据处理，所以处理的速度也不同。例如，Apple保留Nitro JavaScript引擎单独给Safari，其它的开发者被迫使用其它比较慢的引擎。这就是为什么Safari总是iOS平台上最快的浏览器的原因。&lt;/li&gt;
  &lt;li&gt;有些引擎如V8的核心部分是用汇编来编写的，非核心部分是C++，其它的引擎都是用C++写的。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h3&gt;3、云端的缓存/压缩/处理&lt;/h3&gt;
 &lt;p&gt;在带宽有限的场景，上面列出的两个因素就不那么重要了。游戏规则的改变使得上面列出的两个因素在一定程度上变得无关紧要。这个技术是被Opera引入的——Opera Turbo。&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://www.iefans.net/wp-content/uploads/2014/01/yunduan-yasuo.png" target="_blank"&gt;   &lt;img alt="&amp;#20113;&amp;#31471;&amp;#30340;&amp;#32531;&amp;#23384;/&amp;#21387;&amp;#32553;/&amp;#22788;&amp;#29702;" src="http://www.iefans.net/wp-content/uploads/2014/01/yunduan-yasuo.png" title="&amp;#20113;&amp;#31471;&amp;#30340;&amp;#32531;&amp;#23384;/&amp;#21387;&amp;#32553;/&amp;#22788;&amp;#29702;" width="620"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;缓存影响速度是因为：&lt;/strong&gt;&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;网页被一个服务器在对图片、文本、脚本等压缩/优化后，被发送给用户，这一点极大地加速了浏览的体验。&lt;/li&gt;
  &lt;li&gt;这个方案，通过减小下载页的大小，几乎终结了对java scrip引擎的需求。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h3&gt;4、本地缓存：&lt;/h3&gt;
 &lt;p&gt;浏览器也缓存一些内容，像脚本、经常访问的页面等等，以备以后使用。　获取的内容从磁盘上面读取面不是通过互联网，这样处理加速了加载的时间。这就是为什么直接浏览要比重载/刷新要快。  &lt;br /&gt;
-来自Kevin Ernest Long的建议&lt;/p&gt;
 &lt;h3&gt;5、插件管理：&lt;/h3&gt;
 &lt;p&gt;典型的用户打开那些含有RIA（富internet应用，如Flash、Silverlight、Java FX、Quicktim等）的页面，在浏览器中它们要处理视频、音频、游戏等。浏览器在处理这些插件的方式，以及如何与它互相作用是不一样的。Chrome内建了Flash、PDF的支持。其它浏览器对此的方法是不一样的。例如，我当前在使用Firefox,与Firefox关联的进程有：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="&amp;#19982;&amp;#27983;&amp;#35272;&amp;#22120;&amp;#20851;&amp;#32852;&amp;#30340;&amp;#25554;&amp;#20214;&amp;#36827;&amp;#31243;" height="462" src="http://www.iefans.net/wp-content/uploads/2014/01/chajian-jincheng.png" title="&amp;#19982;&amp;#27983;&amp;#35272;&amp;#22120;&amp;#20851;&amp;#32852;&amp;#30340;&amp;#25554;&amp;#20214;&amp;#36827;&amp;#31243;" width="174"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;插件管理影响速度是因为：&lt;/strong&gt;&lt;/p&gt;
 &lt;h3&gt;6. 内存管理：&lt;/h3&gt;
 &lt;p&gt;每个标签页都被赋予相同的优先级，脚本执行和上面提到的其它一切。 这标签的内存地址必须要保持隔离，这样不会因为一个标签崩溃而引起整个浏览器宕掉，也不会有安全漏洞。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="&amp;#27983;&amp;#35272;&amp;#22120;&amp;#20869;&amp;#23384;&amp;#30340;&amp;#31649;&amp;#29702;" height="506" src="http://www.iefans.net/wp-content/uploads/2014/01/liulani-neicun.png" title="&amp;#27983;&amp;#35272;&amp;#22120;&amp;#20869;&amp;#23384;&amp;#30340;&amp;#31649;&amp;#29702;" width="198"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;Firefox 有40多个标签页，但只运行在一个包含有多线程的一个进程里。IE和Chrome会为每个新标签页打开一个单独的进程。这影响标签页的速度、稳定性和用户的整体体验。&lt;/p&gt;
 &lt;p&gt;&amp;lt;更新&amp;gt;&lt;/p&gt;
 &lt;h3&gt;7.网络方面的优化&lt;/h3&gt;
 &lt;p&gt;Mike Belshe(顺便说一下，他曾经从事过Chrome和SPDY协议方面的工作)指友善地指出网络方面的优化可以显著地影响浏览器的速度。我曾经以为浏览器在网络处理方面是相同的，但事实证明，我的假设是错误的，我要引用他的意见，以资借鉴。&lt;/p&gt;
 &lt;p&gt;噢 - 是的，大错特错了。各个浏览器通常都会嵌入HTTP栈(IE是唯一的例外）。下面是Chrome近几年在这方面的创新：&lt;/p&gt;
 &lt;p&gt;a)、DNS预取&lt;/p&gt;
 &lt;p&gt;浏览器知道与一个站点所在的子域，会在一次请求做DNS的查找。&lt;/p&gt;
 &lt;p&gt;b)、动态连接绑定&lt;/p&gt;
 &lt;p&gt;如果没有空闲的连接可用时，最简单的方法就是创建一个新的连接并等待。复杂一点（也是相对较好的）方法是预先建好一个新连接，使用的时候从已经释放的连接或是这个新连接中选一个使用，先到者先得；&lt;/p&gt;
 &lt;p&gt;c)、TCP超时的应急之策&lt;/p&gt;
 &lt;p&gt;丢包是不可避免的。TCP连接的默认超时的标准是3秒。Chrome 上可以看见的改善是在250毫秒之后再打开第2个连接，而不是等满3秒之后再建一个新的连接。&lt;/p&gt;
 &lt;p&gt;d)、连接管理&lt;/p&gt;
 &lt;p&gt;当需要一个新的连接时，IE只不是打开一个而是打开两个，&lt;/p&gt;
 &lt;p&gt;e)、SSL OCSP缓存&lt;/p&gt;
 &lt;p&gt;每次通过SSL连接的时候，你要鉴别服务器的身份。校验的结果可以缓存在RAM或是磁盘上，保存长达（一般情况下）7天。大约2年前，大部分浏览器没有缓存在磁盘上，导致在浏览器重新启动后，打开SSL的站点时会有1秒的延迟。&lt;/p&gt;
 &lt;p&gt;f)、SPDY&lt;/p&gt;
 &lt;p&gt;全新的协议&lt;/p&gt;
 &lt;p&gt;g)、管道化&lt;/p&gt;
 &lt;p&gt;通常管道化是失败的，所以大多数浏览器没有实现它，但是如果你真的做好了，它会非常有效。&lt;/p&gt;
 &lt;p&gt;h)、预渲染&lt;/p&gt;
 &lt;p&gt;有些浏览器现在对整个页面在后台进行预渲染，用学习算法认定你会装载它们&lt;/p&gt;
 &lt;p&gt;好了，这只是过去几年中实现的几个优化措施。网络栈绝对不是相同的。&lt;/p&gt;
 &lt;p&gt;有许多其它参数，诸如plugins/extensions，依赖平台的，渲染模块（open GL或是DirectX)等。　但我已经讲了大多数重要的。浏览器试着展现一个标准的HTML页面，但是为什么会存在不同的浏览器（公司/社团），它们是如何开发的（开放/封闭）以及它们支持的平台（手机/PC/平板电脑）在它们工作的过程中显示的差异。这是为什么不同浏览器有不同速度的终极根源。&lt;/p&gt;
 &lt;p&gt;原文来源：  &lt;a href="http://www.quora.com/Web-Browsers/What-makes-one-web-browser-faster-than-another" rel="external nofollow" target="_blank"&gt;quora&lt;/a&gt;  &lt;br /&gt;
译者：  &lt;a href="http://user.yeeyan.org/u/37479" rel="external nofollow" target="_blank"&gt; 华丽的谢幕&lt;/a&gt;&lt;/p&gt;

 &lt;p&gt;This article addresses:  &lt;a href="http://www.iefans.net/shenme-yinsu-yingxiang-liulanqi-dakai-wangye-sudu/"&gt;http://www.iefans.net/shenme-yinsu-yingxiang-liulanqi-dakai-wangye-sudu/&lt;/a&gt;&lt;/p&gt;Here is no comments yet by the time  your rss reader get this, Do you want to be the first commentor? Hurry up &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>浏览器相关 因素 速度</category>
      <guid isPermaLink="true">https://itindex.net/detail/47735-%E6%B5%8F%E8%A7%88%E5%99%A8-%E7%BD%91%E9%A1%B5-%E9%80%9F%E5%BA%A6</guid>
      <pubDate>Wed, 22 Jan 2014 17:13:06 CST</pubDate>
    </item>
    <item>
      <title>详解浏览器最大并发连接数</title>
      <link>https://itindex.net/detail/48215-%E6%B5%8F%E8%A7%88%E5%99%A8-%E5%B9%B6%E5%8F%91</link>
      <description>&lt;p&gt;当我们在浏览网页的时候，对浏览速度有一个重要的影响因素，就是浏览器的并发数量。并发数量简单通俗的讲就是，当浏览器网页的时候同时工作的进行数量。&lt;/p&gt;
 &lt;p&gt;如果同时只有2个并发连接数数量，那网页打开的时候只能依赖于这2条线程，前面如果有打开慢的内容，就会直接影响到后面的内容打开。但是如果同时有更多的并发连接数，这样就会大大的提高网页加载速度。详情可查看我们之前发布的文章：  &lt;a href="http://www.iefans.net/bingfa-lianjieshu-sudu-ceshi/" target="_blank"&gt;并发连接数对浏览器加载速度的测试&lt;/a&gt;。浏览器的并发连接数也并非越大越好。&lt;/p&gt;
 &lt;p&gt;下表概括了基于主机上运行的IE浏览器的版本的最大并发连接数、主机的连接速度和服务器的受支持的协议版本。&lt;/p&gt;
 &lt;table&gt;

  &lt;tr&gt;
   &lt;th&gt;版本&lt;/th&gt;
   &lt;th&gt;HTTP 1.0 服务器（宽带连接）&lt;/th&gt;
   &lt;th&gt;HTTP 1.1 服务器（宽带连接）&lt;/th&gt;
   &lt;th&gt;HTTP 1.0 服务器（拨号连接）&lt;/th&gt;
   &lt;th&gt;HTTP 1.1 服务器（拨号连接）&lt;/th&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;Internet Explorer 7 和早期版本&lt;/td&gt;
   &lt;td&gt;4&lt;/td&gt;
   &lt;td&gt;2&lt;/td&gt;
   &lt;td&gt;4&lt;/td&gt;
   &lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;Internet Explorer 8&lt;/td&gt;
   &lt;td&gt;6&lt;/td&gt;
   &lt;td&gt;6&lt;/td&gt;
   &lt;td&gt;4&lt;/td&gt;
   &lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;Internet Explorer 9&lt;/td&gt;
   &lt;td&gt;10&lt;/td&gt;
   &lt;td&gt;10&lt;/td&gt;
   &lt;td&gt;?&lt;/td&gt;
   &lt;td&gt;?&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;Internet Explorer 10&lt;/td&gt;
   &lt;td&gt;6&lt;/td&gt;
   &lt;td&gt;6&lt;/td&gt;
   &lt;td&gt;?&lt;/td&gt;
   &lt;td&gt;?&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;Internet Explorer 11&lt;/td&gt;
   &lt;td&gt;6&lt;/td&gt;
   &lt;td&gt;6&lt;/td&gt;
   &lt;td&gt;?&lt;/td&gt;
   &lt;td&gt;?&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;chrome、firefox&lt;/td&gt;
   &lt;td&gt;6&lt;/td&gt;
   &lt;td&gt;6&lt;/td&gt;
   &lt;td&gt;?&lt;/td&gt;
   &lt;td&gt;?&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
 &lt;p&gt;Internet Explorer 8+ 提供了一个   &lt;a href="http://msdn.microsoft.com/library/ms535873.aspx"&gt;window&lt;/a&gt;.   &lt;a href="http://msdn.microsoft.com/library/cc197013.aspx"&gt;maxConnectionsPerServer&lt;/a&gt; 对象，服务器可以利用此对象来确定客户端计算机上的可用连接数。  &lt;br /&gt;
在 Internet Explorer 8+ 中，maxConnectionsPerServer 对于宽带连接将返回   &lt;code&gt;6&lt;/code&gt;，除非用户或管理员已重写此默认值。 在客户端计算机通过拨号连接时，如果连接到 HTTP 1.1 服务器，则 maxConnectionsPerServer 将返回   &lt;code&gt;2&lt;/code&gt;；如果连接到 HTTP 1.0 服务器，则 maxConnectionsPerServer 将返回   &lt;code&gt;4&lt;/code&gt;。&lt;/p&gt;
 &lt;p&gt;很多人都说是：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="&amp;#36830;&amp;#25509;&amp;#25968;&amp;#30340;&amp;#23567;&amp;#25925;&amp;#20107;" src="http://www.iefans.net/wp-content/uploads/2014/02/155c_222108542005724.png" width="625"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;实际情况（china）：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="&amp;#36830;&amp;#25509;&amp;#25968;&amp;#30340;&amp;#30495;&amp;#30456;" src="http://www.iefans.net/wp-content/uploads/2014/02/57b2_222109039024889.png" width="625"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;很多客户端软件可以修改电脑的最大连接数，比如：迅雷、暴风影音等。&lt;/p&gt;
 &lt;p&gt;之前我们曾跟大家分享过  &lt;a href="http://www.iefans.net/qingqiu-bingfa-lianjieshu-xianzhi/" target="_blank" title="IE&amp;#21644;Firefox&amp;#23545;&amp;#21516;&amp;#19968;&amp;#22495;&amp;#21517;&amp;#36827;&amp;#34892;&amp;#35831;&amp;#27714;&amp;#30340;&amp;#24182;&amp;#21457;&amp;#36830;&amp;#25509;&amp;#25968;&amp;#38480;&amp;#21046;"&gt;如何修改IE浏览器的并发连接数&lt;/a&gt;，如果你正在使用IE7及以下的更低版本，不妨尝试将连接数修改到6，这将有助于提升打开网站的速度。&lt;/p&gt;

 &lt;p&gt;This article addresses:  &lt;a href="http://www.iefans.net/liulanqi-zuida-bingfa-lianjieshu/"&gt;http://www.iefans.net/liulanqi-zuida-bingfa-lianjieshu/&lt;/a&gt;&lt;/p&gt;Here is no comments yet by the time  your rss reader get this, Do you want to be the first commentor? Hurry up &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>浏览器相关 并发连接数</category>
      <guid isPermaLink="true">https://itindex.net/detail/48215-%E6%B5%8F%E8%A7%88%E5%99%A8-%E5%B9%B6%E5%8F%91</guid>
      <pubDate>Sat, 22 Feb 2014 23:24:53 CST</pubDate>
    </item>
    <item>
      <title>翻译：清除各个浏览器中的数据研究</title>
      <link>https://itindex.net/detail/39769-%E7%BF%BB%E8%AF%91-%E6%B5%8F%E8%A7%88%E5%99%A8-%E6%95%B0%E6%8D%AE</link>
      <description>&lt;p&gt;by   &lt;a href="http://www.zhangxinxu.com/"&gt;zhangxinxu&lt;/a&gt; from   &lt;a href="http://www.zhangxinxu.com/"&gt;http://www.zhangxinxu.com&lt;/a&gt;  &lt;br /&gt;
本文地址：  &lt;a href="http://www.zhangxinxu.com/wordpress/?p=2630"&gt;http://www.zhangxinxu.com/wordpress/?p=2630&lt;/a&gt;&lt;/p&gt;
 &lt;div&gt;
原文地址：  &lt;a href="http://www.stevesouders.com/blog/2012/09/10/clearing-browser-data/"&gt;http://www.stevesouders.com/…/clearing-browser-data/&lt;/a&gt;  &lt;br /&gt;
原文作者：没找到  &lt;br /&gt;
翻译编辑：  &lt;a href="http://www.zhanxinxu.com/"&gt;张鑫旭&lt;/a&gt;
&lt;/div&gt;
 &lt;p&gt;——–最近较忙，直接进入正题以下为翻译全文——&lt;/p&gt;
 &lt;p&gt;对于快速Web APP，缓存四赢得性能的关键。最近个把月，我做了个所谓“清除浏览器实验”，研究下用户清除缓存的时候会发生哪些奇葩的事情。另外，除了浏览器的磁盘缓存（指图片啊等数据），我还折腾了其他一些数据格式，如：cookies,   &lt;a href="http://www.w3.org/TR/webstorage/#the-localstorage-attribute"&gt;localStorage&lt;/a&gt;, 以及   &lt;a href="http://www.w3.org/TR/2011/WD-html5-20110525/offline.html#appcache"&gt;application cache&lt;/a&gt;.   &lt;a href="http://www.w3.org/TR/IndexedDB/"&gt;indexedDB&lt;/a&gt;并不在其中，因为貌似其要嗝屁了。&lt;/p&gt;
 &lt;h3&gt;实验的准备与操作(大致看看)&lt;/h3&gt;
 &lt;p&gt;该  &lt;a href="http://stevesouders.com/tests/clearbrowser/"&gt;测试&lt;/a&gt;从  &lt;a href="http://stevesouders.com/tests/clearbrowser/save.php"&gt;Save Stuff&lt;/a&gt;这个页面开始。该页面做了4件事情：&lt;/p&gt;
 &lt;ol&gt;
  &lt;li&gt;设置了一个叫做”cachetest”的永久Cookie, JavaScript创建；&lt;/li&gt;
  &lt;li&gt;测试   &lt;code&gt;window.localStorage&lt;/code&gt;以确定是否支持本地存储。如果支持，将会看到一个关键字为”cachetest”的本地存储值；&lt;/li&gt;
  &lt;li&gt;测试   &lt;code&gt;window.applicationCache&lt;/code&gt;以确定是否支持应用程序缓存 – appcache(Application Cache – 可用来实现离线应用)。如果支持，会使用appcache加载一个   &lt;a href="http://stevesouders.com/tests/clearbrowser/iframe.html"&gt;iframe&lt;/a&gt;. 该   &lt;a href="http://stevesouders.com/tests/clearbrowser/iframe.manifest"&gt;iframe的manifest文件&lt;/a&gt;有个包含“iframe404.js iframe.js”的备份片段。因为   &lt;code&gt;iframe404.js&lt;/code&gt;是不存在的，appcache会加载   &lt;a href="http://stevesouders.com/tests/clearbrowser/iframe.js"&gt;iframe.js&lt;/a&gt;（定义了全局变量   &lt;code&gt;iframejsNow&lt;/code&gt;）代替之。&lt;/li&gt;
  &lt;li&gt;加载一个需要5秒返回的图片，并缓存30天。&lt;/li&gt;
&lt;/ol&gt;
 &lt;p&gt;OK，现在数据已经保存到浏览器中了，然后用户根据系统提示清除浏览器数据，然后去  &lt;a href="http://stevesouders.com/tests/clearbrowser/check.php"&gt;检查缓存页面&lt;/a&gt;去查看之前保存的数据项还在不在。&lt;/p&gt;
 &lt;ol&gt;
  &lt;li&gt;查找名叫”cachetest”的Cookie;&lt;/li&gt;
  &lt;li&gt;检查关键字为”cachetest”本地存储数据；&lt;/li&gt;
  &lt;li&gt;再次加载iframe, 通过iframe的onload事件处理，检查   &lt;code&gt;iframejsNow&lt;/code&gt;是否被定义，以确定appcache是否被清掉了；&lt;/li&gt;
  &lt;li&gt;加载同样那个要超过5秒的图片，如果这回图片加载的时间多于5秒，说明图片的缓存被干掉了。&lt;/li&gt;
&lt;/ol&gt;
 &lt;h3&gt;我的测试结果&lt;/h3&gt;
 &lt;p&gt;  &lt;img alt="&amp;#27983;&amp;#35272;&amp;#22120;&amp;#25968;&amp;#25454;&amp;#32531;&amp;#23384;&amp;#28165;&amp;#38500;&amp;#30340;&amp;#32467;&amp;#26524; &amp;#24352;&amp;#37995;&amp;#26093;-&amp;#37995;&amp;#31354;&amp;#38388;-&amp;#37995;&amp;#29983;&amp;#27963;" height="381" src="http://image.zhangxinxu.com/image/blog/201209/my-results.png" title="&amp;#27983;&amp;#35272;&amp;#22120;&amp;#25968;&amp;#25454;&amp;#32531;&amp;#23384;&amp;#28165;&amp;#38500;&amp;#30340;&amp;#32467;&amp;#26524;" width="493"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;上图所示结果虽然不尽相同，但是跟我预想的很接近，然后其他一些知识碎片：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;Chrome 21&lt;/strong&gt;不清除localStorage. 这个异常结果可能归结于测试结果。 Chrome 21清除localStorage，但是并不在当前选项卡的内存中清除。如果你切换选项卡或者是重启Chrome浏览器，则被清掉了，是从内存中也清掉了。这实际上是一个bug, Chrome 23.0.1259以及后续版本修正了这个问题。&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;Firefox 3.6&lt;/strong&gt;不清楚磁盘缓存，该问题的出现似乎与Chrome 21约好的：图片已经从磁盘缓存中清掉，但是，内存缓存中还在。按理说，两者都应该被清除掉的，2010的时候，FireFox团队修复了这个   &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=576621"&gt;bug&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;IE 6-7&lt;/strong&gt;不支持appcache以及localStorage.&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;IE 8-9&lt;/strong&gt;不支持appcache&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;Firefox 3.6, IE 8-9, and Safari 5.0.5&lt;/strong&gt;不清除localStorage, 我猜想，出现这个问题的原因是浏览器没有连接这些本地存储的界面。可参考下面展示的浏览器界面。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h3&gt;浏览器的交互界面们&lt;/h3&gt;
 &lt;p&gt;在查看广泛数据下的结果前，有必要先看看各个浏览器清除数据的界面是怎样的，包含哪些清除的选项。下面截图来自Mac或window, 因此，可能和你自己看到的是有一些差异的。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;Chrome&lt;/strong&gt;  &lt;br /&gt;
点击扳手图标 → 历史 → 清除所有浏览数据…Chrome 21浏览器下如下显示。复选”Empty the cache”（“清空缓存”）清除磁盘缓存，”Delete cookies and other site and plug-in data”（“删cookie以及其他站点和插件数据”）清除cookies, localStorage, 及appcache.&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="Chrome21&amp;#27983;&amp;#35272;&amp;#22120;&amp;#19979;&amp;#28165;&amp;#38500;&amp;#25968;&amp;#25454;&amp;#30340;&amp;#25805;&amp;#20316;&amp;#30028;&amp;#38754; &amp;#24352;&amp;#37995;&amp;#26093;-&amp;#37995;&amp;#31354;&amp;#38388;-&amp;#37995;&amp;#29983;&amp;#27963;" height="311" src="http://image.zhangxinxu.com/image/blog/201209/chrome21.png" title="Chrome21&amp;#27983;&amp;#35272;&amp;#22120;&amp;#19979;&amp;#28165;&amp;#38500;&amp;#25968;&amp;#25454;&amp;#30340;&amp;#25805;&amp;#20316;&amp;#30028;&amp;#38754;" width="511"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;Firefox&lt;/strong&gt;  &lt;br /&gt;
清除Firefox 3.6点击工具 → 清除最近历史…然后复选Cookie和Cache. 没有清除localStorage的复选框。  &lt;br /&gt;
  &lt;img alt="FireFox3.6&amp;#27983;&amp;#35272;&amp;#22120;&amp;#19979;&amp;#30340;&amp;#25968;&amp;#25454;&amp;#28165;&amp;#38500;  &amp;#24352;&amp;#37995;&amp;#26093;-&amp;#37995;&amp;#31354;&amp;#38388;-&amp;#37995;&amp;#29983;&amp;#27963;" height="342" src="http://image.zhangxinxu.com/image/blog/201209/firefox3.6.png" title="FireFox3.6&amp;#27983;&amp;#35272;&amp;#22120;&amp;#19979;&amp;#30340;&amp;#25968;&amp;#25454;&amp;#28165;&amp;#38500; " width="321"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;FireFox12通过新增离线站点数据(Offline Website Data)这个复选项修复了这个问题。Firefox 15 有同样选择。结果localStorage被成功清掉了！  &lt;br /&gt;
  &lt;img alt="FireFox12&amp;#27983;&amp;#35272;&amp;#22120;&amp;#19979;&amp;#30340;&amp;#25968;&amp;#25454;&amp;#28165;&amp;#38500;&amp;#65288;&amp;#21547;&amp;#31163;&amp;#32447;&amp;#31449;&amp;#28857;&amp;#25968;&amp;#25454;&amp;#65289;" height="278" src="http://image.zhangxinxu.com/image/blog/201209/firefox12.png" title="FireFox12&amp;#27983;&amp;#35272;&amp;#22120;&amp;#19979;&amp;#30340;&amp;#25968;&amp;#25454;&amp;#28165;&amp;#38500;&amp;#65288;&amp;#21547;&amp;#31163;&amp;#32447;&amp;#31449;&amp;#28857;&amp;#25968;&amp;#25454;&amp;#65289;" width="321"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;Internet Explorer&lt;/strong&gt;  &lt;br /&gt;
IE6下可能要折腾点。点击工具 → internet选项… → 两个按钮：删除Cookie…(Delete Cookies…)和删除文件…(Delete Files…). 两个按钮都需要确认是否选择并删除。这里有个“删除所有离线内容”(“Delete all offline content”)选项，但因为appcache和localStorage不支持，对于本实验而言纯属打酱油的。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="IE6&amp;#27983;&amp;#35272;&amp;#22120;&amp;#19979;&amp;#27983;&amp;#35272;&amp;#25968;&amp;#25454;&amp;#30340;&amp;#28165;&amp;#38500; &amp;#24352;&amp;#37995;&amp;#26093;-&amp;#37995;&amp;#31354;&amp;#38388;-&amp;#37995;&amp;#29983;&amp;#27963;" height="465" src="http://image.zhangxinxu.com/image/blog/201209/ie6.png" title="IE6&amp;#27983;&amp;#35272;&amp;#22120;&amp;#19979;&amp;#27983;&amp;#35272;&amp;#25968;&amp;#25454;&amp;#30340;&amp;#28165;&amp;#38500;" width="444"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;清除IE7则点击工具 → 删除浏览历史…仍然是两个分离的按钮，删除文件(deleting files)和删除cookie(deleting cookies), 同样有个“删除所有…”按钮，可以一键搞定everything~~  &lt;br /&gt;
  &lt;img alt="IE7&amp;#27983;&amp;#35272;&amp;#22120;&amp;#19979;&amp;#25968;&amp;#25454;&amp;#30340;&amp;#28165;&amp;#38500;&amp;#25130;&amp;#22270; &amp;#24352;&amp;#37995;&amp;#26093;-&amp;#37995;&amp;#31354;&amp;#38388;-&amp;#37995;&amp;#29983;&amp;#27963;" height="385" src="http://image.zhangxinxu.com/image/blog/201209/ie7.png" title="IE7&amp;#27983;&amp;#35272;&amp;#22120;&amp;#19979;&amp;#25968;&amp;#25454;&amp;#30340;&amp;#28165;&amp;#38500;&amp;#25130;&amp;#22270;" width="396"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;IE8的UI通过工具 → Internet选项 → 常规 → 删除…访问，相比IE7其多了个复选框“私人筛选数据”(“InPrivate Filtering data”)（其还有“保留收藏网站数据(Preserve Favorites website data)”项，这个在以后的文章我会讨论的）, IE8已经支持localStorage, 不过看样子是清不掉的，因为没有提供相关的复选框，就像FireFox12中清除离线数据一样。  &lt;br /&gt;
  &lt;img alt="IE8&amp;#20013;&amp;#28165;&amp;#38500;&amp;#27983;&amp;#35272;&amp;#22120;&amp;#25968;&amp;#25454; &amp;#24352;&amp;#37995;&amp;#26093;-&amp;#37995;&amp;#31354;&amp;#38388;-&amp;#37995;&amp;#29983;&amp;#27963;" height="485" src="http://image.zhangxinxu.com/image/blog/201209/ie8.png" title="IE8&amp;#20013;&amp;#28165;&amp;#38500;&amp;#27983;&amp;#35272;&amp;#22120;&amp;#25968;&amp;#25454;" width="398"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;IE9的界面又变了，添加了“下载历史”(“Download History”), “私人筛选数据”(“InPrivate Filtering data”)被“ActiveX筛选以及跟踪保护数据”(“ActiveX Filtering and Tracking Protection data”)替换了。类似IE8, localStorage在IE9中是支持的，但是，貌似不能被清除（木有清除的复选框框）~~  &lt;br /&gt;
  &lt;img alt="IE9&amp;#27983;&amp;#35272;&amp;#22120;&amp;#19979;&amp;#25968;&amp;#25454;&amp;#28165;&amp;#38500;&amp;#30340;&amp;#30028;&amp;#38754;&amp;#25928;&amp;#26524; &amp;#24352;&amp;#37995;&amp;#26093;-&amp;#37995;&amp;#31354;&amp;#38388;-&amp;#37995;&amp;#29983;&amp;#27963;" height="537" src="http://image.zhangxinxu.com/image/blog/201209/ie9.png" title="IE9&amp;#27983;&amp;#35272;&amp;#22120;&amp;#19979;&amp;#25968;&amp;#25454;&amp;#28165;&amp;#38500;&amp;#30340;&amp;#30028;&amp;#38754;&amp;#25928;&amp;#26524;" width="396"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;iphone&lt;/strong&gt;  &lt;br /&gt;
iPhone（果不其然）有这最简单的清除数据的界面。通过设置 → safari浏览器，我们可以看到一个单按钮：“清除Cookie和数据(Clear Cookies and Data)”。 结果显示，这个可以清除掉cookies, localStorage, appcache, 一级磁盘缓存。在iPhone上很难运行我的测试，因为你要离开浏览器去进行设置，当你回到浏览器的时候，这个页面已经被清除了。为解决这个问题，我在下一个页面键入下面地址进行测试：  &lt;code&gt;http://stevesouders.com/tests/clearbrowser/check.php&lt;/code&gt;  &lt;br /&gt;
  &lt;img alt="iphone4&amp;#19978;&amp;#28165;&amp;#38500;Safari&amp;#27983;&amp;#35272;&amp;#22120;&amp;#25968;&amp;#25454;&amp;#30340;UI" height="480" src="http://image.zhangxinxu.com/image/blog/201209/iphone4.png" title="iphone4&amp;#19978;&amp;#28165;&amp;#38500;Safari&amp;#27983;&amp;#35272;&amp;#22120;&amp;#25968;&amp;#25454;&amp;#30340;UI" width="320"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;Opera&lt;/strong&gt;  &lt;br /&gt;
Opera的删除选项最细化。Opera 12中，访问工具 → 删除私有数据…就会出现一个对话框。关键的复选框是“删除所有Cookie(Delete all cookies)”， “删除全部缓存(Delete entire cache)”， 以及“删除长期存储(Delete persistent storage)”。有很多选择，但都在一个对话框中。  &lt;br /&gt;
  &lt;img alt="Opera12&amp;#27983;&amp;#35272;&amp;#22120;&amp;#20013;&amp;#25968;&amp;#25454;&amp;#28165;&amp;#38500;&amp;#25805;&amp;#20316;&amp;#23545;&amp;#35805;&amp;#26694;&amp;#25130;&amp;#22270; &amp;#24352;&amp;#37995;&amp;#26093;-&amp;#37995;&amp;#31354;&amp;#38388;-&amp;#37995;&amp;#29983;&amp;#27963;" height="674" src="http://image.zhangxinxu.com/image/blog/201209/opera12.png" title="Opera12&amp;#27983;&amp;#35272;&amp;#22120;&amp;#20013;&amp;#25968;&amp;#25454;&amp;#28165;&amp;#38500;&amp;#25805;&amp;#20316;&amp;#23545;&amp;#35805;&amp;#26694;&amp;#25130;&amp;#22270;" width="493"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;Safari&lt;/strong&gt;  &lt;br /&gt;
Safari 5.0.5下，进入齿轮图标→重设Safari…(windows下)，然后，会出现一个有很多选项的对话框，没有“离线数据(offline data)”很明确地表明时无法删除localStorage的。（“清除历史(Clear history)”是没有效果的——当时我只是想看看是否可以把localStorage删掉的）。  &lt;br /&gt;
  &lt;img alt="Safari 5.0.5&amp;#19979;&amp;#30340;&amp;#25968;&amp;#25454;&amp;#28165;&amp;#38500;" height="338" src="http://image.zhangxinxu.com/image/blog/201209/safari5.0.5.png" title="Safari 5.0.5&amp;#19979;&amp;#30340;&amp;#25968;&amp;#25454;&amp;#28165;&amp;#38500;" width="459"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;Safari 5.1.7让我有些疑惑。一开始，我选择了Safari → 清空缓存(Empty cache)…（在Mac上），但只影响了磁盘缓存。而后我看到了 Safari → 重设Safari(Reset Safari)… ，但是只有“清除所有网站数据(Remove all website data)”，这个看上去太含糊太宽泛了。再后来，我搜索寻找更多清除选项，然后发现了Safari → 首选项… → 隐私，有一个按钮“清除所有网站数据(Remove all website data)”，这……也太不细分了吧~这个按钮可以成功清除Cookies，本地存储，appcache和磁盘高速缓存。  &lt;br /&gt;
  &lt;img alt="Mac&amp;#19978;Safari5&amp;#27983;&amp;#35272;&amp;#22120;&amp;#30340;&amp;#25968;&amp;#25454;&amp;#28165;&amp;#38500;&amp;#30028;&amp;#38754; &amp;#24352;&amp;#37995;&amp;#26093;-&amp;#37995;&amp;#31354;&amp;#38388;-&amp;#37995;&amp;#29983;&amp;#27963;" height="226" src="http://image.zhangxinxu.com/image/blog/201209/safari5.png" title="Mac&amp;#19978;Safari5&amp;#27983;&amp;#35272;&amp;#22120;&amp;#30340;&amp;#25968;&amp;#25454;&amp;#28165;&amp;#38500;&amp;#30028;&amp;#38754;" width="480"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h3&gt;大测试数据下（众包形式）的结果&lt;/h3&gt;
 &lt;blockquote&gt;  &lt;p&gt;下面的结果产生大致这样：作者折腾了一个测试页面，放出来，然后N多同行或莫名被忽悠进来的人点击几个帮助其完成了测试，然后这N多人的测试结果就是下面所要展示的结果。类似于外包中的众包。作者自己无需傻不拉几的一个一个浏览器去测。&lt;/p&gt;&lt;/blockquote&gt;
 &lt;p&gt;下面的  &lt;a href="http://www.browserscope.org/user/tests/table/agt1YS1wcm9maWxlcnINCxIEVGVzdBiUyIESDA?v=2&amp;layout=simple&amp;highlight=1"&gt;测试结果&lt;/a&gt;包含~100个浏览器(webOS, Blackberry, 及RockMelt)，我摘录中相同主浏览器下的一些结果（点击下图可查看更详细的表格结果）。  &lt;br /&gt;
  &lt;a href="http://www.browserscope.org/user/tests/table/agt1YS1wcm9maWxlcnINCxIEVGVzdBiUyIESDA?v=2&amp;layout=simple&amp;highlight=1"&gt;   &lt;img alt="&amp;#20247;&amp;#21253;&amp;#27979;&amp;#35797;&amp;#32467;&amp;#26524;&amp;#22823;&amp;#37096;&amp;#20998;&amp;#20027;&amp;#27969;&amp;#27983;&amp;#35272;&amp;#22120;&amp;#25968;&amp;#25454;&amp;#25688;&amp;#35201;" height="381" src="http://image.zhangxinxu.com/image/blog/201209/cs-results.png" title="&amp;#20247;&amp;#21253;&amp;#27979;&amp;#35797;&amp;#32467;&amp;#26524;&amp;#22823;&amp;#37096;&amp;#20998;&amp;#20027;&amp;#27969;&amp;#27983;&amp;#35272;&amp;#22120;&amp;#25968;&amp;#25454;&amp;#25688;&amp;#35201;" width="492"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;//zxx: 下面几段就是原作者的一些颠来倒去的“废话”了，我就翻译个大致意思……&lt;/p&gt;
 &lt;p&gt;本实验没杀刻骨铭心，发人深省的提示，因此，数据还算是蛮客观滴。&lt;/p&gt;
 &lt;p&gt;我个人测试结果和大家的测试结果不同的是iPhone, 估计原因是iPhone清除数据要离开浏览器……然后，什么什么的~~&lt;/p&gt;
 &lt;p&gt;不同浏览器清除数据的界面的复杂度和缺乏一致性可能导致了这些不太一致的结果，Chrome浏览器21和Firefox 15都有相当数量的测试（154，46），但是，挑落Boss的只有50％或68％。FireFox可能是特例，因为其本地数据存储之前会先询问用户；然后还有Chrome等浏览器有隐私浏览模式~~等&lt;/p&gt;
 &lt;p&gt;大家测试结果的不同可能与不同浏览器界面不一致有关。应该有跨浏览器的更一致的交互界面。一致的交互界面应该长什么样子呢？像iPhone那样直接一键解决，早死早超生吗？这真的是用户需要的吗？我有时候就想清除磁盘高速缓存，而不想删除Cookie~~ 不过嘛，现在希望所有浏览器都能按照用户所想删除数据是不可能的！&lt;/p&gt;
 &lt;p&gt;——–以上为翻译全文，虽然不是什么深奥的东西，对于知识拓展还是有一定的帮助的——&lt;/p&gt;
 &lt;p&gt;原创文章，转载请注明来自  &lt;a href="http://www.zhangxinxu.com/"&gt;张鑫旭-鑫空间-鑫生活&lt;/a&gt;[  &lt;a href="http://www.zhangxinxu.com/"&gt;http://www.zhangxinxu.com&lt;/a&gt;]  &lt;br /&gt;
本文地址：  &lt;a href="http://www.zhangxinxu.com/wordpress/?p=2630"&gt;http://www.zhangxinxu.com/wordpress/?p=2630&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;（本篇完）&lt;/p&gt;
 &lt;div&gt;有话要说，点击  &lt;a href="http://www.zhangxinxu.com/wordpress/2012/09/%e7%bf%bb%e8%af%91%ef%bc%9a%e6%b8%85%e9%99%a4%e5%90%84%e4%b8%aa%e6%b5%8f%e8%a7%88%e5%99%a8%e4%b8%ad%e7%9a%84%e6%95%b0%e6%8d%ae%e7%a0%94%e7%a9%b6/#response"&gt;这里&lt;/a&gt;发表评论。&lt;/div&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>外文翻译 appcache localStorage 本地存储 浏览器</category>
      <guid isPermaLink="true">https://itindex.net/detail/39769-%E7%BF%BB%E8%AF%91-%E6%B5%8F%E8%A7%88%E5%99%A8-%E6%95%B0%E6%8D%AE</guid>
      <pubDate>Tue, 18 Sep 2012 23:06:53 CST</pubDate>
    </item>
    <item>
      <title>浏览器事件的思考</title>
      <link>https://itindex.net/detail/40609-%E6%B5%8F%E8%A7%88%E5%99%A8-%E4%BA%8B%E4%BB%B6-%E6%80%9D%E8%80%83</link>
      <description>&lt;p&gt;来源：  &lt;a href="http://ued.alimama.com/posts/528"&gt;一淘 UX&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;先看下面的代码：&lt;/p&gt;
 &lt;p&gt;var $ = KISSY.all;&lt;/p&gt;
 &lt;p&gt;$(‘a’).on(‘click’,function(e){&lt;/p&gt;
 &lt;p&gt;doSomeThing();//这个方法貌似很有名&lt;/p&gt;
 &lt;p&gt;e.halt();&lt;/p&gt;
 &lt;p&gt;});&lt;/p&gt;
 &lt;p&gt;上面的代码看起来像是很好的完成了我们交给它的工作，  &lt;a href="http://blog.jobbole.com/12749/" title="&amp;#27983;&amp;#35272;&amp;#22120;"&gt;浏览器&lt;/a&gt;不会再将我们重定向到href中的链接，但这么做到底有什么不对呢？&lt;/p&gt;
 &lt;p&gt;在解释有什么不对前，我们来看看浏览器中事件中的几个概念&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;浏览器默认行为&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;&lt;/strong&gt;当我们点击某一个链接的时候，浏览器会直接跳转，在表单中按回车，表单会自动提交，这些都是浏览器的默认行为。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;Javascript事件传播的机制&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;什么是事件冒泡？&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;比如点击了一个按钮，这个元素上的事件被触发，同时该事件将会传播到它的所有父级元素中被触发。(a-&amp;gt;div-&amp;gt;body-&amp;gt;document-&amp;gt;window)这一过程被称为事件冒泡。事件冒泡是从子级元素到父级元素。&lt;/p&gt;
 &lt;p&gt;注意：不是所有的事件都能冒泡，blur、focus、load和unload不能像其它事件一样冒泡&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;什么是事件捕获？&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;&lt;/strong&gt;和事件冒泡恰恰相反，事件捕获是从父级元素到子级元素。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;什么是事件目标？&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;&lt;/strong&gt;简单的说也就是事件开始的那个元素，也就是上面说的a&lt;/p&gt;
 &lt;div&gt;&lt;/div&gt;
 &lt;div&gt;   &lt;a href="http://blog.jobbole.com/wp-content/uploads/2012/11/T1uqT.Xl8cXXb1upjX.jpg" rel="lightbox[30385]" title="&amp;#27983;&amp;#35272;&amp;#22120;&amp;#20107;&amp;#20214;&amp;#30340;&amp;#24605;&amp;#32771;"&gt;   &lt;img alt="&amp;#27983;&amp;#35272;&amp;#22120;&amp;#20107;&amp;#20214;&amp;#30340;&amp;#24605;&amp;#32771;" height="486" src="http://blog.jobbole.com/wp-content/uploads/2012/11/T1uqT.Xl8cXXb1upjX.jpg" title="&amp;#27983;&amp;#35272;&amp;#22120;&amp;#20107;&amp;#20214;&amp;#30340;&amp;#24605;&amp;#32771;" width="540"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;
 &lt;div&gt;&lt;/div&gt;
 &lt;p&gt;不同浏览器下的事件模型&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;● 支持W3C标准的浏览器：先捕获在冒泡。在添加事件时用addEventListener(event,fn,useCapture)方法，基中第3个参数useCapture是一个Boolean值，为true，则采用事件捕获，为false，则采用事件冒泡。&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;&lt;/strong&gt;  &lt;strong&gt;● 不兼容W3C的浏览器(IE)：IE只支持事件冒泡，它也不支持addEventListener函数，不过提供了attachEvent()方法来处理事件。&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;&lt;/strong&gt;看完上文，是否有感觉什么地方不对？没有？那再看看下文。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;”halt“到底做了什么？&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;&lt;/strong&gt;  &lt;strong&gt;当你每次调用”halt“的时候，它实际上做了2件事情：&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;&lt;/strong&gt;  &lt;strong&gt;● &lt;/strong&gt;e.preventDefault();//阻止浏览器执行默认行为&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;● &lt;/strong&gt;e.stopPropagation();//取消事件冒泡&lt;/p&gt;
 &lt;p&gt;preventDefault和stopPropagation翻译成原生js后&lt;/p&gt;
 &lt;pre&gt;function preventDefault(e) {
//如果提供了事件对象，则这是一个非IE浏览器
if(e &amp;amp;&amp;amp; e.preventDefault) {
　　//阻止默认浏览器动作(W3C)
　　e.preventDefault();
} else {
　　//IE中阻止函数器默认动作的方式
　　window.event.returnValue = false;
}
return false;
}

function stopPropagation(e) {
//如果提供了事件对象，则这是一个非IE浏览器
if(e &amp;amp;&amp;amp; e.stopPropagation) {
　　//因此它支持W3C的stopPropagation()方法
　　e.stopPropagation();
} else {
　　//否则，我们需要使用IE的方式来取消事件冒泡
　　window.event.cancelBubble = true;
}
return false;
}&lt;/pre&gt;
 &lt;p&gt;不是吧，我写最开始的代码只是想阻止浏览器的默认行为，不需要取消事件冒泡。&lt;/p&gt;
 &lt;p&gt;但是，这样写也没有什么问题啊！（嘴硬，啪啪……）。&lt;/p&gt;
 &lt;div&gt;&lt;/div&gt;
 &lt;p&gt;确实，大多数情况下，这样的代码没有任何问题，那如果我们把这段代码放大到一个大环境中，会出现什么状况&lt;/p&gt;
 &lt;div&gt;
  &lt;pre&gt;&amp;lt;div&amp;gt;
&amp;lt;h2&amp;gt;&amp;lt;a href=&amp;quot;http://etao.com/page1&amp;quot;&amp;gt;Page1&amp;lt;/a&amp;gt;&amp;lt;/h2&amp;gt;
&amp;lt;div&amp;gt;
    Teaser text...
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div&amp;gt;
&amp;lt;h2&amp;gt;&amp;lt;a href=&amp;quot;http://etao.com/page2&amp;quot;&amp;gt;Page2&amp;lt;/a&amp;gt;&amp;lt;/h2&amp;gt;
&amp;lt;div&amp;gt;
    Teaser text...
 &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
 &lt;p&gt;现在假设我们想要在用户点击文章标题时，将文章动态载入到div.content中(也就是doSomeThing做的事情),&lt;/p&gt;
 &lt;p&gt;哈哈：上文的js代码也还是会执行啊(年轻人太急)。&lt;/p&gt;
 &lt;p&gt;我们顺着这个思路继续，如果我想要在用户点击了一个div.post元素（或者任何一个它的子元素）时，给它加上一个active类，我就需要给div.post绑定click&lt;/p&gt;
 &lt;pre&gt;var posts = $(&amp;apos;div.post&amp;apos;);
posts.on(&amp;apos;click&amp;apos;,function () {
posts.removeClass(&amp;quot;active&amp;quot;);
$(this).addClass(&amp;quot;active&amp;quot;);
});&lt;/pre&gt;
 &lt;p&gt;这个代码就会有时候执行有时候不执行，因为你在点击a的时候取消了事件冒泡。&lt;/p&gt;
 &lt;p&gt;我们把这个代码的执行范围再次放大，产品提了一个需求，要求监听页面上所有的点击情况，一个同学接到需求，开心的在document上用了事件代理，向服务端发送了数据，回头数据一统计，似乎少了什么。回头一看，有人在a标签的点击事件中用了halt。&lt;/p&gt;
 &lt;p&gt;其实这就是本文想传递的信息，大多数情况下，当你使用halt时，你其实真正需要的是e.preventDefault()，在你写通用的组件时候这个问题尤其突出。&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;h2&gt;相关文章&lt;/h2&gt; &lt;ul&gt;  &lt;li&gt;   &lt;a href="http://blog.jobbole.com/8524/"&gt;浏览器开发工具的25个秘密&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;a href="http://blog.jobbole.com/30091/"&gt;前端工程师的价值体现在哪里？&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;a href="http://blog.jobbole.com/29692/"&gt;页面构建和js前端不得不说的那点事儿&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;a href="http://blog.jobbole.com/28904/"&gt;使用 node.js 开发前端打包程序&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;a href="http://blog.jobbole.com/28088/"&gt;爱上朴实的CSS细节&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>IT技术 前端 浏览器</category>
      <guid isPermaLink="true">https://itindex.net/detail/40609-%E6%B5%8F%E8%A7%88%E5%99%A8-%E4%BA%8B%E4%BB%B6-%E6%80%9D%E8%80%83</guid>
      <pubDate>Wed, 14 Nov 2012 20:08:14 CST</pubDate>
    </item>
    <item>
      <title>Opera移动浏览器用户数目突破2.29亿</title>
      <link>https://itindex.net/detail/42041-opera-%E7%A7%BB%E5%8A%A8-%E6%B5%8F%E8%A7%88%E5%99%A8</link>
      <description>&lt;p&gt;当前在移动设备上使用Opera浏览器的用户数目越来越多，Opera今天宣布，  &lt;strong&gt;自2006年Opera 
Mini发布以来2012年12月成为用户数目增长最多的一个月。&lt;/strong&gt;按照Opera所说，上个月有超过2.08亿人使用Opera 
Mini浏览器访问互联网。Opera 
Mini是这家公司的重点产品，几乎在主流平台上都能找到此应用，包括iOS、Android、BlackBerry和先前的Windows 
Mobile等。&lt;/p&gt;
		 &lt;p&gt;  &lt;img alt="" border="0" src="http://rssdiy.com/?i=http://img.cnbeta.com/newsimg/130124/22101801892136201.jpg" width="570"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;br /&gt;
加上这家企业的另一款产品Opera Mobile，移动用户的总数达到了2.29亿，相较2012年的11月份，用户数目增加超过1300万。Opera Mobile目前仅在Android和Symbian平台上推出，是采用这家公司顶级web渲染引擎Opera Preto开发的浏览器产品。  &lt;br /&gt;
  &lt;br /&gt;
Opera Mini和Mobile的区别在于Mini采用了先进的网页服务器压缩技术，在用户接收到所访问的页面信息之前，Opera的服务器会首先对用户访问的页面进行压缩，随后再发至用户设备。虽说显示的网页质量可能没有原版那么好，但网页的加载速度会变快，并且还节约了用户的流量，这对移动设备的新兴市场来讲非常重要，尤其是网速不快、流量费用还很高的发展中国家。  &lt;br /&gt;
  &lt;br /&gt;
Opera实际上还是建议许多Android用户在稳定的Wi-Fi网络连接状态下使用Opera Mobile浏览器的，毕竟这样可还原真实的网页原型。  &lt;br /&gt;
  &lt;br /&gt;
  &lt;img alt="" border="0" src="http://rssdiy.com/?i=http://img.cnbeta.com/newsimg/130124/2210191642290343.jpg" width="570"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;br /&gt;
上面的数据来自去年12月份Opera的移动网页现状报告，报告中谈到Opera浏览器用户数目增长如此之快的重要原因之一是智能手机的越发普及，尤其是在亚洲和拉丁美洲地区，文章内容是这么说的：  &lt;br /&gt;
  &lt;br /&gt;
“我们看到越来越多的Opera Mini用户将他们的功能手机换成了智能手机。智能手机用户数目的增长在过去几年里非常迅速，Opera Mobile和Opera Mini的用户数目随之上升，Android和其他智能机设备的发展都非常好。虽说Opera Mini也有功能机版本，但现在32%的Opera移动用户都使用智能手机。”  &lt;br /&gt;
  &lt;br /&gt;
上个月，仅是Opera Mini服务器就向用户发出了1430个页面，压缩的数据量超过12PB。相比2011年同期，增幅达到了39%。不过Opera不只是对移动市场感兴趣，这家企业与许多国家不同运营商的合作，以及提供的各种流媒体、应用商店等服务都表现出Opera正在横向发展。  &lt;br /&gt;&lt;/p&gt;
		
		
		

		
		 &lt;div&gt;
		
		&lt;/div&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>Opera / 欧朋浏览器</category>
      <guid isPermaLink="true">https://itindex.net/detail/42041-opera-%E7%A7%BB%E5%8A%A8-%E6%B5%8F%E8%A7%88%E5%99%A8</guid>
      <pubDate>Thu, 24 Jan 2013 22:10:17 CST</pubDate>
    </item>
    <item>
      <title>研究：专家用户比一般用户更容易忽略浏览器安全警告</title>
      <link>https://itindex.net/detail/44869-%E7%A0%94%E7%A9%B6-%E4%B8%93%E5%AE%B6-%E7%94%A8%E6%88%B7</link>
      <description>&lt;p&gt;根据最新的安全研究报告指出，当前Web浏览器所显示的安全警告信息，在阻止危险网络行为的效率上，比起过去认为的还有效。&lt;/p&gt;
 &lt;p&gt;该调查研究主要在进行使用者对Mozilla Firefox与Google Chrome浏览器，在网络钓鱼、恶意程序攻击与无效SSL凭证之安全警告上的回应状况。&lt;/p&gt;
 &lt;p&gt;基于2002年到2009年之间的许多研究，普遍皆认为大部分使用者多半会忽略安全警告。不论如何，过去4年来，浏览器的安全警告已经重新设计，但全新设计对使用者的影响到底如何的研究却尚未进行过。&lt;/p&gt;
 &lt;p&gt;就以过去会用来警告可能钓鱼攻击风险的工具栏来说，如今已然被一整页的警告所取代，其对使用者的浏览行为势必会造成影响，执行该研究报告的研究人员表示。&lt;/p&gt;
 &lt;p&gt;在5月与6月间，已经分析过超过2,500万Chrome及Firefox的安全警告。该资料已被Mozilla与Google所进行的遥测计划所搜集，进行研究人员所谓「匿名资料」的搜集工作。&lt;/p&gt;
 &lt;p&gt;在上述两个浏览器的专案中，不到25%的使用者会对恶意程序与网络钓鱼的安全警告不予理会，同时只有1/3的使用者会通过Firefox的SSL安全警告来浏览网页。&lt;/p&gt;
 &lt;p&gt;该分析同时揭露了另一个有趣的现象，亦即愈具备电脑知识专业的使用者，反而愈会有意避开安全警告。研究人员认为，这些具备技术底子的用户，多半是使用Linux与Beta版浏览器的人。&lt;/p&gt;
 &lt;p&gt;via：  &lt;a href="http://www.pcworld.com/article/2044076/alert-study-finds-internet-users-heed-browser-warnings.html" rel="nofollow" target="_blank"&gt;PCWrold&lt;/a&gt;&lt;/p&gt;

 &lt;p&gt;This article addresses:  &lt;a href="http://www.iefans.net/yanjiu-zhuanjia-yonghu-hulue-anquan-jinggao/"&gt;http://www.iefans.net/yanjiu-zhuanjia-yonghu-hulue-anquan-jinggao/&lt;/a&gt;&lt;/p&gt;Here is no comments yet by the time  your rss reader get this, Do you want to be the first commentor? Hurry up &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>浏览器相关 安全 用户 警告</category>
      <guid isPermaLink="true">https://itindex.net/detail/44869-%E7%A0%94%E7%A9%B6-%E4%B8%93%E5%AE%B6-%E7%94%A8%E6%88%B7</guid>
      <pubDate>Mon, 15 Jul 2013 22:38:50 CST</pubDate>
    </item>
    <item>
      <title>Vendor Prefix:为什么需要浏览器引擎前缀</title>
      <link>https://itindex.net/detail/49385-vendor-prefix-%E9%9C%80%E8%A6%81</link>
      <description>&lt;h2&gt;浏览器引擎前缀(Vendor Prefix)是什么？&lt;/h2&gt;
 &lt;p&gt;Vendor prefix—浏览器引擎前缀，是一些放在CSS属性前的小字符串，用来确保这种属性只在特定的浏览器渲染引擎下才能识别和生效。谷歌浏览器和Safari浏览器使用的是WebKit渲染引擎，火狐浏览器使用的是Gecko引擎，Internet Explorer使用的是Trident引擎，Opera以前使用Presto引擎，后改为WebKit引擎。一种浏览器引擎里一般不实现其它引擎前缀标识的CSS属性，但由于以WebKit为引擎的移动浏览器相当流行，火狐等浏览器在其移动版里也实现了部分WebKit引擎前缀的CSS属性。&lt;/p&gt;
 &lt;h2&gt;浏览器引擎前缀(Vendor Prefix)有哪些？&lt;/h2&gt;
 &lt;pre&gt;  &lt;code&gt;-moz-     /* 火狐等使用Mozilla浏览器引擎的浏览器 */
-webkit-  /* Safari, 谷歌浏览器等使用Webkit引擎的浏览器 */
-o-       /* Opera浏览器(早期) */
-ms-      /* Internet Explorer (不一定) */ &lt;/code&gt;&lt;/pre&gt;
 &lt;h2&gt;为什么需要浏览器引擎前缀(Vendor Prefix)？&lt;/h2&gt;
 &lt;p&gt;这些浏览器引擎前缀(Vendor Prefix)主要是各种浏览器用来试验或测试新出现的CSS3属性特征。可以总结为以下3点：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;试验一些还未成为标准的的CSS属性——也许永远不会成为标准&lt;/li&gt;
  &lt;li&gt;对新出现的标准的CSS3属性特征做实验性的实现&lt;/li&gt;
  &lt;li&gt;对CSS3中一些新属性做等效语义的个性实现&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;这些前缀并非所有都是需要的，但通常你加上这些前缀不会有任何害处——只要记住一条，把不带前缀的版本放到最后一行：&lt;/p&gt;
 &lt;pre&gt;  &lt;code&gt;-moz-border-radius: 10px; 
-webkit-border-radius: 10px; 
-o-border-radius: 10px; 
   &lt;strong&gt;border-radius: 10px; &lt;/strong&gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;有些新的CSS3属性已经试验了很久，一些浏览器已经对这些属性不再使用前缀。  &lt;code&gt;Border-radius&lt;/code&gt;属性就是一个非常典型的例子。最新版的浏览器都支持不带前缀的  &lt;code&gt;Border-radius&lt;/code&gt;属性写法。&lt;/p&gt;
 &lt;h2&gt;需要使用Vendor Prefixes的CSS3属性&lt;/h2&gt;
 &lt;p&gt;主要的需要添加浏览器引擎前缀(vendor-prefix)的属性包括：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;@keyframes&lt;/li&gt;
  &lt;li&gt;移动和变换属性(transition-property, transition-duration, transition-timing-function, transition-delay)&lt;/li&gt;
  &lt;li&gt;动画属性 (animation-name, animation-duration, animation-timing-function, animation-delay)&lt;/li&gt;
  &lt;li&gt;border-radius&lt;/li&gt;
  &lt;li&gt;box-shadow&lt;/li&gt;
  &lt;li&gt;backface-visibility&lt;/li&gt;
  &lt;li&gt;column属性&lt;/li&gt;
  &lt;li&gt;flex属性&lt;/li&gt;
  &lt;li&gt;perspective属性&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;完整的列表不只这些，而且还会增加。&lt;/p&gt;
 &lt;h2&gt;浏览器引擎前缀(vendor-prefix)的用法&lt;/h2&gt;
 &lt;p&gt;当需要使用浏览器引擎前缀(vendor-prefix)时，最好是把带有各种前缀的写法放在前面，然后把不带前缀的标准的写法放到最后。比如：&lt;/p&gt;
 &lt;pre&gt;/* 简单属性 */
.myClass {
	-webkit-animation-name: fadeIn;
	-moz-animation-name: fadeIn;
	-o-animation-name: fadeIn;
	-ms-animation-name: fadeIn;
	animation-name: fadeIn;  /* 不带前缀的放到最后 */
}
/* 复杂属性 keyframes */
@-webkit-keyframes fadeIn {
	0% { opacity: 0; } 100% { opacity: 0; }
}
@-moz-keyframes fadeIn {
	0% { opacity: 0; } 100% { opacity: 0; }
}
@-o-keyframes fadeIn {
	0% { opacity: 0; } 100% { opacity: 0; }
}
@-ms-keyframes fadeIn {
	0% { opacity: 0; } 100% { opacity: 0; }
}
/* 不带前缀的放到最后 */
@keyframes fadeIn {
	0% { opacity: 0; } 100% { opacity: 0; }
}&lt;/pre&gt;
 &lt;h3&gt;Internet Explorer&lt;/h3&gt;
 &lt;p&gt;Internet Explorer 9 开始支持很多(但并不是全部)CSS3里的新属性。比如，你也可以在IE里使用不带浏览器引擎前缀(vendor-prefix)的  &lt;strong&gt;border-radius&lt;/strong&gt;属性。&lt;/p&gt;
 &lt;p&gt;IE6到IE8都不支持CSS3，很遗憾的是，使用这些低版本浏览器的用户还很多。所以，确保你的网站设计在不支持CSS3的情况下也能正常显示。对于一些属性：  &lt;code&gt;border-radius&lt;/code&gt; ,   &lt;code&gt;linear-gradient&lt;/code&gt;, 和   &lt;code&gt;box-shadow&lt;/code&gt;, 你可以使用  &lt;a href="http://css3pie.com"&gt;CSS3Pie&lt;/a&gt;，它是一个很小的文件，把它放到你的网站的根目录下，就能让你的页面中IE6，IE8中也支持这些属性。&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>技术技巧 css3 Vendor Prefix 浏览器前缀 浏览器引擎前缀</category>
      <guid isPermaLink="true">https://itindex.net/detail/49385-vendor-prefix-%E9%9C%80%E8%A6%81</guid>
      <pubDate>Wed, 30 Apr 2014 10:54:49 CST</pubDate>
    </item>
    <item>
      <title>HTML5标准制定完成：浏览器大战能消停吗？</title>
      <link>https://itindex.net/detail/52254-html5-%E6%A0%87%E5%87%86-%E6%B5%8F%E8%A7%88%E5%99%A8</link>
      <description>&lt;p&gt;昨天，万维网联盟(W3C)宣布，经过将近8年的艰辛努力，HTML5标准规范终于最终制定完成并已公开发布。&lt;/p&gt;
 &lt;p&gt;狭义上，HTML5是HTML的第五个版本。HTML的全称是超文本标记语言（HyperText Markup Language），由万维网的发明者蒂姆·伯纳斯·李设计，是为创建网页而设计的一种标记语言。HTML利用标签来描述内容的语义，使计算机能够通过识别标签来正确处理内容。&lt;/p&gt;
 &lt;p&gt;广义上，HTML5是HTML5、CSS3、Javascript 2.0的统称，因为对于现在的互联网开发而言，这三者是密不可分的。HTML用于描述内容，CSS用于定义样式，Javascript用于实现功能。&lt;/p&gt;
 &lt;p&gt;HTML是互联网的基石，目前互联网上所有的网页都是用HTML写成的。但是HTML标准的演化速度却远远跟不上互联网的发展。事实上，上一个HTML标准HTML 4.01发布于1999年12月24日，已经严重阻碍了互联网的发展。&lt;/p&gt;
 &lt;p&gt;2004年，由Firefox、Opera、Apple、Google四大浏览器厂商组成的网页超文本技术工作小组(Web Hypertext Application Technology Working Group)，即WHATWG，宣布制定下一代HTML标准，即HTML5。而当时的万维网联盟(W3C)正在发展在XML和HTML基础上设计的XHTML。&lt;/p&gt;
 &lt;p&gt;于是，W3C和浏览器厂商的第一次大战开始。互联网的未来究竟是由标准组织W3C决定还是由浏览器厂商决定？这场大战的决定性因素在于开发者们站在哪一边。结果很明显，开发者们当然会站在浏览器那边，毕竟浏览器是普通用户接触互联网的唯一途径。W3C于2007年接纳了WHATWG的HTML5草案，并成立了新的HTML工作团队。&lt;/p&gt;
 &lt;p&gt;然而，在2012年，W3C和WHATWG再度分道扬镳。而两者的分歧在于WHATWG 集中于演进“living”标准，而 W3C 坚持使用传统的数字编号系统定义静态的“snapshots”。 WHATWG希望构建互联网的最后一个标准，即一个随着互联网发展不断更新的HTML5标准。他们认为W3C的HTML5标准一旦制定完成，即便出现错误也无法修正。而且他们认为W3C的标准制定模式太过复杂，每一代标准的制定时间过长，不符合互联网的发展速度。&lt;/p&gt;
 &lt;p&gt;所以，HTML5现在有两个标准，一个由W3C制定，一个由WHATWG制定。这会导致W3C和浏览器厂商的第二次大战吗？&lt;/p&gt;
 &lt;p&gt;当然不会，对于浏览器厂商来说，赢得浏览器之战比HTML5标准更重要。自从Google的Chrome重新掀起浏览器间的大战之后，每一家浏览器都在根据自己的情况支持HTML5标准，每一家浏览器的广告都在吹嘘自己对HTML5标准的支持。&lt;/p&gt;
 &lt;p&gt;所以，HTML5的标准已经成为了既成事实，W3C的HTML5标准只是对这个既成事实的官方认证而已。&lt;/p&gt;
 &lt;p&gt;那么，既然有了HTML5的官方标准，浏览器大战总该消停了吧。事实上，这场大战依然在延续，而开发者们依然需要为各大浏览器适配网页。&lt;/p&gt;
 &lt;p&gt;举例来说，HTML5标准设计了&amp;lt;video&amp;gt;标签，使得浏览器可以不借助Flash直接播放视频文件。但是，HTML5标准却没有规定浏览器支持的视频文件格式。现在，Firefox主推Ogg，Chrome主推WebM，Safari主推H.264。也就是说，开发者如果要使用&amp;lt;video&amp;gt;标签，需要准备多种格式的视频文件。好消息是现在似乎H.264占据了上风。&lt;/p&gt;
 &lt;p&gt;一次编写，到处运行(Write once, Run anywhere)是每一个程序员的梦想。当年的Java没有做到，原本程序员们指望Web标准能够做到。然而事实上是，只要浏览器大战没有消停，HTML5也做不到。&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>业界观察 html5 浏览器</category>
      <guid isPermaLink="true">https://itindex.net/detail/52254-html5-%E6%A0%87%E5%87%86-%E6%B5%8F%E8%A7%88%E5%99%A8</guid>
      <pubDate>Thu, 30 Oct 2014 17:54:40 CST</pubDate>
    </item>
    <item>
      <title>Web客户端安全性最佳实践</title>
      <link>https://itindex.net/detail/47496-web-%E5%AE%A2%E6%88%B7%E7%AB%AF-%E5%AE%89%E5%85%A8</link>
      <description>&lt;p&gt;得益于HTML5，Web应用中越来越多的逻辑从服务器端迁移到了客户端。因而，前端开发人员也需要更多关注安全性方面的问题。在这篇文章中，我会告诉你如何使你的应用更加安全。我会着重描述一些你可能从未听说过的技术，而不是仅仅告诉你“别忘了对用户提交的页面数据做转义（escape）”。&lt;/p&gt;
 &lt;h2&gt;HTTP？想都别想&lt;/h2&gt;
 &lt;p&gt;当然，我并不想让你通过FTP或者普通的TCP协议来传输你的数据。我的意思是，如果你想让你的用户安全地访问你的网站，你应该使用SSL（HTTPS）来加密你的数据传输。不仅要加密登陆节点或者关键信息，而是要加密所有的数据。否则当用户通过公用网络访问你的应用时，他看见的内容说不定已经被别人“黑”掉了。这就叫中间人攻击，见下图：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="main-in-the-middle" src="http://jbcdn2.b0.upaiyun.com/2014/01/636b845305de7dd19eeb073445ea087d.png"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;strong&gt; (译者注：此处引用的原图中笔误，中间人攻击的英文为Man-In-The-Middle Attack)&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;如果你使用SSL，所有的数据在发送之前就会被加密，即使攻击者在网络中截获了数据包，他也没有办法查看或者篡改其中的内容。对于提升应用的安全性，这是目前为止最重要的一步。&lt;/p&gt;
 &lt;h2&gt;严格传输安全性标记（Strict-Transport-Security）&lt;/h2&gt;
 &lt;p&gt;如果你只想通过SSL来传输你的数据，那么这个HTTP头属性会让你觉得非常好用。如果服务器端在响应头中使用了这个标记（你也可以在页面中使用  &lt;strong&gt;&amp;lt;meta&amp;gt;&lt;/strong&gt;标签，不过这样的话就会存在一个未被加密的请求），那么所有从客户端到服务器端的数据都会被加密。使用方式如下：&lt;/p&gt;
 &lt;pre&gt;Strict-Transport-Security: max-age=3600; includeSubDomains&lt;/pre&gt;
 &lt;p&gt;其中的  &lt;strong&gt;includeSubDomains&lt;/strong&gt;属性是可选的，你可以使用它来加密当前域的子域，所有对子域的访问也会被HTTPS加密。而其中的  &lt;strong&gt;max-age&lt;/strong&gt;属性可以设置在多长的时间范围内（以秒为单位）需要用SSL对页面数据传输进行加密。不过可惜的是，目前只有Firefox、Chrome和Opera浏览器支持这个标记。&lt;/p&gt;
 &lt;h2&gt;Secure和HttpOnly属性&lt;/h2&gt;
 &lt;p&gt;还有一种方法可以有效增强HTTP和HTTPS访问的安全性，那就是使用  &lt;strong&gt;Secure&lt;/strong&gt;和  &lt;strong&gt;HttpOnly&lt;/strong&gt;这两个cookie属性。前者能确保cookie的内容只通过SSL连接进行传输；而后者正好相反。如果你觉得这两者互相矛盾，没啥用处，那就错了。它们告诉浏览器cookie的内容只能分别通过HTTP(S)协议进行访问，从而避免了被别人轻易窃取，比如JavaScript中的document.cookie.&lt;/p&gt;
 &lt;h2&gt;通过Content-Security-Policy(CSP)标记来减少跨站脚本攻击（XSS）的危害&lt;/h2&gt;
 &lt;p&gt;如果你觉得依靠XSS过滤器能够防范所有可能的XSS攻击，不妨先看一看  &lt;a href="https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet" title="how many ways there are to perform these attacks"&gt;这篇&lt;/a&gt;文章，再好好思考一下。当然，为整个Web应用都配置上完备的防范措施也会存在一些问题，比如，可能拖累整个网站的性能。不过我还有一招。&lt;/p&gt;
 &lt;p&gt;这招叫做Content-Security-Policy标记。它能让你指定网站上所有脚本和图片等资源的源站点。此外，它还能阻止所有内联（inline）的脚本和样式。即使有人在页面评论或者回帖中嵌入了脚本标签，这些脚本代码也不会被执行。CSP标记一般写在HTTP头中（也可以写在HTML的  &lt;strong&gt;&amp;lt;meta&amp;gt;&lt;/strong&gt;标签中），写法如下：&lt;/p&gt;
 &lt;pre&gt;Content-Security-Policy: policy&lt;/pre&gt;
 &lt;p&gt;其中的policy字段代表一系列CSP属性，下面列举一些常用的属性：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;script-src&lt;/strong&gt; – 设置可以接受的JavaScript代码的源站点&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;style-src&lt;/strong&gt; – 设置可以接受的CSS样式代码的源站点&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;connect-src&lt;/strong&gt; – 定义浏览器可以通过XHR、WebSocket或者EventSource访问哪些站点&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;font-src&lt;/strong&gt; – 设置可以接受的字体文件的源站点&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;frame-src&lt;/strong&gt; – 定义浏览器可以通过iframe访问哪些站点&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;img-src&lt;/strong&gt; – 设置可以接受的图片的源站点&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;media-src&lt;/strong&gt; – 设置可以接受的音频和视频文件的源站点&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;object-src&lt;/strong&gt; – 设置可以接受的Flash和其它插件的源站点&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;如果没有设置上述属性，那么浏览器默认会接受来自任何源站点的脚本和数据。不过浏览器的默认属性也能通过  &lt;strong&gt;default-src&lt;/strong&gt;属性来设置。其它的属性如果没有设置的话，就会默认采用这个属性中设置的值。此外，还有一个叫做  &lt;strong&gt;sandbox&lt;/strong&gt;的属性，它可以让浏览器以iframe的形式加载页面。下面是一个CSP头的例子：&lt;/p&gt;
 &lt;pre&gt;Content-Security-Policy: default-src: &amp;apos;self&amp;apos;; script-src: https://apis.google.com;&lt;/pre&gt;
 &lt;p&gt;在这个例子中，浏览器只会加载源自这个Web应用所在站点的资源（默认源设置为self），以及通过Google API服务器获取的脚本。CSP有很多种灵活的用法，如果使用得当，可以有效提升Web应用的安全性。&lt;/p&gt;
 &lt;h3&gt;CSP的缺点&lt;/h3&gt;
 &lt;p&gt;当你使用CSP的时候，有一点千万要记住：默认情况下，所有的内联JavaScript脚本都不会被执行。例如：&lt;/p&gt;
 &lt;p&gt;内联的事件监听器：比如&lt;/p&gt;
 &lt;pre&gt;&amp;lt;body onload=&amp;quot;main();&amp;quot;&amp;gt;&lt;/pre&gt;
 &lt;p&gt;所有的javascript URL：比如&lt;/p&gt;
 &lt;pre&gt;&amp;lt;a href=&amp;quot;javascript:doTheClick()&amp;quot;&amp;gt;&lt;/pre&gt;
 &lt;p&gt;之所以这样，是因为浏览器无法区分你的内联脚本和黑客注入的脚本。你需要通过JavaScript的  &lt;strong&gt;   &lt;em&gt;    &lt;code&gt;addEventListener&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt;或者一些框架中类似的函数来重写上述脚本。某种程度上来看，这也不算一件坏事，它逼你不得不分离逻辑层的代码和展现层的代码，而你本来就应该这么做。此外，CSP默认还会阻止所有eval()风格的代码的执行，包括  &lt;em&gt;   &lt;strong&gt;    &lt;code&gt;setInterval/setTimeout&lt;/code&gt;&lt;/strong&gt;&lt;/em&gt;中的字符串和类似于  &lt;em&gt;   &lt;strong&gt;    &lt;code&gt;new Function(‘return false’)&lt;/code&gt;&lt;/strong&gt;&lt;/em&gt;之类的代码。&lt;/p&gt;
 &lt;h3&gt;CSP的可用性&lt;/h3&gt;
 &lt;p&gt;大部分时下流行的浏览器都支持CSP。Firefox、Chrome和Opera（包括手持设备上的）使用标准的CSP头。Safari（包括iOS中的）和安卓上的Chrome使用  &lt;strong&gt;X-WebKit-CSP&lt;/strong&gt;头。IE10（仅支持sandbox属性）使用  &lt;strong&gt;X-Content-Security-Policy&lt;/strong&gt;头。所以，由于IE的支持（部分支持也是支持），你不仅可以着手使用CSP（除非你用的是Google Chrome Frame之类的东西），而且还能在各种实际的浏览器中运行，有效地改善Web应用的安全性。&lt;/p&gt;
 &lt;h2&gt;使用跨域资源共享（Cross Origin Resource Sharing）来代替JSONP&lt;/h2&gt;
 &lt;p&gt;目前由于浏览器同源策略的限制，JSONP常被用于从其它服务器上获取数据。通常的办法是在脚本中写一个回调函数，然后把回调函数的名字写在请求的URL中，像下面这样：&lt;/p&gt;
 &lt;pre&gt;function parseData(data) {
   ...
}&lt;/pre&gt;
 &lt;pre&gt;&amp;lt;script src=&amp;quot;http://someserver.com/data?format=jsonp&amp;amp;callback=parseData&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;
 &lt;p&gt;但是这样做会有很大的安全隐患。如果你请求数据的服务器被黑了，那么黑客就能在返回的数据中植入恶意代码，进而窃取用户的隐私信息。因为在浏览器看来，通过这种方法获取的脚本代码和正常的页面代码没什么区别。&lt;/p&gt;
 &lt;p&gt;正确的做法是使用跨域资源共享。它允许资源提供方在响应头中加入一个特殊的标记，使你能通过XHR来获取、解析并验证数据。这样就能避免恶意代码在你的应用中执行。&lt;/p&gt;
 &lt;p&gt;这个方法需要在响应头中加入的标记如下：&lt;/p&gt;
 &lt;pre&gt;Access-Control-Allow-Origin: allowed origins&lt;/pre&gt;
 &lt;p&gt;这里可以列举一些可以接受的数据源，以逗号隔开，使用通配符*来接受所有的数据源。&lt;/p&gt;
 &lt;h3&gt;CORS可用性&lt;/h3&gt;
 &lt;p&gt;目前所有主流的浏览器都支持，除了Opera Mini。&lt;/p&gt;
 &lt;p&gt;当然，更重要的是数据提供方能支持跨域资源共享，不过这就不是开发者能说了算的了。&lt;/p&gt;
 &lt;h2&gt;在iframe中使用sandbox属性&lt;/h2&gt;
 &lt;p&gt;如果你使用iframe加载外部网站的内容，也别忘了它的安全问题。你可以通过iframe的  &lt;strong&gt;sandbox&lt;/strong&gt;属性来增强iframe使用的安全性。通过设置sandbox属性，可以使得iframe无法随意跳转页面，无法执行外部脚本，无法锁定鼠标，无法弹出新窗口，无法提交表单，等等。此外页面上若干个iframe中加载的所有内容还必须来自唯一的源，也就不能使用  &lt;strong&gt;localStorage&lt;/strong&gt;等有悖于同源策略的东西。当然，如果有需要的话，你也可以通过显式的设置来放宽限制，可以设置的属性如下：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;allow-same-origin&lt;/strong&gt; –iframe只要各自符合同源规范即可&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;allow-scripts&lt;/strong&gt; –iframe中可以执行JavaScript脚本&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;allow-forms&lt;/strong&gt; –iframe中可以提交表单&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;allow-pointer-lock&lt;/strong&gt; –iframe中可以锁定鼠标&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;allow-popups&lt;/strong&gt; – iframe中可以弹出新窗口&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;allow-top-navigation&lt;/strong&gt; – iframe中可以完成页面跳转&lt;/li&gt;
&lt;/ul&gt;
 &lt;h3&gt;可用性&lt;/h3&gt;
 &lt;p&gt;目前iframe的  &lt;strong&gt;sandbox&lt;/strong&gt;属性受各种主流浏览器支持，除了Opera Mini以外。&lt;/p&gt;
 &lt;h2&gt;结束语&lt;/h2&gt;
 &lt;p&gt;主要内容就是这些了。希望读者能通过这篇文章学到一些新技术，能用于今后的项目中，更好的提升Web应用的安全性。得益于HTML5的发展，我们可以在Web上实现越来越丰富的功能。但是我们也不能掉以轻心，因为网络中攻击和威胁无处不在，在敲第一行代码之前就要好好想一想安全性方面的问题。&lt;/p&gt;
 &lt;div&gt;
  &lt;div&gt;
   &lt;h3&gt;相关文章&lt;/h3&gt;
   &lt;ul&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/26064/"&gt;几种极其隐蔽的XSS注入的防护&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/36154/"&gt;你的隐私安全吗：Cookie到底是什么？&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/16670/"&gt;Chromium团队的安全开发核心准则&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/50826/"&gt;如何在浏览器端加密&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/38638/"&gt;Web前端浏览器兼容初探&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/46722/"&gt;浏览器的重绘与重排&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/12749/"&gt;现代浏览器的工作原理&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/44903/"&gt;两个viewport的故事（第二部分）&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/25826/"&gt;IE 浏览器的创新&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/30385/"&gt;浏览器事件的思考&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;p&gt;  &lt;a href="http://blog.jobbole.com/54782/"&gt;Web客户端安全性最佳实践&lt;/a&gt;，首发于  &lt;a href="http://blog.jobbole.com"&gt;博客 - 伯乐在线&lt;/a&gt;。&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>IT技术 互联网 安全 最佳实践 浏览器</category>
      <guid isPermaLink="true">https://itindex.net/detail/47496-web-%E5%AE%A2%E6%88%B7%E7%AB%AF-%E5%AE%89%E5%85%A8</guid>
      <pubDate>Fri, 10 Jan 2014 00:35:16 CST</pubDate>
    </item>
    <item>
      <title>一个数据包的互联网漫游记</title>
      <link>https://itindex.net/detail/48685-%E6%95%B0%E6%8D%AE%E5%8C%85-%E4%BA%92%E8%81%94%E7%BD%91-%E6%BC%AB%E6%B8%B8</link>
      <description>&lt;p&gt;  &lt;a href="http://www.geekfan.net/wp-content/uploads/c3581516868fb3b71746931cac66390e.jpg" rel="lightbox[7773]" title="&amp;#19968;&amp;#20010;&amp;#25968;&amp;#25454;&amp;#21253;&amp;#30340;&amp;#20114;&amp;#32852;&amp;#32593;&amp;#28459;&amp;#28216;&amp;#35760;"&gt;   &lt;img alt="internet" height="480" src="http://www.geekfan.net/wp-content/uploads/c3581516868fb3b71746931cac66390e.jpg" width="580"&gt;&lt;/img&gt;&lt;/a&gt; 尽管大多数最终用户都不关心Internet是如何工作的，但是我相信你们当中的仍然会有一些人对Internet运转的基本原理非常感兴趣。&lt;/p&gt;
 &lt;p&gt;在这篇文章中，我们会通过阐释一个数据包从源到目的地的征程，来试着拨开互联网的第一层神秘面纱。由此出发，我们会尽量让本文的内容保持简单基础。&lt;/p&gt;
 &lt;p&gt;在更进一步之前，让我们先快速简要地理解一下DHCP和DNS的概念。&lt;/p&gt;
 &lt;h1&gt;DHCP&lt;/h1&gt;
 &lt;p&gt;你有没有想过你的计算机是如何获取IP地址的？嗯……首先你必须知道计算机获取IP地址是有两种途径的，一种是静态方式，另一种是动态方式。&lt;/p&gt;
 &lt;p&gt;静态方式就是由管理员在机器上手动设置IP地址。如果你的计算机连接在局域网或者类似的网络上的话，需要注意的是你所设置的IP地址不能和网络上任何其他机器的IP地址相同，因为那样会引起IP地址冲突，两台机器就都不能连接到Internet了。&lt;/p&gt;
 &lt;p&gt;动态方式就是计算机（在系统启动的时候）请求一台服务器来为它分配一个IP地址。这一过程使用的协议称为动态主机配置协议（DHCP）。这里提到的服务器就是DHCP服务器，这台服务器负责为网络上所有的计算机分配IP地址。此时由DHCP来保证没有IP地址冲突。如果一台机器关闭继而重启，那么一条刷新DHCP的请求就发送到DHCP服务器上，这一次可能会分配给它一台与原来相同或者不同的IP地址。通常DHCP服务器会得到一个IP地址池，DHCP服务器只能分配该地址池内的地址。这么做是为了保证将其他IP地址作为静态地址的时候不会引起任何冲突。&lt;/p&gt;
 &lt;h1&gt;DNS&lt;/h1&gt;
 &lt;p&gt;我们大多数人都使用过google.com进行搜索，不过你有没有想过为什么在浏览器里面输入google.com就能连接到Google的服务器呢？嗯……要理解这件事情，我们需要理解域名服务器（DNS）的概念。&lt;/p&gt;
 &lt;p&gt;就如同现实生活中人们通过名字互相区分一样，在计算机网络的世界里，不同的计算机之间通过指派给它们的IP地址来互相区分。IP地址有两种类型：公有和私有。通常服务器使用公有地址，这是因为他们要被全世界数以百万计的计算机访问。至于你那连接在路由器上的个人电脑，它通常获取到的是私有IP。由于公有地址的数量是有限的，所以现在搭设局域网（在一个有着公有IP的路由下搭建）然后使用私有地址开始变得流行并且非常成功。&lt;/p&gt;
 &lt;p&gt;记忆IP地址这样的任务对于大多数人来说有些困难，于是每个服务器都还有一个名字（比如google.com）。这样最终用户只需要记住这个名字，在浏览器中输入它，然后敲回车就可以了。现在让我来看看当用户在浏览器中输入名字并敲回车之后究竟发生了什么。首先，需要把域名转换成对应的IP。要完成这项任务，需要给默认网关（大多数情况下就是路由器）发送一条与DNS请求。路由都会配置一个DNS服务器地址，这个地址便是DNS请求的目的地。&lt;/p&gt;
 &lt;p&gt;DNS服务器用来将域名转换成IP地址。当DNS服务器收到一条请求后，它会检查它有没有该请求需要的转换信息。如果没有这条转换信息，那么DNS服务器会把这条请求转发给其他的DNS服务器。通过这种方式，就完成了从域名到IP地址的转换。转换结果随后会发回到发出请求的计算机。&lt;/p&gt;
 &lt;h1&gt;DNS之后又发生了些些什么？&lt;/h1&gt;
 &lt;p&gt;要理解下面的解释，你应该对TCP/IP协议族有一定的了解。当然啦，我们会尽量保持解释的简单性。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;一旦通过DNS得到了目标IP地址，应用层就会准备好一条HTTP GET请求。随后这条请求会前进到传输层。&lt;/li&gt;
  &lt;li&gt;这一层有两个主要的协议——TCP和UDP。正是在这一层，该请求被封装为了传输层数据包。如果用的是TCP协议，还要保证包的大小不能超过源和目的地之间MTU（最大传输单元）的最小值。这样做的目的是避免数据包在传输过程中分片（fragmentation）。另一方面，如果用的UDP的话，就不用顾虑这么多了，当然了这种情况下，包就有可能分片了。&lt;/li&gt;
  &lt;li&gt;一旦传输层的包封好了，接着它就会被推到IP层。这一层会增加源和目的地的IP地址以及一些其他有用的信息，诸如TTL（time to live生存期）、分段信息等等。所有的这些信息在数据包抵达目的地的路途中都是有用的。&lt;/li&gt;
  &lt;li&gt;当数据包进入到数据链路层之后，与MAC地址相关的信息就会加诸其上，随后数据包就会被推送到物理层。这样一串“0”和“1”就会从你的网卡里发送到物理媒介中去。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;如果数据包的目的地没有直接连接在源计算机上，那么根据源计算机上存储的路由信息，数据包就会传送到最近的网络节点上去。网络中有各种不同的节点，比如路由、网桥、网关等等。每一种都有重要的作用，例如路由用来传送IP包，网桥用来连接不同协议的异构网络。&lt;/p&gt;
 &lt;p&gt;如果我们考虑一个简单的网络的话，路由就是将数据包从源送到目的地的最主要的角色。数据包离开源计算机后，与其相连的路由（数据要先发送到这里）的MAC地址就这个包的目的MAC地址。&lt;/p&gt;
 &lt;p&gt;数据包到达该路由之后，路由就会做下面几件事情：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;减记TTL值，重新计算数据包的校验和。&lt;/li&gt;
  &lt;li&gt;搜索其路由表，以检查其中有没有数据包的目的IP所对应的主机。如果有的，路由就将该包发到相应的主机。&lt;/li&gt;
  &lt;li&gt;如果没有这样的一条路由，就从路由表中搜索源于该目的IP的网络的地址。如果有的话就将该包发送到这个特定的网络。&lt;/li&gt;
  &lt;li&gt;如果上面的两次搜索都失败的话，该数据包就被发送到路由表中指定的默认路由。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;上面的所有情况中，不论数据包是在路由之间传送还是从路由传送到目的地，目的MAC地址都会变成最近的路由或者目的地的MAC地址。通过这种方式，目的IP地址保持不变，而目的MAC地址不断从一个路由变为另一个。就是这样，数据包从一台路由到下一台路由，直到它抵达终点。&lt;/p&gt;
 &lt;p&gt;啊哈，千难万险之后我们的HTTP GET请求终于到达目的地啦：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;数据包首先抵达物理层，该层向CPU发送一个IRQ来告诉CPU有数据到了，需要处理。&lt;/li&gt;
  &lt;li&gt;当数据被送到数据链路层后，就会检查它的MAC地址来确认该数据包确实发到这台计算机的。&lt;/li&gt;
  &lt;li&gt;如果上述检查通过的话，数据包就会传到IP层。在这里会检查数据包的IP地址以及其校验和，随后将其传送到相应的传输层。&lt;/li&gt;
  &lt;li&gt;这些都完成了之后，该信息（在我们的例子里是HTTP GET请求）就会根据端口的值被送到监听该端口的应用中去。&lt;/li&gt;
  &lt;li&gt;我们的请求就是这样送抵Google的网络服务器的。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;之后，相应的响应会以与上述相同的方式传送回来。&lt;/p&gt;
 &lt;p&gt;现在你都了解了，这就是数据包在Internet上从源到目的地的旅程。  &lt;br /&gt;
&lt;/p&gt;

 &lt;div&gt;  &lt;div&gt;   &lt;h3&gt;相关文章&lt;/h3&gt;   &lt;ul&gt;    &lt;li&gt;     &lt;a href="http://www.geekfan.net/4462/"&gt;教你找出那个拖慢浏览器速度的扩展&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="http://www.geekfan.net/5827/"&gt;如何解决无线路由器的故障问题&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="http://www.geekfan.net/3669/"&gt;长草的路由器和水泥U盘&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="http://www.geekfan.net/4410/"&gt;网站是如何跟踪监视你的&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="http://www.geekfan.net/7441/"&gt;玩转路由器，交叉编译Python 3.3&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="http://www.geekfan.net/7737/"&gt;为什么iPhone和iPad上的第三方浏览器总感觉不如Safari&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="http://www.geekfan.net/6301/"&gt;谷歌笔记本（Chromebook）—— 好用？无用？&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="http://www.geekfan.net/6323/"&gt;智能首饰：再也不怕一个人走夜路&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="http://www.geekfan.net/5558/"&gt;如何在Linux下统计高速网络中的流量&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="http://www.geekfan.net/5254/"&gt;谷歌如何捕获街景中的门牌号码&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;
 &lt;p&gt;  &lt;a href="http://www.geekfan.net/7773/"&gt;一个数据包的互联网漫游记&lt;/a&gt;，首发于  &lt;a href="http://www.geekfan.net"&gt;极客范 - GeekFan.net&lt;/a&gt;。&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>互联网 科技资讯 浏览器 路由器</category>
      <guid isPermaLink="true">https://itindex.net/detail/48685-%E6%95%B0%E6%8D%AE%E5%8C%85-%E4%BA%92%E8%81%94%E7%BD%91-%E6%BC%AB%E6%B8%B8</guid>
      <pubDate>Sat, 22 Mar 2014 01:11:13 CST</pubDate>
    </item>
    <item>
      <title>防止表单重复提交的几种策略</title>
      <link>https://itindex.net/detail/46461-%E7%AD%96%E7%95%A5</link>
      <description>&lt;p&gt;表单重复提交是在多用户Web应用中最常见、带来很多麻烦的一个问题。有很多的应用场景都会遇到重复提交问题，比如：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;点击提交按钮两次。&lt;/li&gt;
  &lt;li&gt;点击刷新按钮。&lt;/li&gt;
  &lt;li&gt;使用浏览器后退按钮重复之前的操作，导致重复提交表单。&lt;/li&gt;
  &lt;li&gt;使用浏览器历史记录重复提交表单。&lt;/li&gt;
  &lt;li&gt;浏览器重复的HTTP请求。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h3&gt;几种防止表单重复提交的方法&lt;/h3&gt;
 &lt;p&gt;  &lt;strong&gt;禁掉提交按钮。&lt;/strong&gt;表单提交后使用Javascript使提交按钮  &lt;code&gt;disable&lt;/code&gt;。这种方法防止心急的用户多次点击按钮。但有个问题，如果客户端把Javascript给禁止掉，这种方法就无效了。&lt;/p&gt;
 &lt;p&gt;我之前的文章曾说过用一些Jquery插件效果不错。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;Post/Redirect/Get模式。&lt;/strong&gt;在提交后执行页面重定向，这就是所谓的  &lt;a href="http://www.theserverside.com/news/1365146/Redirect-After-Post" target="_blank"&gt;Post-Redirect-Get (PRG)模式&lt;/a&gt;。简言之，当用户提交了表单后，你去执行一个客户端的重定向，转到提交成功信息页面。&lt;/p&gt;
 &lt;p&gt;这能避免用户按F5导致的重复提交，而其也不会出现浏览器表单重复提交的警告，也能消除按浏览器前进和后退按导致的同样问题。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;在session中存放一个特殊标志。&lt;/strong&gt;当表单页面被请求时，生成一个特殊的字符标志串，存在session中，同时放在表单的隐藏域里。接受处理表单数据时，检查标识字串是否存在，并立即从session中删除它，然后正常处理数据。&lt;/p&gt;
 &lt;p&gt;如果发现表单提交里没有有效的标志串，这说明表单已经被提交过了，忽略这次提交。&lt;/p&gt;
 &lt;p&gt;这使你的web应用有了更高级的XSRF保护。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;在数据库里添加约束。&lt;/strong&gt;在数据库里添加唯一约束或创建唯一索引，防止出现重复数据。这是最有效的防止重复提交数据的方法。&lt;/p&gt;
 &lt;p&gt;你是如何克服数据重复提交问题的？你遇到过什么重复提交数据的现实例子吗？&lt;/p&gt; &lt;img border="0" height="0" src="http://www1.feedsky.com/t1/734774772/aqee-net/feedsky/s.gif?r=http://www.aqee.net/%ef%bb%bf%ef%bb%bfprevent-duplicate-form-submission/" width="0"&gt;&lt;/img&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>浏览器 表单重复提交 技术技巧</category>
      <guid isPermaLink="true">https://itindex.net/detail/46461-%E7%AD%96%E7%95%A5</guid>
      <pubDate>Wed, 13 Nov 2013 00:07:12 CST</pubDate>
    </item>
    <item>
      <title>详解浏览器cookie和浏览隐私之间的关系</title>
      <link>https://itindex.net/detail/44789-%E6%B5%8F%E8%A7%88%E5%99%A8-cookie-%E9%9A%90%E7%A7%81</link>
      <description>&lt;p&gt;本文所说的&amp;quot;cookie&amp;quot;，指的是浏览器相关的 cookie（也叫&amp;quot;HTTP cookie&amp;quot;）。&lt;/p&gt;
 &lt;p&gt;浏览器 cookie 的主要功能是：帮助网站保存一些小片段的信息。比如，你曾经在自己的浏览器上登录过某个论坛，下次你再打开论坛的登录页面，你会发现用户名已经帮你填好 了，你只需要输入口令即可。那么，这个登录页面是如何知道你上次登录用的账户名捏？奥妙就在于：该网站在你的浏览器端保存了一个 cookie，里面包含了你上次登录使用的帐号名称。&lt;/p&gt;
 &lt;h3&gt;Cookie 的技术实现&lt;/h3&gt;
 &lt;p&gt;本章节面向懂技术的网友。不太懂技术的读者，可以略过本节，直接进入下一章节，以免浪费时间。&lt;/p&gt;
 &lt;h4&gt;网站如何设置 cookie（写操作）&lt;/h4&gt;
 &lt;p&gt;1、当你在浏览器中点某个书签、或者在浏览器地址栏输入某个网址，浏览器会向对应的网站发起一个 HTTP 请求（术语是 HTTP Request）。&lt;/p&gt;
 &lt;p&gt;2、然后，网站的服务器收到这个 HTTP 请求之后，会把相应的内容（比如网页、图片、等）发回给浏览器（这称为 HTTP 响应，术语是 HTTP Reponse）。&lt;/p&gt;
 &lt;p&gt;如果网站想设置 cookie，就在发回的 HTTP Response 中，包含一个设置 cookie 的指令。举例如下：&lt;/p&gt;
 &lt;blockquote&gt;  &lt;p&gt;Set-Cookie: user=xxxx; Path=/; Domain=www.example.com&lt;/p&gt;&lt;/blockquote&gt;
 &lt;p&gt;上述这个例子中，设置了一个 cookie。这个 cookie 的&amp;quot;名&amp;quot;是 user；cookie 的&amp;quot;值&amp;quot;是 xxxx；cookie 绑定的域名是 www.example.com&lt;/p&gt;
 &lt;p&gt;3、浏览器在收到这个指令后，就会在你的电脑中存储该 cookie 的信息。&lt;/p&gt;
 &lt;h4&gt;网站如何获取 cookie（读操作）&lt;/h4&gt;
 &lt;p&gt;假设过了几天之后，你再次访问上述的 www.example.com 网站（在上次的访问中，已经被设置过 cookie 了）。这时候，浏览器发现该网址已经有对应的 cookie，就会把 cookie 的信息放在 HTTP Request 中，然后发送到网站服务器。具体的指令如下：&lt;/p&gt;
 &lt;blockquote&gt;  &lt;p&gt;Cookie: user=xxxx&lt;/p&gt;&lt;/blockquote&gt;
 &lt;p&gt;网站服务器拿到这个 HTTP Request 之后，就可以通过上述信息，知道 cookie 的&amp;quot;名&amp;quot;和&amp;quot;值&amp;quot;。&lt;/p&gt;
 &lt;h3&gt;Cookie 的特点&lt;/h3&gt;
 &lt;h4&gt;存储信息量小&lt;/h4&gt;
 &lt;p&gt;cookie 在洋文中的意思就是：小甜饼、曲奇饼。这个单词其实已经暗示了 cookie 技术所能存储的信息量是比较小滴。  &lt;br /&gt;
从刚才的技术实现机制可以看出，cookie 只能用来存储纯文本信息，而且存储的内容不能太长——因为 Cookie 的读写指令受限于 HTTP Header 的长度。  &lt;br /&gt;
但是，cookie 的信息量虽小，能耐却很大哦。请看下面的例子。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;举例&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;比如某个网站上有很多网页，每个网页上有很多广告。该网站想要收集：每一个访客点击了哪些广告。&lt;/p&gt;
 &lt;p&gt;由于这些信息量比较大，直接存储在 cookie 里可能放不下。所以，网站通常是在 cookie 中保存一个  &lt;strong&gt;唯一的用户&lt;/strong&gt;标识。然后把用户的点击信息（包括在哪个时间点击哪个广告）都存储在服务器上。&lt;/p&gt;
 &lt;p&gt;下次你再访问该网站，网站先拿到 cookie 中的用户标识，因为这个标识具有唯一性，那么就可以根据该标识，从网站服务器上查出该用户的详细信息。&lt;/p&gt;
 &lt;h4&gt;绑定到域名和路径&lt;/h4&gt;
 &lt;p&gt;从上述的实现机制可以看出，cookie 是跟 HTTP Request 对应的网址（域名和路径）相关的。&lt;/p&gt;
 &lt;p&gt;所以，不同域名的网站设置的 cookie 是互相独立的（隔离的）。这一点由浏览器来保证，以确保安全性。&lt;/p&gt;
 &lt;p&gt;补充一下：cookie 绑定的域名可以是  &lt;strong&gt;小数点开头&lt;/strong&gt;的。举例如下：&lt;/p&gt;
 &lt;blockquote&gt;  &lt;p&gt;Set-Cookie: user=xxxx; Path=/; Domain=.example.com&lt;/p&gt;&lt;/blockquote&gt;
 &lt;p&gt;这个指令设置的 cookie，可以被 example.com 的  &lt;strong&gt;所有&lt;/strong&gt;下级域名读取（比如 www.example.com 或 ftp.example.com）。&lt;/p&gt;
 &lt;h3&gt;Cookie 的类型&lt;/h3&gt;
 &lt;h4&gt;第一方 Cookie VS 第三方 Cookie&lt;/h4&gt;
 &lt;p&gt;首先来说说&amp;quot;第一方&amp;quot;和&amp;quot;第三方&amp;quot; Cookie 的区别，因为这跟隐私的关系比较密切。&lt;/p&gt;
 &lt;p&gt;要说清楚 &amp;quot;第一方 Cookie&amp;quot; 和 &amp;quot;第三方 Cookie&amp;quot; 的差别，俺来举个例子。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;举例&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;打个比方，你上新浪去看新闻，并且新浪的网页上嵌入了阿里巴巴的广告（假设新浪的页面和嵌入的广告都会设置 cookie）。那么，当你的浏览器加载完整个页面之后，浏览器中就会同时存在新浪网站的 cookie 和 阿里巴巴网站的 cookie。这时候，新浪网站的 cookie 称为&amp;quot;第一方 Cookie&amp;quot;（因为你访问的就是新浪嘛），相对的，阿里巴巴的 cookie 称为&amp;quot;第三方 Cookie&amp;quot;（因为你访问的是新浪，阿里巴巴只是不相干的第三方）&lt;/p&gt;
 &lt;h4&gt;内存型 VS 文件型&lt;/h4&gt;
 &lt;p&gt;根据存储方式的不同，分为两类：基于内存的 Cookie 和 基于文件的Cookie。基于内存的 cookie，当浏览器关闭之后，就消失了；而基于文件的 cookie，即使浏览器关闭，依然存在于硬盘上。和隐私问题相关的 cookie，主要是第二类（基于文件的Cookie）。&lt;/p&gt;
 &lt;h3&gt;Cookie 有啥正经用途？&lt;/h3&gt;
 &lt;p&gt;今年的315晚会，央视猛烈抨击了 cookie 的隐私问题，搞得好像 cookie 是洪水猛兽一般。央视对 cookie 的宣传，典型是用来吓唬不懂技术的外行。其实捏，cookie 是有利有弊的。cookie 之所以应用这么广泛，因为它本身确实是很有用的。请看下面的几个例子。&lt;/p&gt;
 &lt;h4&gt;举例1——自动登录&lt;/h4&gt;
 &lt;p&gt;目前很多基于 Web 的邮箱，都有自动登录功能。也就是说，你第一次打开邮箱页面的时候，需要输入用户名和口令；过几天之后再来打开邮箱网页，就不需要再次输入用户名和口令了（比如 Gmail 和 Hotmail 就是这样的）。&lt;/p&gt;
 &lt;p&gt;为啥邮箱可以做到自动登录，就是因为邮箱的网站在你的浏览器中保存了 cookie，通过 cookie 中记录的信息来表明你是已登录用户。&lt;/p&gt;
 &lt;h4&gt;举例2——提供个性化界面&lt;/h4&gt;
 &lt;p&gt;比如某个论坛允许匿名用户设置页面的字体样式和字体大小。那么，该论坛就可以把匿名用户设置的字体信息保存在 cookie 中，下次你用同一个浏览器访问该论坛，自动就帮你把字体设置好了。&lt;/p&gt;
 &lt;h4&gt;小结&lt;/h4&gt;
 &lt;p&gt;一般来说，有正经用途的 cookie，大都是&amp;quot;第一方 Cookie&amp;quot;；至于&amp;quot;第三方 Cookie&amp;quot;，大部分是用来收集广告信息和用户行为的。&lt;/p&gt;
 &lt;h3&gt;Cookie 如何泄漏隐私？&lt;/h3&gt;
 &lt;p&gt;cookie 就像一把双刃剑，有很多用途，但也有弊端。一个主要的弊端就是隐私问题。&lt;/p&gt;
 &lt;h4&gt;举例1&lt;/h4&gt;
 &lt;p&gt;假如你同时使用 Google 的 Gmail 和 Google 的搜索（很多 Google 用户都这么干）。当你登录过 Gmail 之后，cookie 中会保存你的用户信息（标识你是谁）；即使你在 Gmail 中点了注销（logout），cookie 中还是会有你的用户信息。之后，你再用 Google 的搜索功能，那么 Google 就可以通过 cookie 中的信息，知道这些搜索请求是哪个 Gmail 用户发起的。&lt;/p&gt;
 &lt;p&gt;可能有些同学会问，Gmail 和 Google 搜索，是不同的域名，如何共享 cookie 捏？俺前面有介绍过，某些 cookie 绑定的域名是以小数点开头的，也就是说，这类 cookie 可以被所有下级域名读取。因为 Gmail 的域名是 mail.google.com，而 Google 搜索的域名是 www.google.com。所以这两者都可以读取绑定在 .google.com 的 cookie！&lt;/p&gt;
 &lt;p&gt;注：俺拿 Google 来举例是因为俺博客的读者，大部分都是 Google 用户。其实不光 Google 存在此问题，百度、腾讯、阿里巴巴、奇虎360、等等，都存在类似问题（这几家都有搜索功能，也都有自己的一套用户帐号体系）。&lt;/p&gt;
 &lt;h4&gt;举例2&lt;/h4&gt;
 &lt;p&gt;很多网站会利用 cookie 来追踪你访问该网站的行为（包括你多久来一次，每次来经常看哪些页面，每个页面的停留时间），这样一来，网站方面就可以根据这些数据，分析你的个人的种种偏好（这就涉及到个人隐私）。&lt;/p&gt;
 &lt;p&gt;请注意：利用 cookie 收集个人隐私的把戏有很多，俺限于篇幅，仅列出上述两例。&lt;/p&gt;
 &lt;h4&gt;始终用隐私浏览模式&lt;/h4&gt;
 &lt;p&gt;关于&amp;quot;隐私浏览模式&amp;quot;，在  &lt;a href="http://www.iefans.net/ruhe-fangfan-xielu-shangwang-yinsi/" target="_blank" title="&amp;#22914;&amp;#20309;&amp;#38450;&amp;#33539;&amp;#27983;&amp;#35272;&amp;#22120;&amp;#27844;&amp;#38706;&amp;#19978;&amp;#32593;&amp;#38544;&amp;#31169;"&gt;本系列的前一篇&lt;/a&gt;已经介绍过了，此处不再啰嗦。&lt;/p&gt;
 &lt;p&gt;在隐私浏览模式下，浏览器关闭之后，期间所有的 cookie 都消失。&lt;/p&gt;
 &lt;p&gt;但是，这样设置也可能带来一些不方便之处（安全性和方便性通常是截然对立）。你可能要先尝试一段时间，看看自己能否忍受这种模式。&lt;/p&gt;
 &lt;h4&gt;小结&lt;/h4&gt;
 &lt;p&gt;刚才介绍的几招，都是针对单个浏览器 。大部分情况下是够用了。但是某些特殊情况，还是会搞不定。&lt;/p&gt;
 &lt;p&gt;比如：你经常用 Gmail，而且依赖于 Gmail 的自动登录。这时候，你就不能禁用 .google.com 域名下的 cookie（禁用了就无法自动登录 Gmail）。&lt;/p&gt;
 &lt;p&gt;但是，你在用 Google 搜索的时候，又不希望让 Google 知道你是谁。咋办捏？请听下回分解——用多浏览器搭配不同的招数。&lt;/p&gt;
 &lt;p&gt;via：  &lt;a href="http://program-think.blogspot.com/" rel="external nofollow"&gt;编程随想的博客&lt;/a&gt;&lt;/p&gt;

 &lt;p&gt;This article addresses:  &lt;a href="http://www.iefans.net/cookie-yinsi-guanxi/"&gt;http://www.iefans.net/cookie-yinsi-guanxi/&lt;/a&gt;&lt;/p&gt;Here is no comments yet by the time  your rss reader get this, Do you want to be the first commentor? Hurry up &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>浏览器相关 cookie 隐私</category>
      <guid isPermaLink="true">https://itindex.net/detail/44789-%E6%B5%8F%E8%A7%88%E5%99%A8-cookie-%E9%9A%90%E7%A7%81</guid>
      <pubDate>Fri, 05 Jul 2013 22:58:04 CST</pubDate>
    </item>
  </channel>
</rss>

