我想访问一个包含数据的json页面。比如,它在http://example.com/home/apples.json
下,它是受保护的,所以会显示一个登录页面。如果我手动访问它,我首先去http://example.com/
,在那里我会得到一个登录菜单,登录后,比如用户“test”,密码“test”访问http://example.com/home/apples.json again
会显示我的json数据。
如果我做一个
curl -u test:test http://example.com/home/apples.json -v
字符串
我最终进入登录页面。(尽管有身份验证。)
如果我访问http://example.com/并手动登录,我将在登录后获得一个cookie。假设此cookie称为ltoken并获得值“dj8f”。它只会在成功登录后显示。当我通过浏览器查找它并复制cookie数据并将其附加到curl命令时:
curl -b "ltoken="dj8f" http://example.com/home/apples.json -v
型
会成功的
如何在登录后获取cookie数据而不需要手动操作?是否可以通过bash shell脚本来获取?如果可以,如何获取?或者如何在groovy脚本中完成?
1条答案
按热度按时间zhte4eai1#
你必须首先使用curl进行正确的登录。为了做到这一点,导航到登录页面并查看源代码。登录表单应该看起来像这样。
字符串
(我假设没有隐藏的输入字段,隐藏的输入字段通常用于防止请求伪造,这基本上就是我们要做的。)
从这个片段中,您必须提取登录请求的目标(在本例中为
http://example.com/login/target
)和HTML输入字段的名称(在这里为username
和passphrase
)。型
(请注意,通常不建议以这种方式在命令行上输入密码。您的密码可能存储在命令历史记录中,可能会被盗。)
--cookie-jar
选项告诉curl将所有cookie存储在一个文件中。如果登录成功并且服务器设置了会话cookie,curl将把它们保存在这个文本文件中。成功登录后,如果请求包含来自cookie-jar的cookie,则应该能够访问json文件。这可以通过
-b
参数实现。如果-b
不包含=
字符,curl将使用文件的内容作为cookie。型