谷歌是否使用特定的编码来编码其搜索查询



让我解释一下:

我正在用python构建一个url解析器(源代码包含在底部(,并且我正在尝试在URL中查找搜索查询。通过观察,我发现搜索查询中的"+"翻译为"s,但是当我在键盘上键入所有字符时,我注意到还有其他新字符,例如%21。谷歌中的搜索查询是否有任何特定的编码?

网址解析器源代码:

def parseUrl(url):
    if "?client" in url:
        browser = url[url.index("?client")+8:url.index("&")]
        print("[+] Found browser: "+browser)
    idxPoint = url.index("&q=")+3
    if "&sourceid" in url:
        endSearch = url.index("&sourceid")
    elif "&oq" in url:
        endSearch = url.index("&oq")
    else:
        print("[!] Error: couldn't find &gs or &oq in your url.")
        return
    parseDict = {"+":" "}
    searchQuery = url[idxPoint:endSearch]
    for parseObj in parseDict:
        searchQuery = searchQuery.replace(parseObj, parseDict[parseObj])
    print("[+] Found search term: "",searchQuery+""")
    return searchQuery

当某些字符无法按字面意思插入 URL 时,将使用百分比编码。例如,?表示查询字符串的开头,并且无法明确分析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

最新更新