Cookie和广告联盟
相信大家都有类似的经历:在浏览网页时,有的广告竟然展示出读者近期搜索过的关键词,也有一些广告竟然知道读者近期要买的东西。到底是什么技术悄悄地把读者的信息出卖了?答案就是 Cookie。
浏览器不断地向服务器请求数据,服务器不断地回答数据。这个过程有个缺点:每次请求都是独立的,服务器并不会记下客户端的信息。为了让服务器识别请求者,请求者需要在发送请求时带上自己的身份信息,这个身份信息的学名叫作 Cookie。
Cookie 是浏览器每次向网站服务器请求数据时携带的一些额外信息,这些信息一般非常少(最多 4KB),主要就是为了解决服务器“记性不好”的问题。
当然,Cookie 需要携带什么信息,其实是由服务器决定的,比如我们登录新浪微博后,服务器就会要求浏览器把登录成功的账号写到 Cookie 里,下次请求关注列表时,浏览器就会带上这个 Cookie,一起发送到服务器,这样服务器就会知道请求者是谁了。
例如,访问了百度之后产生的 Cookie 是加密过的。只有开发者才知道这种经过加密的信息是什么意思,它里面包含了用户搜索过的关键词的信息。
每个网站都会有 很多这样的 Cookie,但它们是隔离开的。也就是说,百度只能访问到百度存储在浏览器的 Cookie,微博只能访问到微博存储在浏览器的 Cookie,百度无法得到微博的 Cookie,这一点由浏览器保证。
现在我们来解释开头广告的事情。用户搜索关键词被百度保存在了浏览器的 Cookie 里,但是这个广告是出现在一个博客网站上的,按上文的理论,这个博客网站只能访问它自己存储在浏览器的 Cookie,为什么能访问百度的 Cookie 呢?
通过研究这个页面的源码,发现这个广告是博客网站的程序员从百度那里复制了一段代码放到这个页面上而展示出来的,用户在请求广告图片时,还是去百度请求,自然百度也就能拿到带着搜索关键词的 Cookie。
拿到 Cookie 的百度就可以根据关键词匹配它们的广告,然后推荐给用户,这种广告因为推送的都是用户感兴趣的内容,“杀伤力” 特别大,被称为“精准广告”。
已经有成千上万的网站加入了搜索引擎的广告联盟。用户在浏览其他网站时,都有可能看到带有自己搜索关键词的广告。
浏览器不断地向服务器请求数据,服务器不断地回答数据。这个过程有个缺点:每次请求都是独立的,服务器并不会记下客户端的信息。为了让服务器识别请求者,请求者需要在发送请求时带上自己的身份信息,这个身份信息的学名叫作 Cookie。
Cookie 是浏览器每次向网站服务器请求数据时携带的一些额外信息,这些信息一般非常少(最多 4KB),主要就是为了解决服务器“记性不好”的问题。
当然,Cookie 需要携带什么信息,其实是由服务器决定的,比如我们登录新浪微博后,服务器就会要求浏览器把登录成功的账号写到 Cookie 里,下次请求关注列表时,浏览器就会带上这个 Cookie,一起发送到服务器,这样服务器就会知道请求者是谁了。
例如,访问了百度之后产生的 Cookie 是加密过的。只有开发者才知道这种经过加密的信息是什么意思,它里面包含了用户搜索过的关键词的信息。
每个网站都会有 很多这样的 Cookie,但它们是隔离开的。也就是说,百度只能访问到百度存储在浏览器的 Cookie,微博只能访问到微博存储在浏览器的 Cookie,百度无法得到微博的 Cookie,这一点由浏览器保证。
现在我们来解释开头广告的事情。用户搜索关键词被百度保存在了浏览器的 Cookie 里,但是这个广告是出现在一个博客网站上的,按上文的理论,这个博客网站只能访问它自己存储在浏览器的 Cookie,为什么能访问百度的 Cookie 呢?
通过研究这个页面的源码,发现这个广告是博客网站的程序员从百度那里复制了一段代码放到这个页面上而展示出来的,用户在请求广告图片时,还是去百度请求,自然百度也就能拿到带着搜索关键词的 Cookie。
拿到 Cookie 的百度就可以根据关键词匹配它们的广告,然后推荐给用户,这种广告因为推送的都是用户感兴趣的内容,“杀伤力” 特别大,被称为“精准广告”。
已经有成千上万的网站加入了搜索引擎的广告联盟。用户在浏览其他网站时,都有可能看到带有自己搜索关键词的广告。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算