나무 화망 판 다운로드 분석 및 다운로드 주소 대량 획득 실현 (하)

13051 단어
분석 한 후에 우 리 는 이어서 코드 실현 을 해 보 자.
3. 획득 절차 실현
최근 에 마침 목어 가 자신의 블 로그 에 올 린 HTTP 클 라 이언 트 라 이브 러 리 를 보 았 습 니 다. 원생 Http WebRequest 를 괴 롭 히 던 제 가 바로 내 려 와 서 사 용 했 습 니 다. 효과 가 과연 좋 았 습 니 다. 그래서 본 프로젝트 의 HTTP 요청 은
FSLib. Network 라 이브 러 리 로 완성 합 니 다. 문법 차이 가 크 지 않 고 잘 모 르 는 부분 은 답장 할 수 있 습 니 다.
라 이브 러 리 를 추가 하면 nuget:

Install-Package network.fishlee.net

 

private async void GetDownLoadUrl(string fileUrl)
{
    //  HTTP   
    var client = new HttpClient();
    //       
    StringBuilder Result;
    //        
    byte[] bytes;
    //        
    string downPath = string.Empty;
    //            fileid
   int id = Convert.ToInt32(Extract(fileUrl, "\\d{7,}"));
    //          ymhwp   ,        ,    
    fileUrl = fileUrl.Replace("ymhwp", "yimuhe");
    //        
    var filecontext = client.Create<string>(HttpMethod.Get, fileUrl);
    //    
    await filecontext.SendTask();
    if (filecontext.IsValid())//      
    {
        //      fil down,          
        fileUrl = fileUrl.Replace("file", "down");
        //        
         var downcontext = client.Create<string>(HttpMethod.Get, fileUrl);
        await downcontext.SendTask();
        if (downcontext.IsValid())
        {
            //        0,         ,     
            int response = 0;
            while (response == 0)//
            {
                //         
                   var vcode = client.Create<Byte[]>(HttpMethod.Get, "http://www.yimuhe.com/n_downcode.php");
                await vcode.SendTask();
                if (vcode.IsValid())
                {
                    //                 
                    bytes = vcode.Result;
                    Result = new StringBuilder('\0', 256);
                    //     
                    GetVcodeFromBuffer(1, bytes, bytes.Length, Result);
                    //         
                    var resp = client.Create<string>(HttpMethod.Post,
                        "http://www.yimuhe.com/n_downcode.php", data: "action=yz&id=" + id + "&code=" + Result);
                    await resp.SendTask();
                    if (resp.IsValid())
                    {
                        //        、   1   0
                        response = Convert.ToInt32(resp.Result);
                    }
                }
            }
            //          
            var h1 = client.Create<string>(HttpMethod.Post,
                    "http://www.yimuhe.com/n_dd.php?file_id=" + id + "&ser=99", refer: "http://www.yimuhe.com/down-2546737.html", data: id.ToString());
            await h1.SendTask();
            if (h1.IsValid())
            {
                //  HtmlAgilityPack   html  ,      
                   HtmlDocument html = new HtmlDocument();
                html.LoadHtml(h1.Result);
                downPath = html.GetElementbyId("downs").Attributes["href"].Value;
                tBAfter.AppendText(downPath + NewLine);
            }
        }

    }
}

, , , 。 。 , 。 。

private async void GetDownLoadUrl()
{
    //
    while (_pathList.Count > 0 || _pathReady.Count > 0)
    {
        //         
        if (_pathList.Count > 0)
        {

            //         
            string fileUrl = _pathList[0];
            _pathList.RemoveAt(0);
            _pathReady.Add(fileUrl);
            //  HTTP   
            var client = new HttpClient();
            //       
            StringBuilder Result;
            //        
            byte[] bytes;
            //        
            string downPath = string.Empty;
            //            fileid
            int id = Convert.ToInt32(Extract(fileUrl, "\\d{7,}"));
            //          ymhwp   ,        ,    
            fileUrl = fileUrl.Replace("ymhwp", "yimuhe");
            //        
            var filecontext = client.Create<string>(HttpMethod.Get, fileUrl);
            //    
            await filecontext.SendTask();
            if (filecontext.IsValid())//      
            {
                //      fil down,          
                fileUrl = fileUrl.Replace("file", "down");
                //        
                var downcontext = client.Create<string>(HttpMethod.Get, fileUrl);
                await downcontext.SendTask();
                if (downcontext.IsValid())
                {
                    //        0,         ,     
                    int response = 0;
                    while (response == 0)//
                    {
                        //         
                        var vcode = client.Create<Byte[]>(HttpMethod.Get, "http://www.yimuhe.com/n_downcode.php");
                        await vcode.SendTask();
                        if (vcode.IsValid())
                        {
                            //                 
                            bytes = vcode.Result;
                            Result = new StringBuilder('\0', 256);
                            //     
                            GetVcodeFromBuffer(1, bytes, bytes.Length, Result);
                            //         
                            var resp = client.Create<string>(HttpMethod.Post,
                                "http://www.yimuhe.com/n_downcode.php", data: "action=yz&id=" + id + "&code=" + Result);
                            await resp.SendTask();
                            if (resp.IsValid())
                            {
                                //        、   1   0
                                response = Convert.ToInt32(resp.Result);
                            }
                        }
                    }
                    //          
                    var h1 = client.Create<string>(HttpMethod.Post,
                            "http://www.yimuhe.com/n_dd.php?file_id=" + id + "&ser=99", refer: "http://www.yimuhe.com/down-2546737.html", data: id.ToString());
                    await h1.SendTask();
                    if (h1.IsValid())
                    {
                        //  HtmlAgilityPack   html  ,      
                        HtmlDocument html = new HtmlDocument();
                        html.LoadHtml(h1.Result);
                        downPath = html.GetElementbyId("downs").Attributes["href"].Value;
                        //            
                        tBAfter.AppendText(downPath + NewLine);
                    }
                }
            }
            //  downPath  ,     
            if (string.IsNullOrWhiteSpace(downPath))
            {
                //         
                _pathList.Add(path);
            }
            //
            _pathReady.Remove(path);
        }
    }
}

, , , , , , 。

를 사용 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기