我正在尝试自动登录网站并提交表单。
是否有浏览器插件(适用于Firefox或Chrome),允许您以允许以后播放的形式记录HTTP GET和POST请求?我正在寻找可以从脚本自动化的东西,例如通过curl或wget。
我尝试使用Chrome开发人员工具来捕获POST表单数据,但在尝试使用wget复制请求时出现错误,这表明我缺少一些Cookie或其他参数。理想情况下,这样做会有一种很好的自动化方法,而不是进行大量的反复试验。
答案 0 :(得分:23)
对于简单的交互,您实际上并不需要像Selenium这样的工具来记录和回放请求。
您只需要您已经提到过的工具:
curl
和wget
都支持Cookie和POST数据,但我只尝试使用curl进行自动化。有几个关键步骤需要正确完成(这需要一些经验):
curl
和wget
的所有正确选项,以确保正确处理Cookie和重定向。以下是我为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数据;使用FiddlerScript或FiddlerCore,export对文本文件很简单 - 并将其作为请求标头和请求正文传递给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)
您可以选择太多方法。
使用Firefox和selenium IDE。它可以记录您的浏览器操作
用户selenium Web驱动程序。它可以通过您在Ruby或Java中编写的脚本模拟不同的浏览器操作。
使用Firefox的宏插件模拟绝对点击和按键。
使用操作系统级宏应用程序并执行与3相同的操作。
编写一个脚本(例如PHP)来模拟实际的表单帖子或cookie交互。
No.1很常见且易于使用。 No.4可能很强大,但你需要时间来完善自动化 3号位于4号和1号中间。 No.2也可以作为环境测试和压力测试的工具。 No.5似乎是最灵活和节省资源的。
答案 6 :(得分:0)
Safari开发人员工具和Firebug足以满足您的需求。
答案 7 :(得分:0)
Request Maker chrome插件可以做到这一点。 https://chrome.google.com/webstore/detail/request-maker/kajfghlhfkcocafkcjlajldicbikpgnp?hl=en
答案 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