腾讯的拍拍网今日特价秒杀器--拍拍抢拍精灵实现过程--核心代码 by wyw308 / http://blog.csdn.net/wyw308

Cookie欺骗 腾讯拍拍秒杀活动的验证码漏洞

请猛击下载:http://blog.csdn.net/wyw308/archive/2011/05/10/6408159.aspx

结合网络上前辈的宝贵经验,配合自己手动抓包分析。发现:

1:再进入倒计时时无论你点刷新有多快,其实页面都是5秒钟才给你提交一次。(可恶的拍拍,蒙了多少朴实鞋童,没分析之前按一到抢拍时间就狂点“刷新”按钮,现在才明白白瞎了)

2:腾讯的验证码来源于第三方服务器,其Set-Cookie并不是保存到本地的cookie,它是一个标志为httponly的cookie,只存储在标头。具体的验证码地址为专门服务器http://captcha.qq.com/getimage,因此可以进行cookie欺骗。

开发思路:

1:考虑人性化效果,利用webBrowser模拟页面登陆进入抢拍界面,利用webBrowser动态生成主要cookie及post数据元素。

2:手动提前获取多组验证码,保存到容器。

3:时间一到,利用提前获取的验证码,手工构造post数据以及cookie数据,利用httpwebrequest进行底层自动提交。

4:查看返回结果。

[这里只是给出了思路及核心实现代码,细节优化略]

请猛击下载:http://blog.csdn.net/wyw308/archive/2011/05/10/6408159.aspx

一:取宝贝的开始剩余时间:注意,拍拍网对于宝贝的开始抢拍时间有延时处理,比如倒计时到了3,2,1,娘的,他不开始,又重新回到了3,3,3。。。然后忽然就开始了,这里需要进行一些技术处理,如自己延时或者直接网上核对,但各有利弊,具体方法大家自己想。这里只给取倒计时by/ http://blog.csdn.net/wyw308

/// <summary>
        /// 返回倒计时毫秒by/ http://blog.csdn.net/wyw308
        /// </summary>
        /// <returns></returns>
        private double RemainTime(out string jsonstr)
        {
            Random ran = new Random();
            double c = ran.NextDouble();//随机处理by /http://blog.csdn.net/wyw308

string url = "http://ext.paipai.com/oneaday/comdynum?" + GetInputValue("ComdyId") + "&t=" + c.ToString();//宝贝抢拍上架地址by/ http://blog.csdn.net/wyw308

CookieContainer cc = new CookieContainer();

HttpHelper.NetworkDelay =0 ;
            HttpHelper.Encoding = Encoding.GetEncoding("GB2312");
            string result = HttpHelper.GetHtml(url, cc);
            result = HttpFunction.Regex_str(result, "{.+?}");
            jsonstr = result;
            Dictionary<string, object> aa = bym.Json.jsonFormat.Deserialize(result); //json格式化返回数据by /http://blog.csdn.net/wyw308
            string a = aa["UploadSec"].ToString();
            if (a != null && a != "")
                return double.Parse(a) * 1000;
            else
                return -1;
        }

二:验证码容器,将提前获取的验证码及cookie值保存到此,然后使用

/// <summary>
        /// 验证码cookie极点队容器 by/ http://blog.csdn.net/wyw308

///将提前获取的验证码及cookie值保存到此,然后使用

/// </summary>
        public class PPCode
        {

//by/ http://blog.csdn.net/wyw308

private string vcode;
            private string vcookie;
            public PPCode()
            {

}
            public PPCode(string VCODE, string VCOOKIE)
            {
                this.vcode = VCODE;
                this.vcookie = VCOOKIE;
            }
            public string VCODE
            {
                get
                {
                    return this.vcode;
                }
                set
                {
                    this.vcode = value;
                }
            }
            public string VCOOKIE
            {
                get
                {
                    return this.vcookie;
                }
                set
                {
                    this.vcookie = value;
                }
            }
        }

