0

我被严重卡住了,我无法继续前进。相信我,我在网上找了一个具体的解决方案,但都是徒劳的!我有一个应用程序 justcloud.com,我需要在其中上传文件并验证它是否已上传。 在我登录到这个应用程序并到达我有按钮选择要上传的文件的页面后,这是我的代码:

from poster.encode import multipart_encode
from poster.streaminghttp import register_openers
import urllib2

register_openers()
fileToUpload = {'files[]':open('/home/pinku/Desktop/Test_Upload.odt', 'rb')}
datagen, headers = multipart_encode(fileToUpload)
url = "https://upload.backupgrid.net/add"
request = urllib2.Request(url, datagen, headers)
print urllib2.urlopen(request).read()

我每次都遇到的错误是[{"error":true,"error_msg":"Authentication Failed"}]

我知道我只需要模拟实际的文件上传过程,这只不过是对服务器的 HTTP POST 请求,其中还包括一些我需要克服的身份验证。

我的假设是cookie可以帮助我解决这个身份验证问题,但我不确定,我不知道如何将它包含在我的 python 代码中。任何示例代码都会有所帮助。我请求任何阅读本文的人帮助我。

当我发布这个问题时,这不是我第一次在 stackoverflow 上,但我没有得到太多帮助。我还在试一试。不管怎么说,多谢拉...

4

1 回答 1

0

错误消息准确地告诉您问题所在。您需要先登录到该网站,然后才能将文件发布到该 URL。

您需要以某种方式获取登录会话 cookie。通常,当您 POST 到登录表单 URL 时,您将收到包含此 cookie 的 http 响应。然后,每次您发出另一个请求时,您都会在每个请求中继续发送该 cookie,以便站点知道您已通过身份验证。

您将如何登录到 backupgrid?找到相应的 URL,登录,从响应中获取 cookie,然后将其包含在您的请求中。

这个 stackoverflow 答案很好地解释了如何将 cookie 添加到请求中。

于 2013-09-07T09:35:30.920 回答