这是我见过最复杂的URL了
2022-10-26 09:2:50 Author: 我不是Hacker(查看原文) 阅读量:31 收藏

一、先来个简单点的url

https://https:⁄⁄[email protected]://www.netmeister.org/https:⁄⁄www.netmeister.org⁄?https://www.netmeister.org=https://www.netmeister.org;https://www.netmeister.org#https://www.netmeister.org

这个url是合法的,我们来curl验证一下

二、加点难度

为了更好的分解这种复杂的URL,上面的例子还是太简单了,让我们来拆解一个更为复杂的URL,如下:

https://https:⁄⁄[email protected]://www.netmeister.org/https:⁄⁄www.netmeister.org⁄?https://www.netmeister.org=https://www.netmeister.org;https://www.netmeister.org#https://www.netmeister.org

这也是一个合法的URL,只不过更加复杂,不过一点一点拆解开来就能更加感受到URL格式的魅力。

三、URL组成

解读之前我们先来看一下URL的各部分组成,及各部分允许出现的字符(正则表示)。

这也是网上最著名的URL说明图了,下面我们进入正题。

四、复杂的URL拆解说明

为了方便查看和拆解,我把每一块都用不同的颜色标记出来

P.S. 此颜色和上图中的颜色没有任何关系

https://https:⁄⁄www.netmeister.org@https://www.netmeister.org/https:⁄⁄www.netmeister.org⁄?https://www.netmeister.org=https://www.netmeister.org;https://www.netmeister.org#https://www.netmeister.org

  • https:// -- 普通的https协议头

  • https -- url基础认证的用户名

  • : -- 冒号是分隔基础认证中用户名和密码的符号

  • ⁄⁄www.netmeister.org -- url基础认证的密码,注意这里的斜线其实是unicode 字符(Fraction Slash),url编码后其实长这个样子,

    %E2%81%84%E2%81%84www%2Enetmeister%2Eorg
  • @ -- 分隔认证信息和hostname的符号

  • https -- 其实是hostname,需要在 /etc/hosts中为https指定一个可以访问的ip

  • : -- 分隔hostname和端口号

  • // -- 两个空的目录

  • www.netmeister.org -- 目录名字

  • / -- 正常的路径分隔符

  • https:⁄⁄www.netmeister.org -- 文件名,这里也用到了Fraction Slash

  • ? -- 分隔后面的url参数

  • https://www.netmeister.org -- 参数键

  • = -- 参数键值分隔符

  • https://www.netmeister.org -- 参数值

  • ; -- 参数各键值对分隔符,一般用&,也可以用;

  • https://www.netmeister.org -- 参数,可以没有值

  • # -- 分段符号

  • https://www.netmeister.org -- 最后是一个锚点分段

怎么样是不是拆解完就很清晰了,通过这一个例子,就能完全理解URL了。


文章来源: http://mp.weixin.qq.com/s?__biz=MzkwNDI1NDUwMQ==&mid=2247486361&idx=1&sn=6e6ad8704b7dfaba48151b177825b0fe&chksm=c0888ed3f7ff07c5d89361d381a5cdc4c6be6951b551d21f4950e588b1a6c797f0f9f43223be#rd
如有侵权请联系:admin#unsafe.sh