让我解释一下:
我在python中构建了一个url解析器(源代码包含在底部),我试图在URL中查找搜索查询。通过观察,我发现" +"在搜索查询中转换为" " s,但当我在键盘上键入所有字符时,我注意到还有其他新字符,如%21。 Google中的搜索查询是否有任何特定的编码?
url解析器源代码:
>>
答案 0 :(得分:1)
Percent encoding。
例如,?
表示查询字符串的开头,并且无法明确地解析https://example.org/foo?bar?baz
。
这些特殊字符编码为百分号,字符的ASCII代码点以十六进制编码。例如:
In [4]: ord(' ')
Out[4]: 32
In [5]: hex(ord(' '))
Out[5]: '0x20'
Python已经有一个用于解析查询字符串的内置库:
from urllib.parse import parse_qs
def parseUrl(url):
params = parse_qs(url)
if 'client' in params:
browser = params['client'][0]
print('[+] Found browser:', browser)
query = params['q'][0]
print('[+] Found search term:', query)
return query