URL 解析函数专注于将 URL 字符串拆分为其组成部分,或将 URL 组成部分组合成 URL 字符串。
简单来说,urllib.parse 用于解析 URL,我们可以通过在 URL 前添加空格来绕过它。这发生在 Python 3.11.4 及更早版本中。
让我们分解 example.py
以下是一组你不应访问的网站:
blocked_list = [
"http://example.com/",
"http://example2.com/"
]
此函数检查网站是否在阻止列表中,如果在阻止列表中,则应返回 URL Blocked
def is_url_blocked(url):
parse = urllib.parse.urlparse(url).geturl()
if parse in blocked_list: return 'URL Blocked'
else: return 'Bypassed'
现在我添加了两个 URL,并检查它们中是否有任何一个被阻止且无法访问:
payload1 = " http://example.com/"
payload2 = "http://example.com/"
print(
is_url_blocked(payload1),
"\n",
is_url_blocked(payload2)
)
payload1 是我绕过 is_url_blocked() 的地方,因为在 URL 前添加长空格会绕过 urllib.parse.urlparse(url).geturl(),它不会按预期执行。
这就是为什么输出是
Bypassed
但在 payload2 上,我们得到
URL Blocked
如果你想通过捐赠支持我,我建议你把它捐给真正需要的人。如果你这样做了,那么请认为我已经赢得了你的支持。