CUrl 从登录页面中的 typeform 结果下载结果图像
CUrl download result image from typeform results in log in page
我对使用 curl 或 typeform API 还是个新手,所以不仅感谢回答,还感谢任何 links 或教程来帮助我。
我面临的问题是,当我尝试使用 curl 或 wget 在 typeform 上获取上传的图像时,它不会保存图像,而是保存来自 typeform 的登录页面
https://admin.typeform.com/login/
使用 API 恢复下载 link 本身工作正常。
我使用了命令
curl --request GET --url https://api.typeform.com/forms/aLsAcC/responses --header 'Authorization: Bearer {MyId}'
这将 return 一个包含所有响应的 JSON 对象。在这个 JSON 文件中有以下块:
"field":{
"id":"SM3co23sAfCQ",
"type":"file_upload",
"ref":"2953330e-3c0b-4da3-bbb1-78a370152b10"
},
"type":"file_url",
"file_url":"https://admin.typeform.com/form/aLsAcC/field/SM3co23sAfCQ/results/1a4a6ab57b29-IMG_0354.JPG/download"
但是当我尝试实际下载文件时,它似乎不起作用。
我 运行 :
没关系
curl -O https://admin.typeform.com/form/aLsAcC/field/SM3co23sAfCQ/results/1a4a6ab57b29-IMG_0354.JPG/download
curl --request GET --url https://admin.typeform.com/form/aLsAcC/field/SM3co23sAfCQ/results/1a4a6ab57b29-IMG_0354.JPG/download --header 'Authorization: Bearer {MyId}'
or
wget https://admin.typeform.com/form/aLsAcC/field/SM3co23sAfCQ/results/1a4a6ab57b29-IMG_0354.JPG/download
似乎总是给出相同的结果。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta http-equiv="refresh" content="0;url=https://admin.typeform.com/login/" />
<title>Redirecting to https://admin.typeform.com/login/</title>
</head>
<body>
Redirecting to <a href="https://admin.typeform.com/login/">https://admin.typeform.com/login/</a>.
</body>
</html>
这只是网站的登录页面。
奇怪的是,当我使用我的浏览器本身时它工作得很好,所以我怀疑我缺少某种形式的身份验证。这可能是一个非常简单的问题,但 google 在这方面并没有真正帮助。
所以我的问题是,如何下载响应图像。最终解决方案不用curl也没关系,但是命令行工具或者库是必须的。
谢谢。
我已经就此联系了 typeform,但他们不支持 api。然而他们告诉我他们会把这个发给他们的产品团队。
然而,解决这个问题的方法是通过 curl 登录,然后请求文档。
我用 guzzle 做到了这一点,但同样适用于 curl,请记住,您将需要 "remember" 您获得的 cookie, 如何做到这一点。
代码示例 PHP 给你一个想法,根据需要修改它。
要采取的步骤:
- 向 https://admin.typeform.com/login/
发出 curl 请求
- 使用响应找到 csrf_token
preg_match("/loginCsrfToken\: '(.*)'/", $content, $matches);
- 别忘了你还需要这个请求的cookies
用以下数据post到https://admin.typeform.com/login_check
form_params' => [
'_username' => '{YOUR USERNAME}',
'_password' => '{YOUR PASSWORD}',
'_csrf_token' => {THE FOUND TOKEN},
'teamsWorkspaceInvitationToken' => null,
'_target_path' => 'https://admin.typeform.com/',
],
- 如果登录成功,您应该可以下载文件
更新:
虽然这有效,但我注意到登录表单有一个 recaptcha,它会打破这个流程。但我确实知道他们目前正在为此努力。因此,如果这对您不起作用,最好耐心等待,and/or 向 typeform 发送支持票,您需要它。这可能会让他们更快地为 public 发布这个。
我对使用 curl 或 typeform API 还是个新手,所以不仅感谢回答,还感谢任何 links 或教程来帮助我。
我面临的问题是,当我尝试使用 curl 或 wget 在 typeform 上获取上传的图像时,它不会保存图像,而是保存来自 typeform 的登录页面
https://admin.typeform.com/login/
使用 API 恢复下载 link 本身工作正常。 我使用了命令
curl --request GET --url https://api.typeform.com/forms/aLsAcC/responses --header 'Authorization: Bearer {MyId}'
这将 return 一个包含所有响应的 JSON 对象。在这个 JSON 文件中有以下块:
"field":{
"id":"SM3co23sAfCQ",
"type":"file_upload",
"ref":"2953330e-3c0b-4da3-bbb1-78a370152b10"
},
"type":"file_url",
"file_url":"https://admin.typeform.com/form/aLsAcC/field/SM3co23sAfCQ/results/1a4a6ab57b29-IMG_0354.JPG/download"
但是当我尝试实际下载文件时,它似乎不起作用。 我 运行 :
没关系curl -O https://admin.typeform.com/form/aLsAcC/field/SM3co23sAfCQ/results/1a4a6ab57b29-IMG_0354.JPG/download
curl --request GET --url https://admin.typeform.com/form/aLsAcC/field/SM3co23sAfCQ/results/1a4a6ab57b29-IMG_0354.JPG/download --header 'Authorization: Bearer {MyId}'
or
wget https://admin.typeform.com/form/aLsAcC/field/SM3co23sAfCQ/results/1a4a6ab57b29-IMG_0354.JPG/download
似乎总是给出相同的结果。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta http-equiv="refresh" content="0;url=https://admin.typeform.com/login/" />
<title>Redirecting to https://admin.typeform.com/login/</title>
</head>
<body>
Redirecting to <a href="https://admin.typeform.com/login/">https://admin.typeform.com/login/</a>.
</body>
</html>
这只是网站的登录页面。
奇怪的是,当我使用我的浏览器本身时它工作得很好,所以我怀疑我缺少某种形式的身份验证。这可能是一个非常简单的问题,但 google 在这方面并没有真正帮助。
所以我的问题是,如何下载响应图像。最终解决方案不用curl也没关系,但是命令行工具或者库是必须的。
谢谢。
我已经就此联系了 typeform,但他们不支持 api。然而他们告诉我他们会把这个发给他们的产品团队。
然而,解决这个问题的方法是通过 curl 登录,然后请求文档。
我用 guzzle 做到了这一点,但同样适用于 curl,请记住,您将需要 "remember" 您获得的 cookie,
代码示例 PHP 给你一个想法,根据需要修改它。
要采取的步骤:
- 向 https://admin.typeform.com/login/ 发出 curl 请求
- 使用响应找到 csrf_token
preg_match("/loginCsrfToken\: '(.*)'/", $content, $matches);
- 别忘了你还需要这个请求的cookies
用以下数据post到https://admin.typeform.com/login_check
form_params' => [ '_username' => '{YOUR USERNAME}', '_password' => '{YOUR PASSWORD}', '_csrf_token' => {THE FOUND TOKEN}, 'teamsWorkspaceInvitationToken' => null, '_target_path' => 'https://admin.typeform.com/', ],
- 如果登录成功,您应该可以下载文件
更新: 虽然这有效,但我注意到登录表单有一个 recaptcha,它会打破这个流程。但我确实知道他们目前正在为此努力。因此,如果这对您不起作用,最好耐心等待,and/or 向 typeform 发送支持票,您需要它。这可能会让他们更快地为 public 发布这个。