【问题标题】:How do you build a URL that contains a username and password from user input in Python?如何在 Python 中构建一个包含用户名和密码的 URL?
【发布时间】:2015-11-28 14:56:43
【问题描述】:

我看到你可以解析用户名和密码:

from urlparse import urlparse
r = urlparse('http://myuser:mypass@example.com')
print r.username
# => 'myuser'

我怎样才能走另一条路?我不能使用urlunparse,因为我不能这样做:

r.username = request.args['username']
# => AttributeError: can't set attribute

我很感兴趣,因为用户名包含需要转义的字符(即:@/)。

编辑:

这个字符串来自用户输入,所以我不会提前知道它是什么。维护您自己的转义字符列表存在安全风险,因此字符串连接和使用 replace 转义的自定义字符在这里无济于事。

【问题讨论】:

  • 你不能在设置r之前做一个简单的str.format(x,y,z)吗?
  • @taesu 不,需要转义的字符不会以这种方式转义。查看我的更新。
  • @iAdjunct 编写您自己的副本需要转义(而不是维护它)是一种安全风险。

标签: python url


【解决方案1】:

结果是查询参数执行的基本身份验证 URL use the same escape characters 的用户名部分。

所以答案是使用urllib.quote(username, safe='') 然后连接。 (You'll need safe 参数或/ 不会被转义。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    • 2011-06-26
    • 2020-01-26
    • 2011-05-27
    相关资源
    最近更新 更多