如何在Python中构建包含用户输入的用户名和密码的URL?

时间:2015-09-02 22:44:16

标签: python url

我发现您可以使用以下方法解析用户名和密码:

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在这里不会有帮助。

1 个答案:

答案 0 :(得分:2)

结果显示查询参数的基本身份验证网址use the same escape characters的用户名部分。

所以答案是使用urllib.quote(username, safe='')然后连接。 (safe参数You'll need/无法被撤消。)