从 URL 编辑并删除密码

Redact and remove password from URL

我有一个 URL 这样的:

https://user:password@example.com/path?key=value#hash

结果应该是:

https://user:???@example.com/path?key=value#hash

我可以使用正则表达式,但我想解析 URL 高级数据结构,然后对该数据结构进行操作,然后序列化为字符串。

Python可以吗?

您可以使用内置的 urlparse 从 url 中查询密码。它在 Python 2 和 3 中都可用,但位于不同的位置。

Python 2 import urlparse

Python 3 from urllib.parse import urlparse

例子

from urllib.parse import urlparse

parsed = urlparse("https://user:password@example.com/path?key=value#hash")
parsed.password # 'password'

replaced = parsed._replace(netloc="{}:{}@{}".format(parsed.username, "???", parsed.hostname))
replaced.geturl() # 'https://user:???@example.com/path?key=value#hash'

另见这个问题:Changing hostname in a url