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

  • A+
所属分类:软件编程

我们在一些场合经常需要模拟浏览器进行一些操作,比如模拟投票,或者模拟点击,或者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;

}

}

}

 

作者 aofengdaxia

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: