这道题花了我好久。。。
一开始以为只要简单统计好了,后来一看,发现竟然写着要2秒内提交。。。好吧,没注意到,于是决定用HttpWebRequest来完成
用httpwatch抓包,出来个post提交的数据是answer=?,怪我功底不好,不论怎么改代码,数据都post不上去啊。。。郁闷了
想到之前做过一个软件,用的是webBrowser,试试看吧,代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Web;
using System.Net;
using System.IO;
namespace 简单字符统计
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public string getWord(string str)
{
int w = 0, o = 0, l = 0, d = 0, y = 0;
char[] ch = str.ToCharArray();
for(int i = 0; i < str.Length; i++)
{
if (ch[i] == 'w') w++;
if (ch[i] == 'o') o++;
if (ch[i] == 'l') l++;
if (ch[i] == 'd') d++;
if (ch[i] == 'y') y++;
}
return w + "" + o + "" + l + "" + d + "" + y;
}
private void button2_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("http://ctf.idf.cn/game/pro/37/index.php");
}
public int flag = 1;
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
StreamReader getReader = new StreamReader(this.webBrowser1.DocumentStream, System.Text.Encoding.GetEncoding("gb2312"));
string gethtml = getReader.ReadToEnd();
int a = gethtml.IndexOf("<hr />");
int b = gethtml.LastIndexOf("<hr />");
gethtml = gethtml.Substring(a + 6, b - a - 6);
HtmlDocument web = webBrowser1.Document;
//获取web页面控件
HtmlElement Anwser = web.All["anwser"];
Anwser.SetAttribute("value", getWord(gethtml));
HtmlElementCollection bn = webBrowser1.Document.GetElementsByTagName("input");//填充
foreach (HtmlElement btn in bn)//接管按钮
{
if (btn.GetAttribute("value") == "走你!" && flag==1)
{
btn.InvokeMember("click");
flag = 0;
}
}
}
}
}
卧槽,居然成功了,感动得我热泪盈眶
提交,通过!