作者: 乔克斯
查看: 165192|回复: 483

主题标签Tag

打印 上一主题 下一主题

[源码] 【获取QQ信息】C#实现查看QQ资料,头像,Q秀等信息

  [复制链接]
跳转到指定楼层
楼主
乔克斯 发表于 2014-7-22 14:34:20 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
查看: 165192|回复: 483
【获取QQ信息】C#实现查看QQ资料,头像,Q秀等信息
  • 首先,此案例并非病毒,360报毒纯属误报,详细功能可以查看代码。
  • 呢么应该怎样才能获取到QQ的一些资料信息呢,其实很简单,web接口。
  • QQ在很多软件上都定义了一些查询信息的接口,只不过我们都不知道,但是经过抓包分析出了几条有用的URL接口,在此分享。
  • 获取已登录账号
  • http://kf.qq.com/cgi-bin/loginTitle?rand
  • http://xui.ptlogin2.qq.com/cgi-bin/qlogin
  • 获取QQ头像
  • 超清
  • http://q.qlogo.cn/headimg_dl?bs=qq&dst_uin=419067339&spec=640
  • 高清
  • http://q.qlogo.cn/headimg_dl.......................等等等等。太多了就不继续列出来了,详细的查看附件。

接下来就是介绍要分享的开源程序了。
  1.首先他会自动获取已经登录的QQ信息,信息来源于QQ的一个在线登陆网页的快速登录页面。
  这就提示你已经调用当前登录的QQ自动登录成功了,接下来下面的功能都可以正常使用,如果没有登录,会有登录框让你登录,登陆即可,绝无记录密码的代码,请放心使用。
  本示例自动登录成功后可查看任何QQ的信息记录,并非登录的账号才可以查看。
  
2.可以获取三种规格QQ秀的图片   1.带背景的普通QQ秀   2.袖珍QQ秀-即好友名片上的QQ秀   3.无背景的QQ秀

3.可以调用QQ的临时对话URL。。进行强制聊天。

4.获取个人资料,空间动态等信息。

5.获取空间访客记录。

6.查看最近的空间照片和QQ宠物。


