我发现您可以使用以下方法解析用户名和密码:
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
在这里不会有帮助。
答案 0 :(得分:2)
结果显示查询参数的基本身份验证网址use the same escape characters的用户名部分。
所以答案是使用urllib.quote(username, safe='')
然后连接。 (safe
参数You'll need或/
无法被撤消。)