天天看點

C#實作QQ空間登入

源碼在這裡:點選打開連結

這是我自己完成的QQ空間登入代碼,隻做到登入為止,後面沒有了。

下面有兩個版本,一個是windows應用,一個是控制台應用,具體如下。

代碼主要是包括通過Httpget(httpwebrequest方法)登入的,還包括了QQ密碼的最新加密算法2014年)

截圖如下:

1.windows應用版

C#實作QQ空間登入
C#實作QQ空間登入

2.控制台應用版本

C#實作QQ空間登入

展示下核心代碼吧:以下代碼是控制台版的主要代碼。完整源碼連結已經提供了,要的趕緊去下,才五分,不貴。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using System.Drawing;
using System.Security.Cryptography;
using System.Net;

namespace testWebRequest
{
    public class Program
    {
        public static String qq = "XXXXXX";    //自己填
        private static String password = "XXXXXX";  //自己填

        static void Main(String[] args)
        {
            QQLogin(qq, password);
        }

        public static void QQLogin(String QQ, String password)
        {

            String pass = "";
            String responseData = "";
            //擷取驗證資訊
            //驗證資訊格式為:ptui_checkVC('0','!MIW','\x00\x00\x00\x00\x9a\x65\x0f\xd7') 
            //其中分為三部分,第一個值0或1判斷是否需要圖檔驗證碼
            //                          第二個值是預設驗證碼,若不需要圖檔驗證碼,就用此驗證碼來送出
            //                          第三部分是所使用的QQ号碼的16進制形式
            String forCheckUrl = "http://check.ptlogin2.qq.com/check?uin=" + QQ + "&appid=549000912&r=0.10299430438317358";
            RetData outcomeFromCheck = new RetData();
            CookieContainer cookieNull = new CookieContainer();
            HttpHelper helper = new HttpHelper();
            String receiveFromCheck;
            outcomeFromCheck = helper.GetHtml(forCheckUrl, cookieNull);
            receiveFromCheck = outcomeFromCheck.str;
            //Console.WriteLine(receiveFromCheck); //列印擷取的網頁内容

            //将驗證碼資訊的三部分存入數組
            int checkCodePosition = receiveFromCheck.IndexOf("(") + 1;
            String checkCode = receiveFromCheck.Substring(checkCodePosition, receiveFromCheck.LastIndexOf(")") - checkCodePosition);
            String[] checkNum = checkCode.Replace("'", "").Split(',');  //驗證碼數組

            if ("1".Equals(checkNum[0])) //判斷是否需要圖檔驗證碼
            {
                String forImageUrl = "http://captcha.qq.com/getimage?aid=549000912&uin=" + QQ + "&cap_cd=" + checkNum[1];
                Stream receiveStream = helper.GetStream(forImageUrl, outcomeFromCheck.cookie);
                //将擷取的圖檔驗證碼存入電腦
                System.Drawing.Image.FromStream(receiveStream).Save(@"d:/code.jpg");
                //Image img = Image.FromStream(receiveStream);
                Console.Write("請輸入驗證碼:");
                responseData = Console.ReadLine(); //将讀取到的圖檔驗證碼輸入到responseData中,由于是控制台應用
            }
            else //若不需圖檔驗證碼,驗證碼就等于checkNum[1]
            {
                responseData = checkNum[1];
            }

            //擷取加密密碼
            PasswordHelper helper2 = new PasswordHelper();
            pass = helper2.GetPassword(QQ, password, responseData);
            //Console.WriteLine(pass);

            /** *********************** 登入 *************************** */
            String forLoginUrl = "http://ptlogin2.qq.com/login?u=" + QQ + "&verifycode=" + responseData + "&p=" + pass + "&aid=549000912&u1=http%3A%2F%2Fqzs.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&h=1&t=1&g=1&from_ui=1&pt;
            RetData outcomeFromLogin = new RetData();
            outcomeFromLogin = helper.GetHtml(forLoginUrl, outcomeFromCheck.cookie);
            String revFromLogin = outcomeFromLogin.str;
            Console.WriteLine(revFromLogin); //列印登入後傳回資訊
            //至此登入成功

            //傳回個人空間首頁
            RetData outcomeFromIndexPage = new RetData();
            outcomeFromIndexPage = helper.GetHtml("http://user.qzone.qq.com/"+qq, outcomeFromLogin.cookie);
            //Console.WriteLine(outcomeFromIndexPage[0].str); //顯示首頁内容

            //将首頁存到txt裡
            StreamWriter swrite = new StreamWriter("E:/11.txt", false, Encoding.UTF8);
            swrite.WriteLine(outcomeFromIndexPage.str);
            swrite.Close();
            swrite.Dispose();

            //周遊CookieContainer

            //GetCookieContent showCookies = new GetCookieContent();
            //showCookies.ShowAllCookies(outcomeFromLogin[0].cookie);
        }
    }


    public struct RetData //網頁請求傳回對象
    {
        public string str;
        public CookieContainer cookie;
    }

}

           

完整源碼位址: http://download.csdn.net/detail/lai444132348/7266331