利用WebClient实现对Http协议的Post和Get对网站进行模拟登陆和浏览
来源:互联网 发布:淘宝客和直通车哪个好 编辑:程序博客网 时间:2024/05/18 01:55
我们在一些场合经常需要模拟浏览器进行一些操作,比如模拟投票,或者模拟点击,或者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
- 利用WebClient实现对Http协议的Post和Get对网站进行模拟登陆和浏览
- 利用WebClient实现对Http协议的Post和Get对网站进行模拟登陆和浏览
- 利用post实现对一些网站的自动登陆
- 关于安全的建议:对投入使用的XMLWeb Services禁用http-get和http-post协议
- HTTP协议规范的get和post对传递的参数的最大长度没有限制
- WebClient Post 和 Get
- ajax续2 对ajax的get和post进行封装和实现回调
- 对HTTP请求的Get和Post的一些理解
- 关于安全的建议:对投入使用的 XML Web Services 禁用 HTTP-GET 和 HTTP-POST 协议
- 关于安全的建议:对投入使用的 XML Web Services 禁用 HTTP-GET 和 HTTP-POST 协议
- 关于安全的建议:对投入使用的 XML Web Services 禁用 HTTP-GET 和 HTTP-POST 协议
- VC实现HTTP协议的GET和POST方法
- VC实现HTTP协议的GET和POST方法
- VC实现HTTP协议的GET和POST方法
- VC实现HTTP协议的GET和POST方法
- WebClient的get和post动态请求
- HTTP协议GET和POST的区别
- Http协议的get和post区别
- MPlayer
- JQuery事件
- 查看Oracle数据库中未绑定变量的SQL
- 拷贝构造函数
- hdu 4810 Wall Painting
- 利用WebClient实现对Http协议的Post和Get对网站进行模拟登陆和浏览
- 百万级PHP网站Poppen.de的架构分享
- 【分享】双12了,也没啥可送大家的,就送大家点商业源码吧!
- Linux内核编程接口函数
- 设计模式(一)之模板方法模式(Template Method Pattern)
- 删除重复的数据
- 解决maven与eclipse中@override出现must override a superclass method错误
- Spring3:如何在Spring3中配置并使用FreeMarker?
- curl默认超时(timeout)时间