防止恶意注册的一种防御方式。

在写一个邮箱注册机的时候老是POST后返回失败的消息,程序检察了N遍,确实没有发现错误之处。最后在很多地方添加MessageBoxShow来显示调试信息,终于POST成功了一次,我就在想了为什么我添加了MessageBoxShow的时候就成功了呢?原来是由于我在看MessageBoxShow的时候产生了时间延迟,后面的代码就只有当我点击MessageBoxShow的确定按钮后才会执行。

我们先看看POST数据的一般形式:

HttpWebRequest req=WebRequest.Create("http://.........") as HttpWebRequest;

req.Method="POST";

req.Accept="application/json, text/javascript, */*";

req.UserAgent=UserAgent;

req.KeepAlive=true;

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

req.CookieContainer=cookie;

string optshiString=GetRandomString(AlphabetNum,7);

user=GetRandomString(AlphabetLetter,10);

psw=GetRandomString(AlphabetHex,8);

string text="uname="+user+"&password=123456798&optshi="+optshiString+"&passwordconf=123456798&mobile=&verifycode="+HttpUtility.UrlEncode(textBox1.Text,encoding)+"&domain=xxx.com&version=regvf1";

byte[] buffer=Encoding.ASCII.GetBytes(text);

MessageBox.Show("在这sleep n秒");

Stream stream=req.GetRequestStream();

stream.Write(buffer,0,buffer.Length);

stream.Close();

  

从上面的代码我们可以看出什么呢?时间差,什么时间差呢,是WebRequest.Create创建到stream.Write之间的时间,如果这段时间相差小于服务器设置的时间差那么就不能通过注册。以后检察了N遍之后死Post也Post不成功的时候就往这方面想想吧,呵呵。。。

你可能感兴趣的:(注册)