公司有一个老站点是通过输入一个员工号来查询信息 原理是通过form表单 POST数据得到人员信息 (但源码已经无法得到了,验证码应该是用Session验证的)
代码如下:
<form action="http://www.test11.com/abc.jsp" method="post" target="_blank">
<tr>
<td>员工号
<input name="idno" type="text" />
<img alt="验证码" src="http://www.test.com/verifycode" />
<input type="text" name="verifycode"/>
<input type="submit" name="submit" value="查询" />
</td>
</tr>
</form>现在我要做一个新站点 需要引用老页面的查询,验证码还是从老地址取
但是我要把查询的结果去除一些相关的信息 所以自己做了查询页面search.aspx 这个页面就是后台模拟POST数据(也就是向老页面http://www.test11.com/abc.jsp 发送POST数据然后得到结果),再把得到的值加以处理然后显示
代码如下:<form action="http://www.test22.com/search.aspx" method="post" target="_blank">
<tr>
<td>员工号
<input name="idno" type="text" />
<img alt="验证码" src="http://www.test11.com/verifycode" />
<input type="text" name="verifycode"/>
<input type="submit" name="submit" value="查询" />
</td>
</tr>
</form>search.aspx的代码如下:
Encoding encoding = Encoding.GetEncoding("UTF-8");
byte[] Data = encoding.GetBytes("idno=123456");HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://www.test11.com/abc.jsp");
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = Data.Length;Stream Out = myRequest.GetRequestStream();
Out.Write(Data, 0, Data.Length);
Out.Close();
HttpWebResponse MyResponse = (HttpWebResponse)myRequest.GetResponse();
Stream InStream = MyResponse.GetResponseStream();
StreamReader read = new StreamReader(InStream, encoding);
return read.ReadToEnd();问题是不知道怎么把验证码的Session信息传递给老的页面, 如果不加验证码就无法得到老页面的查询信息
请大家指点!多谢
代码如下:
<form action="http://www.test11.com/abc.jsp" method="post" target="_blank">
<tr>
<td>员工号
<input name="idno" type="text" />
<img alt="验证码" src="http://www.test.com/verifycode" />
<input type="text" name="verifycode"/>
<input type="submit" name="submit" value="查询" />
</td>
</tr>
</form>现在我要做一个新站点 需要引用老页面的查询,验证码还是从老地址取
但是我要把查询的结果去除一些相关的信息 所以自己做了查询页面search.aspx 这个页面就是后台模拟POST数据(也就是向老页面http://www.test11.com/abc.jsp 发送POST数据然后得到结果),再把得到的值加以处理然后显示
代码如下:<form action="http://www.test22.com/search.aspx" method="post" target="_blank">
<tr>
<td>员工号
<input name="idno" type="text" />
<img alt="验证码" src="http://www.test11.com/verifycode" />
<input type="text" name="verifycode"/>
<input type="submit" name="submit" value="查询" />
</td>
</tr>
</form>search.aspx的代码如下:
Encoding encoding = Encoding.GetEncoding("UTF-8");
byte[] Data = encoding.GetBytes("idno=123456");HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://www.test11.com/abc.jsp");
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = Data.Length;Stream Out = myRequest.GetRequestStream();
Out.Write(Data, 0, Data.Length);
Out.Close();
HttpWebResponse MyResponse = (HttpWebResponse)myRequest.GetResponse();
Stream InStream = MyResponse.GetResponseStream();
StreamReader read = new StreamReader(InStream, encoding);
return read.ReadToEnd();问题是不知道怎么把验证码的Session信息传递给老的页面, 如果不加验证码就无法得到老页面的查询信息
请大家指点!多谢
myRequest.CookieContainer = cook;然后将cook对象保存在session中第二次查询的时候还用这个cook
如果不行的話,只能改舊頁面了,或者分析那個校驗碼的圖片,自動提取檢驗碼。
是的你说的很对 我现在确实不知道怎样伪造出老页面的 Session 然后放到cookcontainer 中
CookieContainer cookcontainer= new CookieContainer();
Encoding encoding = Encoding.GetEncoding("GB2312");
byte[] Data = encoding.GetBytes("idno=123456&verifycode="+TextBox验证码.Text);
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = Data.Length;
myRequest.CookieContainer = cookcontainer;
Stream Out = myRequest.GetRequestStream();
Out.Write(Data, 0, Data.Length);
Out.Close();
return cookcontainer;
myRequest.CookieContainer = cook; 然后将cook对象保存在session中 第二次查询的时候还用这个cook