雅虎通的Y!Pingme服务

Security, Tech, Web @ 12 October 2006, “3 Comments”

几天前,车东提到了雅虎中国发布的Y!pingme服务

什么是Pingme呢?原本想抄一下它们首页的文本,结果发现介绍文字居然是一大块GIF图片,*?^%$#@?!,disable掉图片,居然没有ALT的描述(建议网站开发人员参考W3C的Web Content Accessibility Guildinestext-equivalent一节)。那就抄车东写的解释吧(让我们赞美一下“代码重用”:p):

什么是PingMe呢? 就是一个web界面的雅虎通留言簿,没有注册过雅虎帐号的用户只要点击网站上的PingMe图标call me via Yahoo! Messenger就可以直接与你聊天了。过几天,你的雅虎通上忽然跳出一个:webchat####用户,那就是来自网站的用户留言了。

恩,就酱紫,简单明了。

让我感到好奇的是那个Pingme的图标和链接在网页上的代码,于是view source了一下车东的页面,最主要的代码是这样的:

< a xhref="http://cn.pingme.messenger.yahoo.com/webchat/ajax_webchat.php ?yid=[雅虎通ID]&sig=[40位ASCII字符]"

就是说pingme的URL带两个参数,一个是yid,就是用户的yahoo ID,一个是sig,长度为40的ascii字符串,估计是sha1哈希值。

咳,不知道是因为做过两年电信的SP呢,还是因为这方面比较paranoid一点,看到这段HTML,我立刻就想到:假设有个网页爬虫,爬一遍陶宝和雅虎中国的社区站点页面,就能收集到一大堆yahoo ID和pingme的URL,而且能够知道这些用户是

  1. 是雅虎通的活跃用户;
  2. 有自己的网站/网页 ;
  3. 使用pingme服务;
  4. 多半是淘宝店主(这可以根据页面URL和页面内相关链接或者关键字发现吧);
  5. 如果是淘宝店主,稍微分析一下页面,应该能发现她/他卖的是什么产品吧(谁实证一下是否可以?;));

就可以对他们进行非常有针对性的SPAM营销了。

稍等一下,做到这点的前提条件之一是相对于yid的那个sig必需是固定不变的,恩,也许这个URL是动态生成的?看输出到浏览器的页面代码是不行的,那就自己申请一个Pingme服务看看 …… 哈,还真是固定的,申请页面的第二步就直接给出了HTML代码,跟上面的一样(除了是我自己的yid和一个不同的sig值)。那么,上述的SPAM计划应该是可行的了。

给Pingme团队一个建议:提供用户javascript代码,Javascript在页面装载后到服务器获取一个有时效的sig值,再返回这段HTML代码,这样,就算网页爬虫拿到了今天的yid和sig组合,但是过一天或者过半小时就失效了。

当然,这么做可能会引起比较大的改动和其他问题,比如对服务器压力会增加,怎么处理这些链接在web cache上的更新,怎么处理Pingme主人正在进行的聊天,保证合理合法的聊天不会被中断等等。

当然的当然,我这是站着说话不腰疼……

说到最后,这是我的Y!Pingme :-)

发送雅虎通信息给我吧

3 Responses to “雅虎通的Y!Pingme服务”

  1. Fenng Says:

    的确暴露了一些问题

  2. yiz Says:

    厉害,看问题就是不一样…..
    网络爬虫,我还真有兴趣……..
    可惜……
    借我一把刀,劈我两刀,变成三人了….时间就多了….

    学英语真耗时间…..特别是为考试而学习……..

  3. cargo Says:

    其他的参数呢
    啥意义

Leave a Reply