【问题标题】:How do I 'fake' a form POST request on the commandline in ssh with python?如何使用 python 在 ssh 的命令行上“伪造”表单 POST 请求?
【发布时间】:2011-04-30 03:28:10
【问题描述】:

我有一个小问题,是关于我在编写我的第一个 Python Web 应用程序时遇到的问题。

我的网站上有一个表单,它的动作是一个 python 文件。表单在发布请求中发布 2 个输入框的值,我的 pythonfile 将捕获这些并用它们做一些事情。在测试我的程序时,我希望能够在 ssh 中的命令行上发布这些参数,例如:

python twitter.py -user1="bob" -user2="labla"

但是我似乎无法让它工作并且在谷歌上找不到任何东西。

现在我的 python 文件看起来像这样:

#!/usr/bin/python
import cgi
import cgitb; cgitb.enable()
import nltk
form = cgi.FieldStorage()

reshtml = """Content-Type: text/html\n"""
print reshtml 

user1 = form['user1'].value
user2 = form['user2'].value


print user1 + "  , " + user2

那么如何在 ssh 中使用 python 的命令行“伪造”表单 POST 请求?

【问题讨论】:

  • 试试cURL
  • 好的,当我这样做时,我得到一个 500 错误: curl -F "user1=bob" "user2=labla" mydomain.com/twitter2.py,知道有什么问题吗?
  • 请参阅:curl.haxx.se/docs/manpage.html 了解更多信息。我对它没有太多经验,现在系统上也没有它可供我使用,所以只能提供建议。我什至不能 100% 确定你可以让它以这种方式工作,但我曾经使用 PHP cURL 实现来进行这种测试,所以期待它可以完成。抱歉,我帮不上忙。
  • 您的意思是在命令行上运行您的脚本并传递这些参数吗?或者实际上是从命令行发布数据(就好像它来自浏览器中的表单一样)?
  • 如果像其他 cmets 建议的那样,您确实想发布到服务器,请尝试 'curl -v -d "user1=bob" -d "user2=labla"
    '。如果您收到 500 个错误,您需要查看您的服务器端代码是否正在打印任何内容。

标签: python ssh command-line-arguments


【解决方案1】:

您可以使用httplib2 将请求发布到服务器。对于文件上传(多部分请求),您应该使用Poster

您可能需要先获取表单,然后才能发布您的服务器检查安全令牌(隐藏字段或 cookie)

【讨论】:

    猜你喜欢
    • 2021-10-17
    • 2016-01-01
    • 1970-01-01
    • 2011-01-16
    • 2013-04-06
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多