例如,1。在google上,怎样通过编程填好搜索栏的内容,然后点击search,得到google搜
索的结果。2。一些填表的网页,通过程序将表格的每一项都填好,然后点击submit,将结果交
上。3。或者hotmail自动登陆,等等感觉这几种都差不多,网上查了一整天,基本上都说用webclient 里面的uploadValues
,更新网页的name-value pair, 但是我试了不行,不知道点击 button的那个action
没做呢?应该怎么做呢?
索的结果。2。一些填表的网页,通过程序将表格的每一项都填好,然后点击submit,将结果交
上。3。或者hotmail自动登陆,等等感觉这几种都差不多,网上查了一整天,基本上都说用webclient 里面的uploadValues
,更新网页的name-value pair, 但是我试了不行,不知道点击 button的那个action
没做呢?应该怎么做呢?
http://badnewfish.spaces.msn.com/上面有参照哦!
比如,第一个问题可以直接发送对应的URL请求就可以了。
e.g 对于查询google,可以发送"http://www.google.com/search?hl=zh-CN&q=google&lr="
后面两个也是类似的。
关注有没有可以实现模拟点击某个按钮的方法
因为有些参数,例如密码,就不能这么传的
很简单的,比如要POST数据:public static string PostData(string url,string indata,CookieContainer myCookieContainer)
{Form1 xxx=new Form1();
xxx.xs();
string outdata="";
HttpWebRequest myHttpWebRequest=(HttpWebRequest)WebRequest.Create(url);
myHttpWebRequest.ContentType="application/x-www-form-urlencoded";
//string indata1=
myHttpWebRequest.ContentLength=indata.Length;
myHttpWebRequest.Method="POST";
myHttpWebRequest.CookieContainer=myCookieContainer;
Stream myRequestStream=myHttpWebRequest.GetRequestStream();
StreamWriter myStreamWriter=new StreamWriter(myRequestStream,Encoding.GetEncoding("gb2312"));
myStreamWriter.Write(indata);
myStreamWriter.Close();
myRequestStream.Close();
//
HttpWebResponse myHttpWebResponse=(HttpWebResponse)myHttpWebRequest.GetResponse();
myHttpWebResponse.Cookies=myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
Stream myResponseStream=myHttpWebResponse.GetResponseStream();
StreamReader myStreamReader=new StreamReader(myResponseStream,Encoding.GetEncoding("gb2312"));
outdata=myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
//outdata="ok";
return outdata;
}
====================
晕啊....我建议你先看看有关HTTP协议方面的东西,
按下一个按钮后,向网站提交某些东西,它要么是GET请求,要么是POST式的,
一般FORM都是用POST发向网站的,
你只要看看HTML源代码,找到都POST了些什么数据就行,
比如, 一个登录框, 有 一个文本框, 填用户名,叫 username, 一个密码框,叫password,一个提交按钮,
那么按下提交后,将会把用户名和密码发到服务器中去,如何实现这个"按下"呢?
很简单,你直接向那个FORM的action中指定的网页发送数据:username=zhangsan&password=123456就行,网站并不能分清楚接收到的数据是你点按钮发的,还是别的程序模拟的.到于那个CookieContainer,你可以看MSDN了解更详细的定义,这里不妨简单地记住,它用来保存网站发来的cookies,这样,你登录后,再请求其它页的数据时,把HttpWebRequest的CookieContainer设为这个cookieContainer,就能保证在网站上是一个Session,如果一些资源是必须登录后才能访问的,那这一点就很重要了.至于更高级的模拟,那么可以详细设定请求的Headers,比如,网站如果通过UrlReferrer来判定是否是盗链的话,你不妨这样设:
myHttpWebResponse.Referer="该网站的某页地址";
有的网站可能会通过检测浏览器类别来防止BOT程序访问,那么,通过设置UserAgent就可以伪装:
myHttpWebResponse.UserAgent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)"; //这个模拟的是IE6.0至于Get请求的,比Post的更简单,它少了一个再发送数据的步骤,要包含的数据都放在Url中了建议楼主花一两小时,看看相关资料,这个东西不难实现.