【问题标题】:Web Automation - Dealing with .aspxWeb 自动化 - 处理 .aspx
【发布时间】:2012-09-28 19:00:46
【问题描述】:

我正在尝试实现一点自动化,包括在网页上提交表单。表单的值已经按列表中的项目进行了编码。

我已经用 Python 尝试了许多不同的模块,但似乎没有什么能给我答案。我无法访问 Visual Basic,而且我个人以前从未处理过 .aspx 页面。 这是表格名称 当我找到表单的参数时,我以为我已经准备好了: function ShowEditForm(id, param1, param2, param3, param4) #为安全起见删除了实际参数名称

这是最令人头疼的部分:

<INPUT id=__EVENTTARGET type=hidden name=__EVENTTARGET> <INPUT id=__EVENTARGUMENT     type=hidden name=__EVENTARGUMENT> <INPUT id=__VIEWSTATE type=hidden value=/wEPDw... #This     continues for 800+ characters

我相信这是我的代码失败的原因,我是否正在试图在 python 中发布到 .aspx 表单?

谢谢

【问题讨论】:

    标签: python web automation


    【解决方案1】:

    您需要解析/参数化您的帖子标题和内容。这可能很重要。

    查看mechanize 以在 HTTP 级别进行访问,并提供一些表单处理便利。

    查看selenium,了解如何使用 Python 驱动真正的浏览器。

    【讨论】:

      【解决方案2】:

      我不认为aspx与它有任何关系。

      你试过http://pypi.python.org/pypi/selenium吗?

      【讨论】:

        【解决方案3】:

        确实,如果这些隐藏值不存在,POST 请求的服务器端处理将不起作用。 ASP.NET 使用这些东西来跟踪多个请求的状态。对 ASP.NET Web 窗体 HTTP 请求进行逆向工程并不是一项有趣的工作。

        您可能需要请求页面,抓取它为您提供的隐藏值,并将这些值包含在 POST 中。

        逐步完成与页面的手动交互并在 FireBug 之类的工具中捕获请求/响应,还可以让您很好地了解在客户端和服务器之间来回发送的值。如果有一些 JavaScript 发送到响应中,它也会以服务器预先确定的方式动态修改一些隐藏字段,帮助指示按下了哪个按钮或以某种方式修改了哪个控件,我不会感到惊讶。

        【讨论】:

        • “您可能需要请求页面,抓取它提供给您的隐藏值,并将这些值包含在 POST 中。”这就是我想要做的。我想我需要更多地了解 ASP .NET 的工作原理,尽管我正在拼命避免这种情况。
        【解决方案4】:

        Asp.net 有一个名为 viewstate(加密的页面状态设置)的功能,您不能伪造它,并且页面可能默认使用它,并且在提交回自身(称为回帖)。

        如果您控制 .aspx 代码,它可能有一个关联的 .cs 或 .vb 文件,其中包含执行表单处理的代码。您可以更改代码以从发布的表单或 URL 参数中获取值,而不是(或附加于)原始表单上的控件。如果网站已编译并且您没有看到任何要更改的 .vb 或 .cs 文件,则您需要找到解决方案的原始源文件。

        【讨论】:

        • 我无权访问代码。但是我已经解析了第一次阅读给我的 html。你是说没有这些文件就不可能吗?
        • 如果你有原始文件,这会容易 10 倍。正如其他一些 cmets 建议的那样,您可以尝试浏览器自动化来提交值或在 iframe 中打开源页面并设置表单控件并使用 JavaScript 提交。
        猜你喜欢
        • 2014-12-04
        • 2020-10-03
        • 1970-01-01
        • 1970-01-01
        • 2016-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多