整个窗体的示例代码:
[C#] 纯文本查看 复制代码
using Model;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Net;
using System.Text;
using System.Threading;
using System.Windows.Forms;

namespace QQHack
{
    public partial class FrmMain : Form
    {
        public FrmMain() {
            InitializeComponent();
        }

        /// <summary>
        /// 图片
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnQx_Click(object sender, EventArgs e) {
            try {
                if (string.IsNullOrEmpty(txtQQ.Text)) {
                    MessageBox.Show("QQ号不可为空!");
                    return;
                }
                Button btn = (Button)sender;
                imgShow.Load(string.Format(btn.Tag.ToString(), txtQQ.Text));
                imgShow.SizeMode = PictureBoxSizeMode.CenterImage;
            } catch (Exception ex) {
                MessageBox.Show("QQ号格式错误或不存在!" + ex.Message);
            }
        }

        /// <summary>
        /// 页面
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnWeb_Click(object sender, EventArgs e) {
            try {
                if (string.IsNullOrEmpty(txtQQ.Text)) {
                    MessageBox.Show("QQ号不可为空!");
                    return;
                }
                Button btn = (Button)sender;
                webShow.Navigate(string.Format(btn.Tag.ToString(), txtQQ.Text));
            } catch (Exception ex) {
                MessageBox.Show("QQ号格式错误或不存在!" + ex.Message);
            }
        }

        /// <summary>
        /// 获取头像
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button3_Click(object sender, EventArgs e) {
            try {
                if (string.IsNullOrEmpty(txtQQ.Text)) {
                    MessageBox.Show("QQ号不可为空!");
                    return;
                }
                Button btn = btnTx;
                imgShow.Load(string.Format(btn.Tag.ToString(), txtQQ.Text, 640));
                if (imgShow.Image.Size.Width <= 40) {
                    imgShow.Load(string.Format(btn.Tag.ToString(), txtQQ.Text, 240));
                    if (imgShow.Image.Size.Width <= 40) {
                        imgShow.Load(string.Format(btn.Tag.ToString(), txtQQ.Text, 100));
                    }
                }
                imgShow.SizeMode = PictureBoxSizeMode.Zoom;
            } catch (Exception ex) {
                MessageBox.Show("QQ号格式错误或不存在!" + ex.Message);
            }
        }

        /// <summary>
        /// 点击强制聊天
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void imgQQ_Click(object sender, EventArgs e) {
            try {
                if (!string.IsNullOrEmpty(txtQQ.Text)) {
                    Process.Start(string.Format(imgQQ.Tag.ToString(), txtQQ.Text));
                }
            } catch (Exception ex) {
                MessageBox.Show("QQ号格式错误或不存在!" + ex.Message);
            }
        }

        private void txtQQ_TextChanged(object sender, EventArgs e) {
            try {
                if (txtQQ.Text.Length >= 5) {
                    imgQQ.Load(string.Format(txtQQ.Tag.ToString(), txtQQ.Text));
                    btnTx.PerformClick();
                }
            } catch { }
        }

        private System.Net.WebClient webClient = null;
        /// <summary>
        /// 检测已登录QQ
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FrmMain_Load(object sender, EventArgs e) {
            ServicePointManager.DefaultConnectionLimit = 512;
            webClient = new System.Net.WebClient();
            QClientHelper.QClientKey[] qqs = QClientHelper.GetQClientKey();
            if (qqs != null) {
                Text = "获取QQ信息 - 当前操作用户:" + qqs[0].UName + " (" + qqs[0].UId + ")";
                txtQQ.Text = qqs[0].UId;
            } else {
                webShow.Navigate(webShow.Tag.ToString());
            }
            //FrmZx frm = new FrmZx();
            //frm.Show(this);
        }

        private void webShow_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
            //登录Qzone  
            HtmlElement btnLogin = webShow.Document.GetElementById("loginbtn");
            if (btnLogin != null) {
                btnLogin.InvokeMember("click");
            }
        }

        private void webShow_Navigated(object sender, WebBrowserNavigatedEventArgs e) {
            if (webShow.Url == new Uri("http://ctc.qzs.qq.com/ac/qzone/login/succ.html")) {
                webShow.DocumentText = "初始化成功,现可使用所有功能!";
                button10.Visible = false;
            }
        }

        /// <summary>
        /// 最近访问记录
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button8_Click(object sender, EventArgs e) {
            try {
                if (string.IsNullOrEmpty(txtQQ.Text)) {
                    MessageBox.Show("QQ号不可为空!");
                    return;
                }
                Button btn = (Button)sender;
                webClient.Encoding = Encoding.GetEncoding("utf-8");//设置编码
                string html = webClient.DownloadString(string.Format(btn.Tag.ToString(), txtQQ.Text));
                if (!string.IsNullOrEmpty(html)) {
                    //取数据
                    html = html.Replace("_Callback(", "").Replace(");", "");
                    Rootobject rt = (Rootobject)JavaScriptConvert.DeserializeObject(html, typeof(Rootobject));
                    string st = "";
                    st += "<b style='color: red;'>空间最近访问人数:" + rt.data.count + "</b><br /><hr />";
                    foreach (QQList item in rt.data.list) {
                        st += string.Format("<span style='color: blue;'>名称:{0}<br />", item.nick);
                        st += string.Format("QQ:{0}<br /></span>", item.uin);
                        DateTime ntime = GetNoralTime(item.time);
                        string[] Day = new string[] { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
                        string sday = Day[Convert.ToInt16(ntime.DayOfWeek)];
                        string ddstr = " ";
                        ddstr += (ntime.Day == DateTime.Now.Day && ntime.Month == DateTime.Now.Month) ? "今天" : "昨天";
                        st += string.Format("访问时间:{0}<br /></span>", ntime + " " + sday + ddstr);
                        st += string.Format("是否在线:<img alt=\"亮的QQ图标表示在线,灰色的表示不在线或者隐身状态\" title=\"亮的QQ图标表示在线,灰色的表示不在线或者隐身状态\" src='http://wpa.qq.com/pa?p=1:{0}:4'/><br />", item.uin);
                        st += string.Format("强制聊天:<a href='http://wpa.qq.com/msgrd?v=3&site=qq&menu=yes&uin={0}' target=\"_blank\">点击强制聊天</a><br />", item.uin);
                        st += string.Format("空间头像:<br/><img src='{0}' /><br />", item.face_url);
                        st += string.Format("QQ头像:<br/><img src='http://q.qlogo.cn/headimg_dl?bs=qq&dst_uin={0}&spec=100' /><br /><hr />", item.uin);
                    }
                    webShow.DocumentText = st;
                }
            } catch (Exception ex) {
                MessageBox.Show("QQ号格式错误或不存在!" + ex.Message);
            }
        }

        /// <summary>
        /// 转换Unix时间戳
        /// </summary>
        /// <param name="now">Unix时间戳</param>
        /// <returns>DateTime</returns>
        private DateTime GetNoralTime(int now) {
            int timeStamp = now;
            DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
            long lTime = long.Parse(timeStamp + "0000000");
            TimeSpan toNow = new TimeSpan(lTime);
            DateTime dtResult = dtStart.Add(toNow);
            return dtResult;
        }

        /// <summary>
        /// 个人资料1
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button7_Click(object sender, EventArgs e) {
            try {
                if (string.IsNullOrEmpty(txtQQ.Text)) {
                    MessageBox.Show("QQ号不可为空!");
                    return;
                }
                Button btn = (Button)sender;
                webClient.Encoding = Encoding.GetEncoding("utf-8");//设置编码
                string html = webClient.DownloadString(string.Format(btn.Tag.ToString(), txtQQ.Text));
                //取数据
                html = html.Replace("_Callback(", "").Replace(");", "").Replace(""", "\"").Replace("\n", "");
                UserQQ qq = (UserQQ)JavaScriptConvert.DeserializeObject(html, typeof(UserQQ));
                string st = "";
                st += string.Format("QQ:{0}<br />", qq.uin);
                st += string.Format("<hr />名称:{0}<br />", qq.nickname);
                st += string.Format("<hr />真实姓名:{0}<br />", qq.realname);
                st += string.Format("<hr />开通空间:{0}<br />", qq.qzone == 0 ? "已开通QQ空间" : "未开通QQ空间");
                st += string.Format("<hr />空间积分:{0}<br />", qq.intimacyScore);
                st += string.Format("<hr />是否在线:<img alt=\"亮的QQ图标表示在线,灰色的表示不在线或者隐身状态\" title=\"亮的QQ图标表示在线,灰色的表示不在线或者隐身状态\" src='http://wpa.qq.com/pa?p=1:{0}:4'/><br />", qq.uin);
                st += string.Format("<hr />强制聊天:<a href='http://wpa.qq.com/msgrd?v=3&site=qq&menu=yes&uin={0}' target=\"_blank\">强制聊天</a><br />", qq.uin);
                st += string.Format("<hr /><img src='{0}' /><br /><hr />", qq.avatarUrl);
                webShow.DocumentText = st;
            } catch (Exception ex) {
                MessageBox.Show("QQ号格式错误或不存在!" + ex.Message);
            }
        }

        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button10_Click(object sender, EventArgs e) {
            Button btn = (Button)sender;
            webShow.Navigate(btn.Tag.ToString());
        }

        /// <summary>
        /// 双击保存图片
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void imgShow_DoubleClick(object sender, EventArgs e) {
            if(saveFile.ShowDialog() == System.Windows.Forms.DialogResult.OK){
                imgShow.Image.Save(saveFile.FileName);
            }
        }
    }


}


注意:
部分功能接口已变更或失效。

项目源码-回复即可见下载:
游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 1威望 +1 金钱 +5 贡献 +1 收起 理由
xiaobo + 1 + 5 + 1 感谢LZ对论坛做出的贡献~

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 转播转播
回复 论坛版权

使用道具 举报

沙发
原始 发表于 2014-7-22 14:40:58 | 只看该作者
沙发!!!
回复

使用道具 举报

板凳
天马行空 发表于 2014-7-22 14:44:42 | 只看该作者
:):):):):):)
回复

使用道具 举报

地板
easy 发表于 2014-7-22 14:44:48 | 只看该作者
111111111111111111111111

评分

参与人数 1金钱 -2 收起 理由
xiaobo -2 恶意灌水

查看全部评分

5#
qq1275706970 发表于 2014-7-22 14:46:04 | 只看该作者
来kan kan
回复

使用道具 举报

6#
smalltalkhyb 发表于 2014-7-22 14:48:55 | 只看该作者
支持一下
回复

使用道具 举报

7#
 楼主| 乔克斯 发表于 2014-7-22 14:52:05 | 只看该作者
easy 发表于 2014-7-22 14:44
111111111111111111111111

水贴- -嫌疑严重啊。。。
8#
xiaohu_mail 发表于 2014-7-22 14:52:38 | 只看该作者
不错,下来学习学习
9#
lansiyao 发表于 2014-7-22 15:02:37 | 只看该作者
学习了!很有研究价值
10#
chinasoft008 发表于 2014-7-22 15:38:26 | 只看该作者
这个要顶!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入CSkin博客

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|CSkin ( 粤ICP备13070794号

Powered by Discuz! X3.2  © 2001-2013 Comsenz Inc.  Designed by ARTERY.cn
GMT+8, 2024-5-5 15:58, Processed in 0.620838 second(s), 37 queries , Gzip On.

快速回复 返回顶部 返回列表