我正在使用HttpWebRequest在不使用浏览器的情况下发送请求,但我总是从这个旧学校cgi论坛得到这个回复:“复制线程”。我很确定这个帖子不是重复的,因为这是我第一次发送它。我猜测论坛软件正在检测我的线程的异常,因为它是机器生成的。我该怎么办?
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://pop.6park.com/cgi-bin/know1/mainboard.pl");
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
string postData = "name=ZhuangNan&usrpwd=aaa&subject=whatisthis&body=abcabcabcabc";
UTF8Encoding encoding = new UTF8Encoding();
byte[] byte1 = encoding.GetBytes(postData);
myRequest.ContentLength = byte1.Length;
Stream newStream = myRequest.GetRequestStream();
newStream.Write(byte1, 0, byte1.Length);
答案 0 :(得分:2)
如果目标脚本尝试检查UserAgent HTTP标头以确定浏览器是否发出请求,则可以尝试使用有效值填充HttpWebRequest.UserAgent property。这至少有一次对我有用。
您可以设置许多其他HTTP标头,以使目标脚本认为它被浏览器而不是程序命中。
检查可以设置的任何HTTP标头属性。有关详细信息,请参阅HttpWebRequest Properties。
答案 1 :(得分:1)
myRequest.ContentType = "application/x-www-form-urlencoded";
string postData = "name=ZhuangNan&usrpwd=aaa&subject=whatisthis&body=abcabcabcabc";
不是MIME / baseenc数据吗?