通过浏览器记录http表单帖子

时间:2011-02-25 16:35:12

标签: http forms post automation

我正在尝试自动登录网站并提交表单。

是否有浏览器插件(适用于Firefox或Chrome),允许您以允许以后播放的形式记录HTTP GET和POST请求?我正在寻找可以从脚本自动化的东西,例如通过curl或wget。

我尝试使用Chrome开发人员工具来捕获POST表单数据,但在尝试使用wget复制请求时出现错误,这表明我缺少一些Cookie或其他参数。理想情况下,这样做会有一种很好的自动化方法,而不是进行大量的反复试验。

9 个答案:

答案 0 :(得分:23)

对于简单的交互,您实际上并不需要像Selenium这样的工具来记录和回放请求。

您只需要您已经提到过的工具:

  1. Chrome已附带您需要的开发人员工具:使用“网络”标签。没有可下载的插件。我不知道Safari是否可行 - 我的开发人员工具中没有看到“网络”标签。
  2. curlwget都支持Cookie和POST数据,但我只尝试使用curl进行自动化。
  3. 有几个关键步骤需要正确完成(这需要一些经验):

    1. 请求的页面序列需要为真实用户交互建模。这很重要,因为您不知道后端如何处理表单或身份验证。这是Chrome开发者工具的“网络”选项卡所在的位置。(请注意,“记录”按钮会阻止清除日志。)当您准备记录真实用户交互以进行分析时,请不要忘记在每个会话开始时清除您的cookie。
    2. 您需要使用curlwget的所有正确选项,以确保正确处理Cookie和重定向。
    3. 可能需要发送所有POST表单字段(您经常会看到包含nonce值的字段以阻止CSRF
    4. 以下是我为automation script编写的3个卷曲调用示例,我写这些调用是为了从我的ISP下载宽带使用情况:

      curl \
          --silent \
          --location \
          --user-agent "$USER_AGENT" \
          --cookie-jar "$COOKIES_PATH.txt" \
          'https://idp.optusnet.com.au/idp/optus/Authn/Service?spEntityID=https%3A%2F%2Fwww.optuszoo.com.au%2Fshibboleth&j_principal_type=ISP' >$USAGE_PATH-1.html 2>&1 && sleep 3 &&
      
      # --location because the previous request returns with a series of redirects "302 Moved Temporarily" or "302 Found"
      curl \
          --silent \
          --location \
          --user-agent "$USER_AGENT" \
          --cookie "$COOKIES_PATH.txt" \
          --cookie-jar "$COOKIES_PATH.txt" \
          --referer 'https://idp.optusnet.com.au/idp/optus/Authn/Service?spEntityID=https%3A%2F%2Fwww.optuszoo.com.au%2Fshibboleth&j_principal_type=ISP' \
          --data "spEntityID=https://www.optuszoo.com.au/shibboleth&j_principal_type=ISP&j_username=$OPTUS_USERNAME&j_password=$OPTUS_PASSWORD&j_security_check=true" \
          'https://idp.optusnet.com.au/idp/optus/Authn/Service' >$USAGE_PATH-2.html 2>&1 && sleep 1 &&
      
      curl \
          --silent \
          --location \
          --user-agent "$USER_AGENT" \
          --cookie "$COOKIES_PATH.txt" \
          --cookie-jar "$COOKIES_PATH.txt" \
          --referer 'https://www.optuszoo.com.au/' \
          'https://www.optuszoo.com.au//r/ffmu' >$USAGE_PATH-3.html 2>/dev/null
      

      请注意谨慎使用--cookie-jar--cookie--location。可能不需要sleep s,--user-agent--referer(后端可能无法检查),但它们非常简单,我可以将其包含在内,以尽量减少出错的可能性。

      在这个例子中,我很幸运,没有动态POST字段,例如反CSRF nonce字段,我将不得不提取并传递给后续请求。那是因为这种自动化用于身份验证。为了自动化其他类型的Web交互,在用户已经登录之后,您可能会遇到更多这些动态生成的字段。

答案 1 :(得分:5)

不完全是浏览器插件,但Fiddler可以捕获来回传递的所有HTTP数据;使用FiddlerScriptFiddlerCoreexport对文本文件很简单 - 并将其作为请求标头和请求正文传递给cURL。

答案 2 :(得分:4)

在Firefox中,启用 Firebug 中的持久选项,以确保捕获 POST 。然后安装并使用"Bookmark POST"插件将 POST 请求添加为书签以供日后使用。

答案 3 :(得分:3)

您是否尝试过Selenium

答案 4 :(得分:3)

Firefox Firebug已经有一项功能允许您将Web请求复制为curl请求,因此您可以在命令行上看到请求的所有各种元素。

打开Firebug并右键单击Net面板中的请求,然后选择Copy as cURL。然后在curl中使用它 https://hacks.mozilla.org/2013/08/firebug-1-12-new-features/#copyAsCURL

答案 5 :(得分:2)

您可以选择太多方法。

  1. 使用Firefox和selenium IDE。它可以记录您的浏览器操作

  2. 用户selenium Web驱动程序。它可以通过您在Ruby或Java中编写的脚本模拟不同的浏览器操作。

  3. 使用Firefox的宏插件模拟绝对点击和按键。

  4. 使用操作系统级宏应用程序并执行与3相同的操作。

  5. 编写一个脚本(例如PHP)来模拟实际的表单帖子或cookie交互。

  6. No.1很常见且易于使用。 No.4可能很强大,但你需要时间来完善自动化 3号位于4号和1号中间。 No.2也可以作为环境测试和压力测试的工具。 No.5似乎是最灵活和节省资源的。

答案 6 :(得分:0)

Safari开发人员工具和Firebug足以满足您的需求。

答案 7 :(得分:0)

答案 8 :(得分:0)

最近,我浏览了这个漂亮的chrome扩展程序,它可以完成您的要求: Katalon Recorder

Katalon Recorder将使您的测试自动化工作更加轻松。

  • 记录,播放,调试速度控制,暂停/恢复,断点功能。

  • 与使用Selenium 3核心引擎的其他扩展相比,享受最快的执行速度。

  • 利用多种定位器类型,包括XPath和CSS。

  • 使用原始的Selenium IDE命令(英语),如果... elseIf ... else ... endIf和while ... endWhile加上block语句。支持测试文件输入控件。

  • 从CSV文件导入测试数据以进行数据驱动的测试。

  • 使用Katalon Analytics的日志,截图捕获,历史数据和分析轻松报告。

  • 在套件中编写和组织测试用例。自动保存功能永远不会让您迷路。

  • 导入原始的Selenium IDE(Firefox扩展)测试。

  • 在以下框架中导出到Selenium WebDriver脚本:C#(MSTest和NUnit),Java(TestNG和JUnit),Ruby(RSpec),Python(单元测试),Groovy(Katalon Studio),Robot Framework和XML