让我解释一下:
我正在用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
Percent encoding用于某些字符不能直接插入到URL中的情况。 例如,
?
表示查询字符串的开头,这将使https://example.org/foo?bar?baz
无法进行明确的解析。 这些特殊字符编码为百分号,字符的ASCII码位编码为十六进制。例如:Python已经有一个用于解析查询字符串的内置库:
相关问题 更多 >
编程相关推荐