中易网

C#模拟提交表单,已登陆的用户cookie传送,返回到登陆页面

答案:2  悬赏:30  
解决时间 2021-03-01 03:23
string strcok = "cookie";
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
CookieContainer cookie = new CookieContainer();
request.CookieContainer=cookie;//如果用不到Cookie,删去即可
//以下是发送的http头,随便加,其中referer挺重要的,有些网站会根据这个来反盗链
request.Referer = referer;
request.Accept = "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
request.Headers["Accept-Language"] = "zh-CN,zh;q=0.8";
request.Headers["Accept-Charset"] = "GBK,utf-8;q=0.7,*;q=0.3";
request.Headers["Cookie"] = strcok;
request.UserAgent = "User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36";

request.KeepAlive = true;
//上面的http头看情况而定,但是下面俩必须加
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";

string postString = "companyName=阔海玻璃";//这里即为传递的参数,可以用工具抓包分析,也可以自己分析,主要是form里面每一个name都要加进来
byte[] postData = Encoding.UTF8.GetBytes(postString);//编码,尤其是汉字,事先要看下抓取网页的编码方式

Encoding encoding = Encoding.UTF8;//根据网站的编码自定义
//byte[] postData = encoding.GetBytes(postDataStr);//postDataStr即为发送的数据,格式还是和上次说的一样
request.ContentLength = postData.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(postData, 0, postData.Length);

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

Stream responseStream = response.GetResponseStream();
//如果http头中接受gzip的话,这里就要判断是否为有压缩,有的话,直接解压缩即可
if (response.Headers["Content-Encoding"] != null && response.Headers["Content-Encoding"].ToLower().Contains("gzip"))
{
responseStream = new GZipStream(responseStream, CompressionMode.Decompress);
}

StreamReader streamReader = new StreamReader(responseStream, encoding);
string ck = response.Headers.Get("Set-Cookie");
string retString = streamReader.ReadToEnd();
最佳答案
你代码不都写了吗。还要干什么啊。无非就是分析下retString里的内容
全部回答
你说呢...
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
贵南路(南)地址有知道的么?有点事想过去
商务跟单是做什么
关于液体压强,下列说法不正确的是(  )A
万尾金滩和京岛旅游渡假区是同一个地方吗
口留香灌汤包这个地址在什么地方,我要处理点
上市公司原始股东最多多少人
文秘的职责是什么??
2∧15 -1怎么算
很悲的网名
徽商银行旌德支行这个地址在什么地方,我要处
望成图文这个地址在什么地方,我要处理点事
外国品牌进入中国市场是不是很容易让国民接受
只移动一根火柴 使等式成立 速度啊 求解??
宁夏红粉佳荣酒庄榆林旗舰店这个地址在什么地
联想x210i笔记本支持什么内存
推荐资讯
斗牛的特点
一般法院查封房产出租人还能营业吗?
喝酒后怎样避开交警的检测?
余额宝对存入资金有限额吗
金蓓蕾艺术中心(开封尉氏县)地址在什么地方,
交通银行哈尔滨新兴支行这个地址在什么地方,
西黄埠村村我想知道这个在什么地方
请打开知道app回答是什么意思,如何打开?
人生难免有错过,你是愿意错过一个你爱的人?
6米的清明上河图多少钱
现在的男人都喜欢拿马云,李嘉诚说事,为什么
陕西京齿科器材有限公司我想知道这个在什么地
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?