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

Ale*_*ing 36 forms post automation http

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

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

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

huy*_*uyz 23

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

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

  1. Chrome已经附带了您需要的开发者工具:使用网络标签.没有可下载的插件.我不知道Safari是否可行 - 我的开发人员工具中没有看到"网络"标签.
  2. 无论curlwget支持cookie和POST数据,但我只尝试了自动化卷曲.

有几个关键步骤需要正确完成(这需要一些经验):

  1. 请求的页面序列需要模拟真实用户交互.这很重要,因为您不知道后端如何处理表单或身份验证.这就是Chrome的开发者工具的网络选项卡的用武之地.(请注意,是"记录"按钮,将防止日志的空地上.)当你准备记录你分析一个真实的用户交互,不要忘了在每个会话开始时清除您的cookie.
  2. 您需要使用的所有正确的选项curl,并wget会确保cookie和重定向正确处理.
  3. 可能需要发送所有POST表单字段(您经常会看到带有nonce值的字段以防止CSRF

以下是我为自助脚本编写的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
Run Code Online (Sandbox Code Playgroud)

请注意谨慎使用--cookie-jar,--cookie--location.在sleepS,--user-agent以及--referer可能没有必要(后端可能不检查),但它们也非常简单,我包括他们的错误的可能性降到最低.

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

  • 我认为这已经过时了,但是如果你像我一样来自谷歌,Chrome现在可以让你右键点击网络标签下的任何XHR请求并选择"复制为cURL",它会将完整的请求复制到你的剪贴板.:) (11认同)

Pis*_*3.0 5

不完全是浏览器插件,但Fiddler可以捕获来回传递的所有HTTP数据; 使用FiddlerScriptFiddlerCore,可以将其导出到文本文件中,并将其作为请求标头和请求体传递给cURL.


小智 5

在 Firefox 中,打开Firebug 中Persist选项以确保捕获POST。然后安装并使用“Bookmark POST”插件来为POST请求添加书签以备后用。


Dan*_*man 3

你尝试过吗?