首页 > 解决方案 > CUrl 从登录页面中的 typeform 结果下载结果图像

问题描述

我在使用 curl 或 typeform API 方面相当陌生,因此不仅感谢 anwsers,而且还有任何链接或教程来帮助我。

我面临的问题是,当我尝试使用 curl 或 wget 在 typeform 上获取上传的图像时,它不会保存图像,而是保存 typeform 的登录页面

https://admin.typeform.com/login/

使用 API 恢复下载链接本身可以正常工作。我使用了命令

curl --request GET --url https://api.typeform.com/forms/aLsAcC/responses --header 'Authorization: Bearer {MyId}'

这将返回一个包含所有响应的 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>

Wich 只是网站的登录页面。

奇怪的是,当我使用浏览器本身时它工作得很好,所以我怀疑我错过了某种形式的身份验证。这可能是一个非常简单的问题,但谷歌在这方面并没有真正提供帮助。

所以我的问题是,我如何下载响应图像。最终解决方案是否不使用 curl 并不重要,但必须使用命令行工具或库。

谢谢。

标签: curltypeform

解决方案


我已经联系了typeform,他们不通过api支持这个。然而,他们告诉我他们会将这个发送给他们的产品团队。

然而,解决这个问题的一种方法是通过 curl 登录,然后请求文档。

我用 guzzle 做到了这一点,但同样适用于 curl,请记住,您需要“记住”您获得的 cookie,在两个 curl 请求之间保存 cookie如何执行该操作中描述。

代码示例是 PHP 给你一个想法,改变它适合。

采取的步骤:

  1. 向https://admin.typeform.com/login/发出 curl 请求
  2. 使用响应找到 csrf_tokenpreg_match("/loginCsrfToken\: '(.*)'/", $content, $matches);
  3. 别忘了你也需要这个请求的cookies
  4. 使用以下数据发布到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/', ],

  5. 如果登录成功,您应该能够下载您的文件

更新:虽然这有效,但我注意到登录表单有一个 recaptcha 会破坏这个流程。但我确实知道他们目前正在为此努力。因此,如果这对您不起作用,最好耐心等待,和/或向您需要的 typeform 发送支持票。这可能会让他们更快地向公众发布这个。


推荐阅读