c# 模拟http post 带cookie

下面的代码是自动向cnblogs中的小组发帖.........注意小组ID,主题ID,小组类型
首先采用firebug分析到发帖时的post地址以及参数,其中在headers中包含了cookies,把cookies复制下来放到d:\\cookie.txt中,以分号隔开(a=b;c=d;),这些cookie中包含有身份验证信息
之后读取文件d:\\data.txt,每1024个字节为一帖自动发送
 

代码

 

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->using System;
using System.Collections.Generic;
using System.Web;

using System.Xml;
using System.IO;
using System.Text;
using System.Collections;

using System.Net;
using System.Threading;
namespace Haier1
{
class Program
{
public static Hashtable getCookieMap()
{
string sPath = "d:\\cookie.txt";
Hashtable maps = new Hashtable();
FileStream fs = new FileStream(sPath, FileMode.Open);
StreamReader rf = new StreamReader(fs, System.Text.Encoding.GetEncoding("gb2312"));
string hm = "";
try
{
do
{

hm = rf.ReadLine();


} while (!rf.EndOfStream);
Console.WriteLine(hm);
String[] s1 = hm.Split(';');
// Console.Write(s1.Length);
for (int i = 0; i < s1.Length; i++)
{
int pos = s1[i].IndexOf('=');
String value = s1[i].Substring(pos + 1);
String name = s1[i].Substring(0, pos);
name = name.Trim();
//Console.WriteLine(name + ":" +value);
maps.Add(name, value);
}
}
catch (Exception e)
{
Console.WriteLine("读取文件错误:" + e.Message);

return null;

}
fs.Close();
rf.Close();
return maps;
}
public static bool test(string str, Hashtable maps)
{
bool ok = false;
string content = "{\"threadId\": \"39369\", \"groupId\": \"101419\", \"groupType\": \"3\", \"title\": \"code\", \"content\": \"" + str + "\"}";
//Console.WriteLine(content);
string url = "http://home.cnblogs.com/WebService/GroupService.asmx/AddThreadComment";
string host = "http://home.cnblogs.com";
try
{
byte[] bs = Encoding.ASCII.GetBytes(content);
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/json;charset=utf-8";
req.ContentLength = bs.Length;
CookieContainer cc = new CookieContainer();

cc.Add(new Uri(host), new Cookie("cnzz_a1708446", maps["cnzz_a1708446"].ToString()));

cc.Add(new Uri(host), new Cookie("ASP.NET_SessionId", maps["ASP.NET_SessionId"].ToString()));
cc.Add(new Uri(host), new Cookie(".DottextCookie", maps[".DottextCookie"].ToString()));

req.CookieContainer = cc;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(bs, 0, bs.Length);

}
StringBuilder sb = new StringBuilder("");
using (WebResponse wr = req.GetResponse())
{

System.IO.Stream respStream = wr.GetResponseStream();
System.IO.StreamReader reader = new System.IO.StreamReader(respStream, System.Text.Encoding.GetEncoding("gb2312"));
// int h = 0;
string t = "";

do
{

t = reader.ReadLine();
//这个地方自己搞定吧,简单地写了一下成功与否
ok = true;

} while (!reader.EndOfStream);

}
return ok;
}
catch (Exception ex)
{
Console.WriteLine("异常在getPostRespone:" + ex.Source + ":" + ex.Message);
return ok;
}

}

static void Main(string[] args)
{

int maxByte=1024;
bool isDebug=false;
if(args.Length>=2){

maxByte = Int32.Parse(args[0]);
if (args[1] == "debug")
isDebug = true;
}


Hashtable maps = getCookieMap();

try
{
string sPath = "d:\\data.txt";
FileStream fs = new FileStream(sPath, FileMode.Open);
StreamReader rf = new StreamReader(fs, System.Text.Encoding.GetEncoding("gb2312"));
string postStr = "";
string temp;
try
{
int i = 0;
do
{

temp = rf.ReadLine();


postStr += temp;

}
while (!rf.EndOfStream);
int len = postStr.Length;

for(i=0;i<len/maxByte+1;i++)
{
if (i * maxByte + maxByte >= len)
{
//Console.WriteLine(postStr.Substring(i * maxByte, len - i * maxByte));
if(test(i+":"+postStr.Substring(i * maxByte, len - i * maxByte),maps))
Console.WriteLine("post ok:"+i);
if (isDebug) Console.ReadLine();
}
else {
//Console.WriteLine(postStr.Substring(i * maxByte, maxByte));
if(test(i+":"+postStr.Substring(i * maxByte, maxByte),maps)){
Console.WriteLine("post ok:"+i);
if (isDebug) Console.ReadLine();
}

}
}

}
catch (Exception e)
{
Console.WriteLine("读取文件错误:" + e.Message);

return;

}

 

 


}

catch (Exception ex)
{
Console.WriteLine(ex.Message + "----" + ex.Source);

}


Console.WriteLine("over!");
Console.ReadLine();
}


}
}

posted on 2015-05-01 20:58  大西瓜3721  阅读(2743)  评论(0编辑  收藏  举报

导航