/// <summary>
        /// 访问验证码,取cookie及验证码值  by/ http://blog.csdn.net/wyw308
        /// </summary>
        private void GetPPcode()
        {
            // by/ http://blog.csdn.net/wyw308
            Random ran = new Random();
            double c = ran.NextDouble();
            HttpHelper.Referer = HttpFunction.UrlEnCode(webBrowser1.Url.ToString(), "GB2312").Replace("%3D", "=");//当前页面地址
            string url = "http://ptlogin2.paipai.com/getimage?aid=17000101&CacheTime=" + c;
            url = "http://captcha.qq.com/getimage?aid=17000101&CacheTime=" + c;//验证码的真实地址 by /http://blog.csdn.net/wyw308
            // url = "http://captcha.qq.com/getimage";
            CookieContainer ckcode = new CookieContainer();
            pictureBox1.Image = new Bitmap(HttpHelper.GetStream(url, HttpHelper.CookieContainer, out c_v));
            txt_code.Text = "";
            txt_code.Focus();
        }

三:根据页面动态手工构建post方法,这样比较灵活机动,操作起来交互效果好,by/ http://blog.csdn.net/wyw308

/// <summary>
        /// 动态构造post的数据  by/ http://blog.csdn.net/wyw308
        /// </summary>
        /// <param name="vcode"></param>
        /// <returns></returns>
        private string GetPostD()
        {
            // by/ http://blog.csdn.net/wyw308
            string pd = string.Empty;
            string PostInput = "ComdyId,clsId,Address1,Address,Region,AddressId,PostCode,Name,Mobile,Phone,BuyNum,shippingFeeItem,commodityattr,Encrypt,Rule,BcLevel,sendtype";
  //post的input数据列表,根据抓包和webbrorser分析得到,by /http://blog.csdn.net/wyw308

string[] s_input = PostInput.Split(new char[] { ',' });
            for (int i = 0; i < s_input.Length; i++)
            {
                if (i == 0)
                    pd = GetInputValue(s_input[i]);
                else
                    pd = pd + "&" + GetInputValue(s_input[i]);
            }

string PostSelect = "mProvince,mCity,mTown";//post的select数据列表by /http://blog.csdn.net/wyw308
            string[] s_select = PostSelect.Split(new char[] { ',' });
            for (int j = 0; j < s_select.Length; j++)
            {
                pd = pd + "&" + GetSelectValue(s_select[j]);
            }
            pd = pd + "&Remark=";

return pd;
        }
        /// <summary>
        /// 取页面input控件值 by/ http://blog.csdn.net/wyw308
        /// </summary>
        /// <param name="InputName"></param>
        /// <returns></returns>
        private string GetInputValue(string InputName)
        {
            // by/ http://blog.csdn.net/wyw308
            string str = string.Empty;
            HtmlDocument doc = webBrowser1.Document;
            HtmlElement ipt = doc.GetElementsByTagName("input")[InputName];

str = InputName + "=" + HttpFunction.UrlEnCode(ipt.GetAttribute("value"), "GB2312");
            return str;
        }
        /// <summary>
        /// 取页面select控件值  by/ http://blog.csdn.net/wyw308
        /// </summary>
        /// <param name="InputName"></param>
        /// <returns></returns>
        private string GetSelectValue(string InputName)
        {
            // by/ http://blog.csdn.net/wyw308
            string str = string.Empty;
            HtmlDocument doc = webBrowser1.Document;

HtmlElement sels = doc.GetElementsByTagName("select")[InputName];
            HtmlElementCollection opts = sels.Children;//取页面select的有效值时坎坷了老半天,立标留念by /http://blog.csdn.net/wyw308
            for (int i = 0; i < opts.Count; i++)
            {
                if (opts[i].OuterHtml.Contains("selected"))
                    str = InputName + "=" + opts[i].GetAttribute("value");
            }
            return str;
        }

四:动态构建提交需要的cookie by/ http://blog.csdn.net/wyw308

/// <summary>
        /// 动态构建cookie容器  by/ http://blog.csdn.net/wyw308
        /// </summary>
        /// <param name="ck_str"></param>
        /// <param name="domain"></param>
        /// <returns></returns>

