you have to parse the html, one way or the otherif these buttons trigger javascript, you need to see what url is being opened, and what parameters are being passed and do a HttpWebRequestsimilarly, if these buttons trigger a form submission, you need to compose the data from the elements in the form with a format like "name1=value1&name2=value2" and do a POST with HttpWebRequest
解决方案 »
- 在datalist 外方法中 控制 datalist里一个删除按钮的显示与隐藏状态!
- 做硬件身份验证,IKEY1032 与 ET199/ET99,哪个好一些
- 50分!!!大家帮我一下呀。这个文件用什么打开
- 自助建站系统(小问题)
- 谁用过这个OA“Coffice协同办公管理系统 OA源码” ,普通登陆的用户名和密码是啥呀?我没找到
- Mvc 添加view page
- DateTimePicker难题
- 求助图片与文字混排的新闻发布与新闻浏览实现思路!!
- 关于NHibernate 和 NSpring 现在的 发展情况
- 我的项目最后一个问题!~~ 大家帮我一下!~ 是关于用户控件的
- 在Webform 中能调用MsgBox 吗?能的话,怎样调用?
- 有关asp.net的调试问题
using System;
using System.Net;
using System.Text;
using System.IO;
using System.Web;
using System.Text.RegularExpressions;namespace SiteThief
{
/// <summary>
/// 窃取站点信息
/// </summary>
public class FilchSiteInfo
{
private string backHtml; /// <summary>
/// 获取返回的html字串
/// </summary>
public string BackHtml
{
get{ return backHtml; }
} /// <summary>
/// 类的构造函数
/// </summary>
/// <param name="siteUrl">将要获取的站点URL路径</param>
/// <param name="submitParams">提交参数字串集</param>
/// <param name="isPost">表单是否为Post方式提交</param>
public FilchSiteInfo(string siteUrl, string submitParams, bool isPost)
{
HttpWebRequest hwr;
Encoding enc = Encoding.GetEncoding("gb2312");
// 模拟Post表单
if (isPost == true)
{
hwr = (HttpWebRequest)WebRequest.Create(siteUrl); hwr.UserAgent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
byte[] postByte = Encoding.Default.GetBytes(submitParams);
hwr.Method = "POST";
hwr.ContentLength = postByte.Length; hwr.ContentType = "application/x-www-form-urlencoded"; StreamWriter oStreamWriter= new StreamWriter(hwr.GetRequestStream(), enc);
oStreamWriter.Write(submitParams);
oStreamWriter.Close();
}
else
{
// 模拟Get表单
submitParams = Regex.Replace(submitParams, @"[\u4e00-\u9fa5]|(|—|)", new MatchEvaluator(MatchEval));
hwr = (HttpWebRequest)WebRequest.Create(siteUrl +"?" + submitParams);
hwr.UserAgent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
} HttpWebResponse oResponse = (HttpWebResponse)hwr.GetResponse(); StreamReader sr = new StreamReader(oResponse.GetResponseStream(), enc);
backHtml = sr.ReadToEnd();
} /// <summary>
/// 根据首尾匹配捕捉返回的需要的Html字串
/// </summary>
/// <param name="start">首字串</param>
/// <param name="end">尾字串</param>
public void CutBackHtml(string start, string end)
{
int startIndex = backHtml.IndexOf(start); // 首字串的首位置
int endIndex = backHtml.IndexOf(end) + end.Length -1;// 获取尾字串的末位置 backHtml = backHtml.Substring(startIndex, endIndex - startIndex + 1);
} /// <summary>
/// 在返回的Html字串中替换
/// </summary>
/// <param name="oldString">要替换的字符</param>
/// <param name="newString">替换为新字符</param>
public void ReplaceBackHtml (string oldString, string newString)
{
backHtml = backHtml.Replace(oldString, newString);
} /// <summary>
/// 将正则表达式匹配项替换为UrlEncode编码
/// </summary>
private static string MatchEval(Match m)
{
return HttpUtility.UrlEncode(m.Value,System.Text.Encoding.GetEncoding("GB2312"));
}
}
}
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using SiteThief;namespace TrainQuery
{
/// <summary>
/// TrainQuery 的摘要说明。
/// </summary>
public class TrainQuery : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox Train_Start;
protected System.Web.UI.WebControls.TextBox Train_End;
protected System.Web.UI.WebControls.Button Button1;
public static string MatchEval(Match m)
{
return HttpUtility.UrlEncode(m.Value,System.Text.Encoding.GetEncoding("GB2312"));
} private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面 // 当页面提交时
if (IsPostBack)
{
FilchSiteInfo fsi = new FilchSiteInfo("http://train.hepost.com/mudidi.asp", "Train_Start=" + Train_Start.Text + "&Train_End=" + Train_End.Text, true);
fsi.CutBackHtml("<table width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#111111\">", "</table>");
fsi.ReplaceBackHtml("xiangxi.asp", "DetailInfo.aspx");
Response.Write(fsi.BackHtml);
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load); }
#endregion
}
}
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Text.RegularExpressions;
using SiteThief;namespace TrainQuery
{
/// <summary>
/// DetailInfo 的摘要说明。
/// </summary>
public class DetailInfo : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
string parameters = Request.QueryString.ToString();
parameters = HttpUtility.UrlDecode(parameters, System.Text.Encoding.GetEncoding("GB2312"));
FilchSiteInfo fsi = new FilchSiteInfo("http://train.hepost.com/xiangxi.asp", parameters, false);
Response.Write(fsi.BackHtml);
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load); }
#endregion
}
}
我测试过,是这样的思路.
按钮也都有对应的事件指向一个链接,并有参数.但我具体实现时还有一个问题:
网站是需要登录后使用的,这个页面(且叫BASE.PHP)我通过以上方法可以登录并取得了信息.
但这个页面上的按钮的链接,我直接粘到地址栏上后返回"对不起!你无权查看客户信息"这样的信息.用以上所述同样的方法用程序读取,也返回"对不起!你无权查看客户信息"
这个权限我想也肯定是通过请求发过去的,但链接参数上是没有的.Request.CookieContainer 我也同样用查BASE.PHP页面的对象赋予了.当然直接手工在BASE.PHP页面上点击按钮是会出来关于客户信息的小窗口的.烦请再帮忙!特谢!!!
不好意思,上面"我直接粘到地址栏上后返回"对不起!你无权查看客户信息"这样的信息"是我测试时没仔细看,contact.php?user=6824694&uid=972091704去掉中间的amp;就可以了.谢谢!!!