基于WebClient实现Http协议的Post与Get对网站进行模拟登陆和浏览实例
本文实例讲述了基于WebClient实现Http协议的Post与Get对网站进行模拟登陆和浏览的方法。分享给大家供大家参考。具体分析如下:
一、问题:
我们在一些场合经常需要模拟浏览器进行一些操作,比如模拟投票,或者模拟点击,或者Web游戏外挂。
二、解决方法:
C#中封装好的WebClient可以在某些要求不算高的场景实现Http的Post和Get。具体请见如下代码:
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Net;
namespaceTestCNM
{
publicclassWebClientExt
{
publicstringGet(stringUrl,stringReferer,EncodingEncoder,refstringCookieStr)
{
stringresult="";
WebClientmyClient=newWebClient();
myClient.Headers.Add("Accept:*/*");
myClient.Headers.Add("User-Agent:Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;Trident/4.0;.NET4.0E;.NET4.0C;InfoPath.2;.NETCLR2.0.50727;.NETCLR3.0.04506.648;.NETCLR3.5.21022;.NETCLR3.0.4506.2152;.NETCLR3.5.30729;SE2.XMetaSr1.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);
}
returnresult;
}
publicstringPost(stringUrl,stringReferer,EncodingEncoder,refstringCookieStr,stringData)
{
stringresult="";
WebClientmyClient=newWebClient();
myClient.Headers.Add("Accept:*/*");
myClient.Headers.Add("User-Agent:Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;Trident/4.0;.NET4.0E;.NET4.0C;InfoPath.2;.NETCLR2.0.50727;.NETCLR3.0.04506.648;.NETCLR3.5.21022;.NETCLR3.0.4506.2152;.NETCLR3.5.30729;SE2.XMetaSr1.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);
}
returnresult;
}
privatestringGetCookie(stringCookieStr)
{
stringresult="";
string[]myArray=CookieStr.Split(",");
if(myArray.Count()>0)
{
result="Cookie:";
foreach(varstrinmyArray)
{
string[]CookieArray=str.Split(";");
result+=CookieArray[0].Trim();
result+=";";
}
result=result.Substring(0,result.Length-2);
}
returnresult;
}
}
}
希望本文所述对大家的C#程序设计有所帮助。
相关文章
- Java|JavaScript 模拟钓鱼网站实例一[通俗易懂]
- mycat分片规则详解+实例演示
- python-time模块、sys模块、os模块以及大量实例详解编程语言
- 解决Oracle删除实例的方法(oracle删除实例)
- Python实例:小游戏20148
- Oracle实例创建指南:轻松实现实例创建(oracle怎么创建实例)
- Oracle实例切换:一步一步指引(切换oracle实例)
- 优化MySQL多实例:实现性能优化的新方法(mysql多实例性能)
- MySQL中wrap函数的用法和实例(mysql中wrap)
- 提高效率Oracle 共享池查询实例(oracle 共享池查询)
- JScript|Event]面向事件驱动的编程(二)--实例讲解:将span模拟成超连接
- .NET实现XML与DataTable互转的实例代码
- Jquery增加鼠标中间功能mousewheel的实例代码
- Python修改Excel数据的实例代码
- python模拟登录百度贴吧(百度贴吧登录)实例
- php魔术变量用法实例详解
- php常用字符串比较函数实例汇总
- Oracle中使用触发器(trigger)和序列(sequence)模拟实现自增列实例
- C#泛型Dictionary的用法实例详解