public static CookieContainer GetCookieFromStr(string ck_str, string domain)
        {

by/ http://blog.csdn.net/wyw308

CookieContainer myCookieContainer = new CookieContainer();
            string cookieStr = ck_str;
            string[] cookstr = cookieStr.Split(';');
            foreach (string str in cookstr)
            {
                string[] cookieNameValue = str.Split('=');
                if (cookieNameValue.Length > 1 )
                {
                    Cookie ck = new Cookie(cookieNameValue[0].Trim().ToString(), str.Substring(cookieNameValue[0].Trim().ToString().Length + 2));//网上一个写好的方法,做了调整by/ http://blog.csdn.net/wyw308
                  
                    ck.Domain = domain;
                    ck.Path = "/";
              
                    myCookieContainer.Add(ck);
                }

}
            return myCookieContainer;
        }

五:自动通过底层提交post及cookie数据,模拟抢拍。

/// <summary>
        /// 动态构建post及cookie,自动提交
        ///  by/ http://blog.csdn.net/wyw308
        /// </summary>
        private void PostToPai()
        {
            // by/ http://blog.csdn.net/wyw308
            int r_q = 0, r_succ = 0;
            bool qp_ok = false;

string domain = "ext.paipai.com";//cookie的域名,一定要写对,by /http://blog.csdn.net/wyw308

string url = HttpFunction.UrlEnCode(webBrowser1.Url.ToString(), "GB2312").Replace("%3D", "=");//当前页面地址

HtmlElement hl = webBrowser1.Document.GetElementById("fixupformid");
            string PostUrl = string.Format(hl.GetAttribute("action"));//得到提交的地址

//动态构建提交需要的cookie值 by/ http://blog.csdn.net/wyw308
            string ck_str = webBrowser1.Document.Cookie;//页面数据生成的cookie值
            string ck1 = "";
            string ck2 = "";
            int ver_num = ck_str.IndexOf("verifysession");//截取无用的验证码cookie串,用提前获取的验证码替换
            if (ver_num != -1)
            {
                ck1 = ck_str.Substring(0, ver_num);
                ck2 = ck_str.Substring(ver_num + 98);
            }
            else
                ck1 = ck_str;

string postd = GetPostD();//得到post数据by/ http://blog.csdn.net/wyw308

for (int i = 0; i < pp.Count; i++)//循环已经提前获取的验证码及cookie  by/ http://blog.csdn.net/wyw308
            {
                if (i == 0 && !ckb_sg.Checked)//第一次提交随机延时
                {
                    WriMsg("开始抢拍了....");
                    //Random r = new Random();
                    int tys = int.Parse(txt_ys.Text.Trim());
                    //int ys = r.Next(tys, 2 * tys + 1000);

WriMsg("延时" + tys.ToString() + "毫秒...");
                    Thread.Sleep(tys);
                }
                ck_str = ck1 + pp[i].VCOOKIE + ck2;
                CookieContainer PostCookie = new CookieContainer();
                PostCookie = HttpWeb.GetCookieFromStr(ck_str, domain);//构造最终提交的cookieby/ http://blog.csdn.net/wyw308

string postdata = string.Format(postd + "&verifycode=" + pp[i].VCODE);//构造最终post数据by/ http://blog.csdn.net/wyw308

HttpHelper.Encoding = Encoding.GetEncoding("GB2312");
                if (ckb_sg.Checked || i == 0)
                    HttpHelper.NetworkDelay = 0;
                else
                    HttpHelper.NetworkDelay = int.Parse(txt_jg.Text.Trim());//发送请求随机间隔时间
                HttpHelper.Referer = HttpFunction.UrlEnCode(url, "GB2312");

WriMsg("正在发送请求...");

r_q = r_q + 1;
                if (string.IsNullOrEmpty(postdata))//记录异常,由于拍拍反限制因此有莫名错误,调试时使用,by /http://blog.csdn.net/wyw308
                {
                    string errmsg = i.ToString() + "#Err#PostUrl:/r/n" + url + "/r/n" + PostUrl + "/r/n" + pp[i].VCODE + "#" + pp[i].VCOOKIE + "/r/n/r/nPostData:/r/n" + postdata + "/r/n/r/nCookie:/r/n" + ck_str + "/r/n/r/nResult:/r/n";
                    HttpPaipai.Msg(HttpFunction.UrlDeCode(errmsg, "GB2312"));
                    return;
                }
                string result = HttpHelper.GetHtml(PostUrl, postdata, true, PostCookie);//最终提交请求by /http://blog.csdn.net/wyw308
                result = HttpFunction.NoHTML(HttpFunction.Regex_goup_str(result, "<h5>.+?</h5>|<h5 id=/"errorMsg/">.+?</h5>|ErrMsg:/".+?/",")).Replace(",,", "");
                if (result.Contains("恭喜您"))
                {
                    r_succ = r_succ + 1;
                    if (r_succ >= int.Parse(txt_succ.Text.Trim()))
                        qp_ok = true;
                }
               
                tsl4.Text = "请求:" + r_q.ToString() + ";成功:" + r_succ.ToString();
                WriMsg(result);
              
                //记录日志,方便调试用
                //string msg = "PostUrl:/r/n" + url + "/r/n" + PostUrl + "/r/n" + pp[i].VCODE + "#" + pp[i].VCOOKIE + "/r/n/r/nPostData:/r/n" + postdata + "/r/n/r/nCookie:/r/n" + HttpWeb.GetCookieFromCookieContainer(PostCookie, "http://" + domain) + "/r/n/r/nResult:/r/n" + result;
                //HttpPaipai.Msg(HttpFunction.UrlDeCode(msg, "GB2312"));

if (qp_ok)
                {
                    pp.Clear();
                    label3.Text = pp.Count.ToString();
                  
                    return;
                }
            }
            //抢拍结束后如果没有抢到立即转到手工模式,补救 by/ http://blog.csdn.net/wyw308
            if (!qp_ok)
            {
                WriMsg("本轮运气不佳,请输入验证码快速补抢...");
                pp.Clear();
                label3.Text = pp.Count.ToString();
                ckb_sg.Checked = true;
                GetPPcode();
            }
        }

