一、最终效果
当在你自己的空间时就会看到QQ号是你自己的,而浏览器信息也是自己的,当然还有昵称也是自己的昵称。看似很神奇,到底是怎么做出来的呢?
二、原理分析
首先呢,这个东西是在自己空间才能看到的。所以可以肯定的是这牵扯到了自己的账号登陆相关信息。其次这个图片是动态变化的,所以可以肯定不是用PS之类的P图P上去的,而是使用编程语言动态生成的。生成图片很多语言都可以,本例采用PHP来生成图片。
为了不对高手啰嗦,下面直接上源码,自行下载:
完全的源码,毫无修改。
三、部分代码讲解
|
|
这段代码中最需要理解的一个就是HTTP REFERER,这是整个程序的核心。当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。因此当你从QQ空间访问到该图片时就会有Referer告诉服务器你是从哪里点过来的,而这个Referer里就藏有你的QQ号码。使用Google Chrome的同学可以按F12打开开发者工具,查看某个HTML文档的Header就可以找到该文档的Referer信息。
在你获得了点击来源之后,下面需要做的就是把Referer信息中的QQ号提取出来,然后再通过QQ空间的API查询该QQ号码的相关信息。这个API的地址就是
http://base.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?uins=123456789
uins后边跟着你要查询的QQ号码就可以了。在你访问之后返回的数据是JSON格式的:
`portraitCallBack({“123456789”:[“http://qlogo2.store.qq.com/qzone/123456789/123456789/100”,91922,-1,8,0,1,“今日观察”,0]})``
然后再用PHP对返回的数据进行解析,可以得到的信息有该QQ号码的头像地址、昵称、QQ号码等信息。
得到相关数据后接下来要做的就是把这些信息通过PHP或者其他你喜欢的语言生成图片就可以了。就像图片加水印的原理一样,先用PS美化好一张底图,然后再设置文字大小、位置、颜色等信息。然后再输出到浏览器里。大功告成。
四、在QQ空间发布
如果你直接在空间里用说说或者日志插入你会发现无法插入,因为地址格式不对,地址的后缀不是jpg或者png结尾的。所以这个时候需要用到一点HTML代码的知识。在日志中可以切换到HTML输入,在右上角。切换到HTML代码输入后在日志中写<img src="你的动态图片地址" />
这样就可以插入进去了。
总的来说没有多少技术含量,对于PHP大神来说都是小菜一碟的事情。由于时间仓促,代码写的很凌乱,各位大神不喜勿喷,欢迎加入网络极客QQ群:277076455一同交流。