网页读取器
可以注意到白名单 whitelist_hostname 有题目所给的两个样例。
URI 的语法(摘自官方题解)
scheme:[//authority]path[?query][#fragment]
其中用 [] 围住的是可选的。然后我们来看一下各部分:
- 协议 (scheme):访问资源使用的协议,比如说 http, https 之类的。
- 来源 (authority):来源中包含了主机名,和可选的用户信息和端口号,比如 www.ustc.edu.cn, admin:[email protected]:2333(使用用户名为 admin,密码为 admin,访问 www.example.com 的 2333 端口获取资源)。
- 路径 (path):比如说 /cgi-bin, /a/b/c/d/e/f/g 等,有等级 (hierarchical) 关系。
- 查询 (query):没有等级 (non-hierarchical) 关系的数据。一般来说,查询中的参数会被网站的后端获取到,然后进行对应的处理,比如 ?q=keyword,?a=1&b=2。
- 片段 (fragment):指向一个更低级别的资源,例如 #Examples,浏览器访问时会滚动到 id 为 Examples 的标签。如果写过单页面应用 (SPA) 的同学可能会知道,一些框架处理路由时使用 hash 模式,这里的 hash 就是片段开头的 #。
让 check_hostname 解释出主机名为 example.com 的同时,让 requests.get() 实际访问我们想要的地址。
http://web1/flag#@example.com
输入后获得flag。
Last modified 8mo ago