软件下载:http://blog.csdn.net/wyw308/archive/2011/05/10/6408159.aspx

用到的httphelp类(感谢原作者),这里做了些细微调整by/ http://blog.csdn.net/wyw308:

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;
using System.Threading;

namespace bym
{
    public class HttpHelper
    {
        #region 私有变量
        private static CookieContainer cc = new CookieContainer();
        private static string contentType = "application/x-www-form-urlencoded";
        private static string accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-silverlight, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-silverlight-2-b1, */*";
        private static string userAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";
        private static Encoding encoding = Encoding.GetEncoding("utf-8");
        private static int delay = 1000;//延迟访问防止连续访问被发现 3秒
        private static int maxTry =2;
        private static int currentTry = 0;
        private static string referer;
        #endregion

#region 属性
        /// <summary></summary>
        /// Cookie容器
        ///
        public static CookieContainer CookieContainer
        {
            get
            {
                return cc;
            }
           
        }

/// <summary></summary>
        /// 获取网页源码时使用的编码
        ///
        /// <value></value>
        public static Encoding Encoding
        {
            get
            {
                return encoding;
            }
            set
            {
                encoding = value;
            }
        }

public static int NetworkDelay
        {
            get
            {
                Random r = new Random();
                return (r.Next(delay , delay * 2));
            }
            set
            {
                delay = value;
            }
        }

public static int MaxTry
        {
            get
            {
                return maxTry;
            }
            set
            {
                maxTry = value;
            }
        }
        public static string Referer
        {
            get
            {
                return referer;
            }
            set
            {
                referer = value;
            }
        }
        #endregion

#region 公共方法
        /// <summary></summary>
        /// 获取指定页面的HTML代码
        ///
        /// <param name="url">指定页面的路径
        /// <param name="postData">回发的数据
        /// <param name="isPost">是否以post方式发送请求
        /// <param name="cookieCollection">Cookie集合
        /// <returns></returns>
        public static string GetHtml(string url, string postData, bool isPost, CookieContainer cookieContainer)
        {
            int err_num = 0;
            if (string.IsNullOrEmpty(postData))
            {
                err_num = 1;
               // return GetHtml(url, cookieContainer);
            }

Thread.Sleep(NetworkDelay);//延迟访问

currentTry++;

HttpWebRequest httpWebRequest = null;
            HttpWebResponse httpWebResponse = null;
            try
            {
                byte[] byteRequest = Encoding.Default.GetBytes(postData);
                err_num = 2;

httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
                err_num = 3;
                httpWebRequest.CookieContainer = cookieContainer;
                err_num = 4;
                httpWebRequest.ContentType = contentType;
                err_num = 5;
                httpWebRequest.ServicePoint.ConnectionLimit = maxTry;
                err_num = 6;
                httpWebRequest.Referer = referer;
                err_num = 7;
                httpWebRequest.Accept = accept;
                err_num = 7;
                httpWebRequest.UserAgent = userAgent;
                err_num = 8;
                httpWebRequest.Method = isPost ? "POST" : "GET";
                err_num = 8;
                httpWebRequest.ContentLength = byteRequest.Length;
                err_num = 9;
                Stream stream = httpWebRequest.GetRequestStream();
                err_num = 10;
                stream.Write(byteRequest, 0, byteRequest.Length);
                err_num = 11;
                stream.Close();
                err_num = 12;
                httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                err_num = 13;
                Stream responseStream = httpWebResponse.GetResponseStream();
                err_num = 14;
                StreamReader streamReader = new StreamReader(responseStream, encoding);
                err_num = 15;
                string html = streamReader.ReadToEnd();
                err_num = 16;
                streamReader.Close();
                err_num = 17;
                responseStream.Close();
                err_num = 18;
                currentTry = 0;
                err_num = 19;
                httpWebRequest.Abort();
                err_num = 20;
                httpWebResponse.Close();
                err_num = 21;
                return html;
               
            }
            catch (Exception e)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(DateTime.Now.ToString("HH:mm:ss ") + e.Message);
                Console.ForegroundColor = ConsoleColor.White;

HttpWeb.WriteLog(err_num.ToString()+"#"+e.Message, "GetHtmlErr.log");
               
                if (currentTry <= maxTry)
                {
                    GetHtml(url, postData, isPost, cookieContainer);
                }
                currentTry--;

if (httpWebRequest != null)
                {
                    httpWebRequest.Abort();
                } if (httpWebResponse != null)
                {
                    httpWebResponse.Close();
                }
                return string.Empty;
            }
        }

/// <summary></summary>
        /// 获取指定页面的HTML代码
        ///
        /// <param name="url">指定页面的路径
        /// <param name="cookieCollection">Cookie集合
        /// <returns></returns>
        public static string GetHtml(string url, CookieContainer cookieContainer)
        {
            int a = 0;
            Thread.Sleep(NetworkDelay);
            a = 1;
            currentTry++;
            HttpWebRequest httpWebRequest = null;
            a = 2;
            HttpWebResponse httpWebResponse = null;
            try
            {
                a = 3;
                httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
                a = 4;
                httpWebRequest.CookieContainer = cookieContainer;
                a = 5;
                httpWebRequest.ContentType = contentType;
                a = 6;
                httpWebRequest.ServicePoint.ConnectionLimit = maxTry;
                a = 7;
                httpWebRequest.Referer = referer;
                a = 8;
                httpWebRequest.Accept = accept;
                a = 9;
                httpWebRequest.UserAgent = userAgent;
                a = 10;
                httpWebRequest.Method = "GET";
                a = 11;
                httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                a = 12;
                Stream responseStream = httpWebResponse.GetResponseStream();
                a = 13;
                StreamReader streamReader = new StreamReader(responseStream, encoding);
                a = 14;
                string html = streamReader.ReadToEnd();
                a = 15;
                streamReader.Close();
                a = 16;
                responseStream.Close();
                a = 17;
                currentTry--;

httpWebRequest.Abort();
                a = 18;
                httpWebResponse.Close();
                a = 19;
                return html;
            }
            catch (Exception e)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(DateTime.Now.ToString("HH:mm:ss ") + e.Message);
                Console.ForegroundColor = ConsoleColor.White;

HttpWeb.WriteLog(a.ToString()+"#"+e.Message, "GetHtml2.log");

if (currentTry <= maxTry)
                {
                    GetHtml(url, cookieContainer);
                }

currentTry--;

if (httpWebRequest != null)
                {
                    httpWebRequest.Abort();
                } if (httpWebResponse != null)
                {
                    httpWebResponse.Close();
                }
                return string.Empty;
            }
        }
      
        /// <summary></summary>
        /// 获取指定页面的HTML代码
        ///
        /// <param name="url">指定页面的路径
        /// <returns></returns>
        public static string GetHtml(string url)
        {
            return GetHtml(url, cc);
        }

/// <summary></summary>
        /// 获取指定页面的HTML代码
        ///
        /// <param name="url">指定页面的路径
        /// <param name="postData">回发的数据
        /// <param name="isPost">是否以post方式发送请求
        /// <returns></returns>
        public static string GetHtml(string url, string postData, bool isPost)
        {
            return GetHtml(url, postData, isPost, cc);
        }

/// <summary></summary>
        /// 获取指定页面的Stream
        ///
        /// <param name="url">指定页面的路径
        /// <param name="postData">回发的数据
        /// <param name="isPost">是否以post方式发送请求
        /// <param name="cookieCollection">Cookie集合
        /// <returns></returns>
        public static Stream GetStream(string url, CookieContainer cookieContainer, out string ck_vccode)
        {
            //Thread.Sleep(delay);
            int j = 0;
            currentTry++;
            HttpWebRequest httpWebRequest = null;
            HttpWebResponse httpWebResponse = null;

try
            {

httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
                j =1;
                j = 2;
                httpWebRequest.CookieContainer = cookieContainer;
                httpWebRequest.ContentType = contentType;
                j = 3;
                httpWebRequest.ServicePoint.ConnectionLimit = maxTry;
                j = 4;
                httpWebRequest.Referer = url;
                j = 5;
                httpWebRequest.Accept = accept;
                j = 6;
                httpWebRequest.UserAgent = userAgent;
                j = 7;
                httpWebRequest.Method = "GET";
                j = 8;

httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                j = 9;
                Stream responseStream = httpWebResponse.GetResponseStream();
                j = 10;
               ck_vccode = httpWebResponse.Headers["Set-Cookie"];
                j =11;
               ck_vccode = ck_vccode.Substring(0, ck_vccode.IndexOf("PATH") - 1);
                currentTry--;
                j = 12;
                //httpWebRequest.Abort();
                //httpWebResponse.Close();

return responseStream;
            }
            catch (Exception e)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(DateTime.Now.ToString("HH:mm:ss ") + e.Message);
                Console.ForegroundColor = ConsoleColor.White;

HttpWeb.WriteLog(j.ToString() + "#" + e.Message, "GetStreamErr.log");

if (currentTry <= maxTry)
                {
                    GetHtml(url, cookieContainer);
                }

currentTry--;

if (httpWebRequest != null)
                {
                    httpWebRequest.Abort();
                } if (httpWebResponse != null)
                {
                    httpWebResponse.Close();
                }
                ck_vccode="";
                return null;
            }
        }

#endregion

//CookieContainer co = new CookieContainer();//设置cookie
         //   co.SetCookies(new Uri(server), cookie);//SERVER 抓包里的host
    }
}

用c#实现拍拍抢拍精灵实现过程--核心代码--腾讯qq拍拍网秒杀器代码【欢迎转载】相关推荐

  1. 拍拍抢拍精灵V2.1正式版--腾讯拍拍秒杀器

    20111024取消了注册机制,免费使用,工作太忙,有问题大家看帮助. 请猛击下载 :http://www.crsky.com/soft/26840.html 拍拍抢拍精灵v2.1源代码,写的很粗糙, ...

  2. 拍拍抢拍精灵 --腾讯拍拍秒杀器--截图

    ------------------------------------华丽丽的分割线----------------------------------------------  

  3. 设置计算机在睡眠状态下能共享,使用wifi共享精灵的过程中电脑会自动休眠锁屏的解决方法...

    我在使用wifi共享精灵的过程中经常是这样做:电脑一直开着,然后自己躺在床上用手机看小说.看韩剧.但几十分钟之后,电脑会因为长期没人操作而自动休眠,从而导致wifi连接不上,要是每次重启软件又太费事, ...

  4. 嵌入式Linux——分析u-boot运行过程(3):u-boot第三阶段代码

    简介: 本文主要介绍在u-boot-1.1.6中代码的运行过程,以此来了解在u-boot中如何实现引导并启动内核.这里我们主要介绍u-boot第三阶段的代码.而第三阶段的代码主要讲解的是在u-boot ...

  5. “按键精灵”教你自动免费刷出QQ靓号

    "按键精灵"教你自动免费刷出QQ靓号 现在的QQ号可不好申请了!往往不得不反复点击"上一步"."下一步"向服务器申请,按上N次也未必能申请成 ...

  6. vim使用过程中的以前的消息和错误消息代码介绍

    本文包含一个 Vim 产生的消息和错误信息按字母排序的列表.如果你不理解消息的含义,可以在这里查找.不过,该列表不一定完整.部分翻译可能不是很准确,敬请谅解,如果你想添加可以在本文留言讨论. 本文约定 ...

  7. 使用精灵标注助手制作yolov3训练数据集(附解析xml代码)

    一.标注数据 1.将获取图片存放到同一个文件夹下 本次标注数据供分为4类(person,dog,tiger,car),由于数据较少所以放在一个文件夹,数据较多时可以选择存放在多个文件夹 2.打开精灵标 ...

  8. python上一行的代码打错了怎么办_写Python代码过程中碰到各种错误异常要怎么样去处理?...

    错误异常即便Python程序的语法是正确的,在程序运行的过程中,也可能发生错误.运行期检测到的错误被称为异常. 如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原因. ...

  9. vue打包代码反编译_Android逆向反编译代码注入APK过程思路分析

    一.名称解释 逆向 - 是一种产品设计技术再现过程,从可运行的程序系统出发,运用解 密.反汇编.系统分析等多种计算机技术,对软件的结构.流程.算法. 代码等进行逆向拆解和分析,推导出软件产品的源代码. ...

最新文章

  1. objective-c 中字符串与日期相互转换
  2. 计算机系统结构相关技术,计算机系统结构第1章技术总结.pptx
  3. SAP CRM WebClient UI和Hybris的controller是如何被调用的
  4. 【每日一题】7月6日精讲—平衡二叉树
  5. PyTorch实现自由的数据读取
  6. 陈常青老师的讲座的笔记
  7. (zhuan) Building Convolutional Neural Networks with Tensorflow
  8. 音频编解码-speex库的使用方法
  9. android的listview单项中包含RadioButton,实现RadioButton的单选显示效果
  10. Redis的持久化机制:RDB和AOF
  11. Compile LLVM+CLANG 4.0.1 for RHEL6
  12. 《21天学通Java(第6版)》—— 1.2 面向对象编程
  13. Linux 网站推荐
  14. 问卷调查系统 简易版
  15. 大话2服务器丢失怎么修复,我玩大话2,现在服务器找不见了,怎么办?
  16. 均匀分布取某一点概率_统计概率思维
  17. html博客音乐播放器代码大全,一款百度FLASH音乐播放器代码
  18. 强智科技教务系统学科成绩c语言,湖南强智科技教务系统python模拟登录并爬取成绩(财院)...
  19. python中time是什么意思_python中time的基本介绍
  20. 充电速度公式_充电电池充电时间计算方法

热门文章

  1. 缺省波特率57600
  2. python语言的变量类型_Python语言变量类型基础学习
  3. 蓝牙键盘连接——输入pin码
  4. matlab乖离率计算,乖离率指标详细说明计算
  5. 【Web Development - AnnihilateSword】02 - Introduction to HTML
  6. 上天、入水、下地,清洁机器人蓝海有多大?
  7. 【Vue如何让v-show也有动画效果】
  8. Leetcode初级算法
  9. css动画实现跳动的小人
  10. java往字符串数组追加新数据