qq好友列表获取导出,利用QQ协议实现好友数据备份,包含:qq好友、QQ分组、QQ群、qq群成员【附code源码】

qq好友列表获取导出,利用QQ协议实现qq好友数据备份,包含:qq好友、QQ分组、QQ群、qq群成员

  1. 我们是在浏览器中的操作,接下来看看数据到底怎么获取的,我们通过Fiddler的查找功能,就可以查找到web请求和内容信息,我们就会找到如下一个URL,当然Fiddler是在操作之前打开的 
    1.  
    2. 通过Fiddler发现返回的是JSON数据,实际的实现是跨域JSON,JSON的结构,是两个数组,一个qq好友分组信息,一个qq好友列表 
       
    3. 详细的具体JSON信息,我就不在说了,感兴趣的可以自己去分析
  2. 代码实现部分
    1. 更具上面的分析,我们首先需要实现数据模型(qq好友和qq分组信息) 
 public class QQGroupMemberInfo
    {
        public string QQ
        {
            get;
            set;
        }
        public string NickName
        {
            get;
            set;
        }
    }
    /// 
    /// QQ好友
    /// 
    public class QQFriendMember : QQGroupMemberInfo
    {
        public int FriendGroupId { get; set; }
    }
    /// 
    /// 好友分组
    /// 
    public class QQFiendGroup
    {
        public string Name { get; set; }
        public int GroupId { get; set; }
        public int SortId { get; set; }
    }
    /// 
    /// 好友信息返回模型
    /// 
    public class QQFriendInfo
    {
        public QQFriendInfo()
        {
            GroupInfos = new List();
            QQFriends = new List();
        }
        public List GroupInfos { get; set; }
        public List QQFriends { get; set; }
    }

   2.提交GET请求,获取qq好友列表数据 

  string friendUrl = string.Format("http://r.cnc.qzone.qq.com/cgi-bin/tfriend/friend_mngfrd_get.cgi?uin={0}", _cleintKeyInfo.ClientUin);
            string jsonF = GetWebData(friendUrl);

3.使用Javascript运行时解析qq好友列表数据

  StringBuilder script = new StringBuilder();
            script.AppendLine("function _Callback(o){return o; };");
            script.AppendLine(jsonF);
            var data = JavaScriptEngine.Run(script.ToString()) as Dictionary;

4.获取qq好友列表解析数据

 var gpnames = data["gpnames"] as object[];//组信息
            var items = data["items"] as object[];//好友信息
            //遍历组
            foreach (var g in gpnames)
            {
                var gitem = (g as Dictionary);
                qfi.GroupInfos.Add(new QQFiendGroup()
                {
                    GroupId = int.Parse(gitem["gpid"].ToString()),
                    Name = gitem["gpname"].ToString(),
                    SortId = int.Parse(gitem["sortid"].ToString())
                });
            }
            //遍历成员
            foreach (var f in items)
            {
                var fitem = (f as Dictionary);
                qfi.QQFriends.Add(new QQFriendMember()
                {
                    FriendGroupId = int.Parse(fitem["groupid"].ToString()),
                    NickName = fitem["name"].ToString(),
                    QQ = fitem["uin"].ToString()
                });
            }

 总结 :

1.其实QQ的数据是比较好获取的,只是登陆比较困难而已,关于登陆部分实现,我blog前面的一些文章已经实现过了,这里不再罗嗦
2.对于HTTP协议的数据分析,主要使用HTTP协议分析工具来解析,再结合浏览器的控制台来分析

附源码:https://download.csdn.net/download/qq_43068569/11055257

  1. 更多关于:qq好友列表导出
  2. 可加Q:  一起交流。
  3. qq好友列表导出

     

  4. 更多关于:QQ协议微信协议。可加Q群:125687103  一起交流。





     

你可能感兴趣的:(QQ营销软件)