您的位置:首页 > 理论基础 > 计算机网络

利用WebClient实现对Http协议的Post和Get对网站进行模拟登陆和浏览

2014-11-12 14:46 351 查看
我们在一些场合经常需要模拟浏览器进行一些操作,比如模拟投票,或者模拟点击,或者Web游戏外挂。而C#中封装好的WebClient可以在某些要求不算搞的场景实现Http的Post和Get。具体请见代码:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Net;

namespace TestCNM

{

public class WebClientExt

{

public string Get(string Url,string Referer, Encoding Encoder,ref string CookieStr)

{

string result = "";

WebClient myClient = new WebClient();

myClient.Headers.Add("Accept: */*");

myClient.Headers.Add("User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET4.0E; .NET4.0C; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; SE 2.X MetaSr 1.0)");

myClient.Headers.Add("Accept-Language: zh-cn");

myClient.Headers.Add("Content-Type: multipart/form-data");

myClient.Headers.Add("Accept-Encoding: gzip, deflate");

myClient.Headers.Add("Cache-Control: no-cache");

if (CookieStr != "")

{

myClient.Headers.Add(CookieStr);

}

myClient.Encoding = Encoder;

result = myClient.DownloadString(Url);

if (CookieStr == "")

{

CookieStr = myClient.ResponseHeaders["Set-Cookie"].ToString();

CookieStr = GetCookie(CookieStr);

}

return result;

}

public string Post(string Url, string Referer, Encoding Encoder, ref string CookieStr, string Data)

{

string result = "";

WebClient myClient = new WebClient();

myClient.Headers.Add("Accept: */*");

myClient.Headers.Add("User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET4.0E; .NET4.0C; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; SE 2.X MetaSr 1.0)");

myClient.Headers.Add("Accept-Language: zh-cn");

myClient.Headers.Add("Content-Type: multipart/form-data");

myClient.Headers.Add("Accept-Encoding: gzip, deflate");

myClient.Headers.Add("Cache-Control: no-cache");

if (CookieStr != "")

{

myClient.Headers.Add(CookieStr);

}

myClient.Encoding = Encoder;

result = myClient.UploadString(Url, Data);

if (CookieStr == "")

{

CookieStr = myClient.ResponseHeaders["Set-Cookie"].ToString();

CookieStr = GetCookie(CookieStr);

}

return result;

}

private string GetCookie(string CookieStr)

{

string result = "";

string[] myArray = CookieStr.Split(',');

if (myArray.Count() > 0)

{

result = "Cookie: ";

foreach (var str in myArray)

{

string[] CookieArray = str.Split(';');

result += CookieArray[0].Trim();

result += "; ";

}

result = result.Substring(0, result.Length - 2);

}

return result;

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: