在Google Flights上,搜索信息被编码在 URL 参数中,大概是为了让用户可以轻松地彼此共享航班搜索。URL 格式如下所示:
https://www.google.com/travel/flights/search?tfs=CBwQAhoeagcIARIDSE5MEgoyMDIxLTA5LTEzcgcIARIDU0ZPGh5qBwgBEgNTRk8SCjIwMjEtMDktMTdyBwgBEgNITkxwAYIBCwj___________8BQAFIAZgBAQ
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个程序,可以根据航班信息(出发地、目的地、航班日期、乘客等)生成航班搜索 URL。为此,我需要知道信息是如何在 URL 中编码的,以便我可以重新创建它。
我知道航班信息是用 base64 或其某些变体编码的(我一直在使用base64decode.org进行测试)。对于 2021 年 9 月 13 日至 2021 年 9 月 17 日从 HNL-SFO 出发的往返航班,Google Flights 的网址如下:
https://www.google.com/travel/flights/search?tfs=CBwQAhoeagcIARIDSE5MEgoyMDIxLTA5LTEzcgcIARIDU0ZPGh5qBwgBEgNTRk8SCjIwMjEtMDktMTdyBwgBEgNITkxwAYIBCwj___________8BQAFIAZgBAQ
Run Code Online (Sandbox Code Playgroud)
tfs查询参数中下划线之前的部分解码为
jHNL
2021-09-13rSFOjSFO
2021-09-17rHNLp
Run Code Online (Sandbox Code Playgroud)
其中包含一些(但不是全部)可识别的航班信息。我不明白的是可识别信息之间的空白。使用这个网站,我了解到空白是字符的混合:
U+0008 : <control> BACKSPACE [BS]
U+001C : <control> INFORMATION SEPARATOR FOUR {file separator (FS)}
U+0010 : <control> DATA LINK ESCAPE [DLE]
U+0002 : <control> START OF TEXT [STX]
U+001A : <control> SUBSTITUTE [SUB]
U+001E : <control> …Run Code Online (Sandbox Code Playgroud)