我正在尝试写一个bittorrent跟踪器。跟踪器协议将二进制十六进制编码到http“GET”参数中。它看起来类似于以下内容:
http://localhost:5000/announce?info_hash=%C5O%94%1b%1a9%86%86%12B%D7U%D0%ACF%E9%FA%3c%5d2
如果我使用request.args,它将尝试将“info_hash”解码为字符串,这将不起作用,因为info_hash应该是一些原始二进制序列,不能用任何字符串编码表示
那么,我是否可以使用任何东西来提取以字节为单位的结果,而不必滚动我自己的解析器
谢谢
不幸的是,在标准库中似乎没有一种真正简单的方法来实现这一点
方法是通过
request.query_string
获取原始查询字符串并对其进行解析。问题是Python标准库函数都假定值也是Unicode,这对于Bittorrent跟踪器来说当然不是真的,正如您所指出的问题是,标准库具有所有必需的功能,即
parse_qs
fromurllib.parse
函数,只需稍加修改即可实现:因此,您应该能够调用
parse_qs_bytes_to_bytes(request.query_string.decode())
相关问题 更多 >
编程相关推荐