语言吧技术网欢迎您投稿,程序员的世界我懂你!=====>点此登录投搞
当前位置: 首页 >>ASP.NET >>ASP.NET实战 >>C#发送HTTP请求自动登录Web网站

C#发送HTTP请求自动登录Web网站

2019/3/25 17:16:43 0人评论 113次 作者:TheOneGIS

下面说说实现的方法,首先发送HTTP请求登陆到系统,你得利用浏览器自带工具(火狐、IE、Chrome都行)查看表单提交的action给谁?Get或者Post请求,参数等等信息。然后得到服务器发你给的Cookie,再发送取票请求,发送的时候要注意带上你的Cookie,否则服务器会认为你没有登录。如果你…

版权声明:本文为博主原创文章,转载请注明原文出处! https://blog.csdn.net/T_27080901/article/details/39522327

研究生期间不可少的一项任务——报账,今天8点准时点击财务取票系统(8点开放取票)结果取到了100号,每天财务(具体财务几科就不多说了)差不多就能处理30个左右的号吧!连续好几天了,报个帐我容易吗!哎,不说了,说多了都是泪。只想好好搞研究,争取顺利离开武大。好好加油吧!


下面说说实现的方法,首先发送HTTP请求登陆到系统,你得利用浏览器自带工具(火狐、IE、Chrome都行)查看表单提交的action给谁?Get或者Post请求,参数等等信息。然后得到服务器发你给的Cookie,再发送取票请求,发送的时候要注意带上你的Cookie,否则服务器会认为你没有登录。如果你有好多人密码和账户,则可以利用线程同时多人进行取票。


下面贴出代码,其中里面有些编码我是更加武大财务网站调整的,你要根据你的情况进行调整,否则返回的值会乱码。


(下面的例子中主要是HTTP Get和Post方法,我只用到了Post方法,因为我这边的网站提交都是以Post方法进行提交的)


using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Net;

using System.Text;


namespace WebNET

{

class LoginWeb

{

static void Main(string[] args)

{

string loginUrl = "http://202.114.74.218/web3/login_gr.aspx";

string loginData = "uid=******&pwd=******";

CookieContainer cookies = new CookieContainer();

string loginResult = LoginWeb.HttpPost(loginUrl, loginData, cookies);

Console.WriteLine("这是登陆后的界面信息!");

Console.WriteLine(loginResult);


//预约明天的票

string checkUrl =

"http://202.114.74.218/web3/baobiao/Queue/QueueSystem.aspx";

string checkData = "ImageButton2.x=167&ImageButton2.y=20&deptID=3&dateType=NextDday&timeType=AM";

string checkResult = LoginWeb.HttpPost(checkUrl, checkData, cookies);

Console.WriteLine("这是取票结果");

Console.WriteLine(checkResult);

Console.ReadKey();

}


/************************************************************************/

/* Http Get请求

* url为请求的网址

* data为GET请求参数(格式为:key1=value1&key2=value2)

*/

/************************************************************************/

public static string HttpGet(string url, string data)

{

url = url + "?" + data;

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

request.Method = "GET";

request.ContentType = "text/hmtl;charset=UTF-8";

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

Stream responseStream = response.GetResponseStream();

StreamReader streamReader = new StreamReader(responseStream);

string result = streamReader.ReadToEnd();

streamReader.Close();

responseStream.Close();

return result;

}


/************************************************************************/

/* Http Post 请求

* url为请求的网址

* data为POST请求参数(格式为:key1=value1&key2=value2)

* cookie为存储Cookie的容器CookieContainer

*/

/************************************************************************/

public static string HttpPost(string url, string data, CookieContainer cookies)

{

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

request.Method = "POST";

//FORM元素的enctype属性指定了表单数据向服务器提交时所采用的编码类型,默认的缺省值是“application/x-www-form-urlencoded”

request.ContentType = "application/x-www-form-urlencoded";

request.ContentLength = Encoding.UTF8.GetByteCount(data);

request.CookieContainer = cookies;

Stream requetStream = request.GetRequestStream();

StreamWriter streamWriter = new StreamWriter(requetStream);

streamWriter.Write(data);

streamWriter.Close();


request.CookieContainer = cookies;


HttpWebResponse response = (HttpWebResponse)request.GetResponse();

response.Cookies = cookies.GetCookies(response.ResponseUri);

cookies.Add(response.Cookies);

Stream responseStream = response.GetResponseStream();

StreamReader streamReader = new StreamReader(responseStream, Encoding.GetEncoding("GB2312"));

string result = streamReader.ReadToEnd();

streamReader.Close();

responseStream.Close();

return result;

}

}

}



--------------------- 

作者:TheOneGIS 

来源:CSDN 

原文:https://blog.csdn.net/theonegis/article/details/39522327 

版权声明:本文为博主原创文章,转载请附上博文链接!

相关文章

CopyRight:2007-2018 语言吧 备案ICP:湘ICP备09009000号-4 http://www.yuyanba.com
分享按钮