从 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
我有一个 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