【问题标题】:How to debug a file upload?如何调试文件上传?
【发布时间】:2010-10-12 13:35:51
【问题描述】:

我正在尝试使用 Python 脚本使用 Hot Banana 的内容管理系统将 PDF 文件上传到网站。我已成功登录该站点并可以注销,但我似乎无法正常上传文件。

文件上传是大型复杂网络表单的一部分,该表单通过 POST 提交表单数据和 PDF 文件。使用 Firefox 以及 Firebug 和 Tamper Data 扩展,我查看了浏览器在 POST 中发送的内容以及它的去向。我相信我模仿了浏览器在代码中发送的数据,但我仍然遇到问题。

我正在导入 cookielib 来处理 cookie、poster 来编码 PDF,以及 urllib 和 urllib2 来构建请求并将其发送到 URL。

注册海报开瓶器是否会破坏 cookie 处理器开瓶器?我这样做完全错了吗?


编辑:调试进程的好方法是什么?目前,我只是将 urllib2 响应转储到一个文本文件并检查输出以查看它是否与我手动上传文件时得到的匹配。

编辑 2:Chris Lively 建议我发布我遇到的错误。来自 urllib2 的响应不会产生异常,只是返回:

<script>
    if (parent != window) { 
        parent.document.location.reload(); 
    } else { 
        parent.document.location = 'login.cfm'; 
    }
</script>

我会坚持下去的。

【问题讨论】:

  • 如果您发布收到的错误可能会有所帮助。
  • 当我回到办公室时,我将编辑我的帖子,其中包含错误。
  • 这是一个授权问题——我认为,您将通过 javascript 重定向到登录。
  • @S.Lott:如果是授权问题,那就意味着我的 cookie 搞砸了。对吗?
  • @afrosteve:通常。但也可能是您的 URL 错误,并且网站将您重定向到登录。或者,网站希望在查询字符串(“?sessionid=098qwe0r980qwe89r0q”)中找到您的会话 ID,或者 POST 中需要隐藏字段。

标签: python post upload urllib2


【解决方案1】:

您最好对服务器进行检测以查看失败的原因,而不是尝试在客户端进行调试。

【讨论】:

  • 我是这种东西的新手。检测服务器是什么意思?
  • @afrosteve:你可以访问服务器吗?如果是这样,您应该查看那里的日志,以从服务器的角度了解发生了什么。
  • @S.Lott:不幸的是我没有。在这一点上,我正在刺激一个黑匣子。
【解决方案2】:

WireShark 之类的工具将在比 firefox 插件低得多的级别上为您提供更完整的跟踪。

这通常很简单,比如没有正确设置内容类型,或者没有包含内容长度。

【讨论】:

    【解决方案3】:

    “调试 [网络服务] 进程的好方法是什么?”

    目前,我只是将 urllib2 响应转储到一个文本文件并检查输出以查看它是否与我手动上传文件时得到的匹配。

    正确。就这些了。

    HTTP 是一个非常简单的协议——你发出一个请求(在这种情况下是 POST),服务器就会响应。在调试过程中不涉及太多其他事情,您也无能为力。

    你还想要什么?严重地。您认为这种无状态协议可能存在什么样的调试器?

    【讨论】:

    • 我想象一个调试器只能在 Bentley Continental 内部工作。然后我想象我的客户为 Bentley 而不是所有这些服务器付费。
    • 有什么神奇的吗?我不做太多网络工作,所以我认为可能有一些工具,所有酷孩子都在使用。对不起,无知。
    • 我也想要您的 Bentley 调试器。
    • 不是无知——你必须有一些想法。你想到了什么样的调试器?严重地。你期望找到什么?你想找到什么?它会有哪些功能?
    • 我想到了一些可以清楚地表明错误的东西。也许通过针对某种预期输出测试实际输出,也许匹配 POST 正确完成时应该获得的标题。写完之后,这听起来像是一个单元测试。
    猜你喜欢
    • 2012-04-26
    • 1970-01-01
    • 2021-01-27
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 2020-03-11
    相关资源
    最近更新 更多