打开网页,就像从网页上点击了链接一样

时间:2009-04-03 09:43:19

标签: asp.net javascript

此网址上有一个网页:

http://www.vankampen.com/Products/529Portfolios

此网页打开,默认选项为“带销售费用”。此网页上有“无销售费用”链接。当我们点击此链接时,网页会显示与“无销售费用”相关的选项。

我想打开带有“无销售费用”选项的“http://www.vankampen.com/Products/529Portfolios”网址,而不是默认的“使用销售费用”选项。

鼠标悬停在“没有销售费用”时,它会显示以下函数被调用: 的javascript:__ doPostBack( 'ctl00 $ $ ctl00 $ ctl00 $ m_mainContent $ m_secondaryContent $ m_mainContent $ list529Funds CTRL1 $ withoutSalesCharge', '')

有人可以建议我是否可以使用“无销售费用”选项而不是“使用销售费用”选项打开网页?

谢谢,

3 个答案:

答案 0 :(得分:1)

我想说这取决于你究竟想要做什么。

我担心你无法避免回复,除非他们支持一些查询字符串变量或者有办法在cookie或其他方面设置“偏好”。你必须自己弄清楚。

否则,它是标准的捕获/重放技术。您必须以某种形式和方式模仿用户操作。这意味着发送初始GET请求以提取所有表单字段,然后创建POST以模拟回发。

我认为,在常规浏览器中执行此操作将具有挑战性。我不记得javascript是否允许设置标题和所有。我想你可以使用MS活动对象...但是,如果你的目标是在某些.net代码中提取数据,你可以相对容易地做到。

有很多关于如何使用HttpWebRequest或WebClient进行屏幕抓取的示例,包括模拟登录等。我会使用HttpWebRequest。发送GET请求,获取数据,保留cookie,提取表单字段,创建POST请求,重新创建标题(包括正确的推荐人),形成正确的帖子正文,重新分配Cookie,您应该设置。

要查看需要发送的内容,我建议使用Fiddler(使用IE)。运行它,然后浏览到该页面,单击链接。 Filder将向您显示初始请求和后续回发的所有流量和所有必要信息。

答案 1 :(得分:0)

我认为你不能控制www.vankampen.com但想要“深度链接”到一个应用了正确设置的页面?

如果您可以通过表单提交获得该布局的唯一方法,那么您需要尝试发布到服务器 - 但是,ASP.NET通常会拒绝来自其他站点的回发 - 视图状态等将无法验证。

如果您确实可以访问www.vankampen.com的代码,那么您可以考虑提供一种机制来提供指向这些页面的直接链接,或者所有获取而不是帖子。

答案 2 :(得分:0)

通过查询字符串访问“销售费用”和“无销售费用”。

然后你可以简单地做一些像

这样的事情

带销售费用

http://www.vankampen.com/Products/529Portfolios?settings=CS

没有销售费用

http://www.vankampen.com/Products/529Portfolios?settings=NCS