나무 화망 판 다운로드 분석 및 다운로드 주소 대량 획득 실현 (하)
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);
}
}
}
, , , , , , 。
를 사용 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.