有没有一个特定的编码,谷歌用来编码其搜索查询?

2024-09-30 10:41:11 发布

您现在位置:Python中文网/ 问答频道 /正文

让我解释一下:

我正在用python构建一个url解析器(源代码包含在底部),并尝试在url中查找搜索查询。通过观察,我发现搜索查询中的“+”会转换为“”s,但当我在键盘上键入所有字符时,我注意到还有其他新字符,如%21。谷歌的搜索查询有没有特定的编码?你知道吗

url解析器源代码:

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

Tags: inbrowserclient解析器urlindexif源代码
1条回答
网友
1楼 · 发布于 2024-09-30 10:41:11

Percent encoding用于某些字符不能直接插入到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

相关问题 更多 >

    热门问题