URL详解

一:URL举例

就以下面这个URL为例,介绍下普通URL的各部分组成

http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name

从上面的URL可以看出,一个完整的URL包括以下几部分:

1.协议部分:该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,FTP等等本例中使用的是HTTP协议。在"HTTP"后面的“//”为分隔符

2.域名部分:该URL的域名部分为“www.aspxfans.com”。一个URL中,也可以使用IP地址作为域名使用

3.端口部分:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口

4.虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/news/”

5.文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名

6.锚部分:从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也不是一个URL必须的部分

7.参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。

二:URL通用格式

URL的语法:大多数URL语法都建立在9个部分构成的通用格式上,而其中最重要的是方案(scheme)、主机(host)和路径(path)

通用格式:方案://用户名:密码@主机名:端口/服务器上资源的路径;参数?查询#片段

1、方案:指访问服务器以获取资源时要使用哪种协议。比如,http、https和FTP等

2、主机和端口:指资源宿主服务器的主机名或IP地址。端口是指资源宿主服务器正在监听的端口,很多HTTP的默认端口号是80。比如,130.32.12.34:800,这里的IP地址是主机名,端口是800

3、用户名和密码:很多服务器都要求输入用户名和密码才会允许用户访问数据,如FTP服务器。

例子:joe是用户名、joepasswd是密码

ftp://joe:[email protected]/pub/name

4、路径:路径说明了资源位于服务器的什么地方。

例子:/cans/index.html就是URL中的路径

http://www.hda.com/cans/index.html

5、参数:为了向应用程序提供它们所需要的输入参数,以便正确地与服务器进行交互,URL中有个参数组件。由字符“;”将其与URL的其余部分分隔开来。

例子:;type=7;nam=true就是两个参数。

ftp://prep.mit.edu/pub;type=7;nam=true

6、查询:很多资源,比如数据库服务、搜索引擎,都可以通过提问题或进行查询来缩小请求资源的范围。由字符“?”将其与URL的其余部分分隔开来。

例子:查询组件有两个名/值对:name=csh和age=24

http://www.cheng.cn/si.html?name=csh&age=24

7、片段:#代表网页中的一个位置,其右面的字符就是该位置的标识符(一般情况下,锚链接会用到)

例子:下面的URL中,代表网页si.index的print位置,浏览器读取这个URL后,会自动将print位置滚动至可视区域。

http://www.cheng.cn/si.html#print

URL的分类:URL可以分为绝对URL和相对URL

绝对URL:绝对URL中包含了访问资源所需的全部信息。

案例:<a href=’http://cheng.com/si.html></a>

相对URL:相对URL包含的只是访问资源所需的部分信息。而要想得到访问资源的全部信息的话,就要和另一个被称为基础(base)的URL结合进行解析

案例:<script src="lib/sea.js"></script>

相对URL中的基础URL:转换相对URL的第一步就是找到基础URL

1、在资源中显式地指定基础URL。比如,HTML文档中可能会包含一个定义了基础URL的HTML标签<base>

2、封装资源的基础URL。在HTML中,基础URL可以从它们所属资源的基础URL中推导出来

三:URL特殊字符

有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。编码的格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。例如 空格的编码值是"%20"。

下表中列出了一些URL特殊符号及编码

:替换为%3A 

      十六进制值
1. + URL 中+号表示空格 %2B
2. 空格 URL中的空格可以用+号或者编码 %20
3. / 分隔目录和子目录 %2F
4. ? 分隔实际的 URL 和参数 %3F
5. % 指定特殊字符 %25
6. # 表示书签 %23
7. & URL 中指定的参数间的分隔符 %26
8. = URL 中指定参数的值 %3D

例:要传递字符串“this%is#te=st&o k?+/”作为参数t传给te.asp,则URL可以是:

te.asp?t=this%25is%23te%3Dst%26o%20k%3F%2B%2F 或者

te.asp?t=this%25is%23te%3Dst%26o+k%3F%2B%2F (空格可以用%20或+代替)

Java中URL 的编码和解码函数

java.NET.URLEncoder.encode(String s)和java.Net.URLDecoder.decode(String s);

JavaScript 中URL 的编码和解码函数

escape(String s)和unescape(String s) ;

点的转义:. ==> u002E

美元符号的转义:$ ==> u0024

乘方符号的转义:^ ==> u005E

左大括号的转义:{ ==> u007B

左方括号的转义:[ ==> u005B

左圆括号的转义:( ==> u0028

竖线的转义:| ==> u007C

右圆括号的转义:) ==> u0029

星号的转义:* ==> u002A

加号的转义:+ ==> u002B

问号的转义:? ==> u003F

反斜杠的转义: ==> u005C

举例:

我们需要模拟的地址为:=1453725386008”>https://login.weixin.qq.com/jslogin?appid=wx782c26e4c19acffb&redirect_uri=https%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&fun=new&lang=en_US&=1453725386008 ,所以我们模拟的代码如下:

[python] view plain copy

  1. <code class="language-cpp">#coding=utf8
  2. import time, requests
  3. session = requests.Session()
  4. url = ‘https://login.weixin.qq.com/jslogin‘
  5. params = {
  6. ‘appid‘: ‘wx782c26e4c19acffb‘,
  7. ‘redirect_uri‘: ‘https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage‘,
  8. ‘fun‘: ‘new‘,
  9. ‘lang‘: ‘en_US‘,
  10. ‘_‘: int(time.time()),
  11. }
  12. r = session.get(url, params = params)
  13. print(‘Content: %s‘%r.text)</code>

原文地址:https://www.cnblogs.com/gluncle/p/9639761.html

时间: 2024-10-15 20:13:34

URL详解的相关文章

Fiddler抓包6-get请求(url详解)

前言 上一篇介绍了Composer的功能,可以模拟get和post请求,get请求有些是不带参数的,这种比较容易,直接放到url地址栏就行.有些get请求会带有参数,本篇详细介绍url地址格式. 一.url详解 1.url就是我们平常打开百度在地址栏输入的:https:www.baidu.com,如下图,这个是最简单的url地址,打开的是百度的主页 2.再看一个稍微复杂一点的url,在百度输入框输入:上海悠悠博客园 3.查看url地址栏,对比之前的百度首页url地址,后面多了很多参数.当然最主要

三、get请求(url详解)

前言 上一篇介绍了Composer的功能,可以模拟get和post请求,get请求有些是不带参数的,这种比较容易,直接放到url地址栏就行.有些get请求会带有参数,本篇详细介绍url地址格式. 一.url详解 1.url就是我们平常打开百度在地址栏输入的:https:www.baidu.com,如下图,这个是最简单的url地址,打开的是百度的主页 2.再看一个稍微复杂一点的url,在百度输入框输入:上海悠悠博客园 3.查看url地址栏,对比之前的百度首页url地址,后面多了很多参数.当然最主要

06_Fiddler_get请求(url详解)

介绍了Composer的功能,可以模拟get和post请求,get请求有些是不带参数的,这种比较容易,直接放到url地址栏就行.有些get请求会带有参数,本篇详细介绍url地址格式. 一.url详解 1.url就是我们平常打开百度在地址栏输入的:https:www.baidu.com,如下图,这个是最简单的url地址,打开的是百度的主页 2.再看一个稍微复杂一点的url,在百度输入框输入:上海悠悠博客园 3.查看url地址栏,对比之前的百度首页url地址,后面多了很多参数.当然最主要的参数是:w

URI与URN与URL详解

当没有URI时 什么是URI和URN和URL URI详解 Uniform Resource Identifier 统一资源标识符 URI的组成 案例: https://tools.ietf.org/html/rfc7231?test=1#page-7 原文地址:https://www.cnblogs.com/wqbin/p/12080413.html

【基础进阶】URL详解与URL编码

作为前端,每日与 URL 打交道是必不可少的.但是也许每天只是单纯的用,对其只是一知半解,随着工作的展开,我发现在日常抓包调试,接口调用,浏览器兼容等许多方面,不深入去理解URL与URL编码则会踩到很多坑.故写下此篇文章,详解一下 URL .    URL 与 URI 很多人会混淆这两个名词. URL:(Uniform/Universal Resource Locator 的缩写,统一资源定位符). URI:(Uniform Resource Identifier 的缩写,统一资源标识符). 关

URL详解与URL编码

作为前端,每日与 URL 打交道是必不可少的.但是也许每天只是单纯的用,对其只是一知半解,随着工作的展开,我发现在日常抓包调试,接口调用,浏览器兼容等许多方面,不深入去理解URL与URL编码则会踩到很多坑.故写下此篇文章,详解一下 URL . URL 与 URI 很多人会混淆这两个名词. URL:(Uniform/Universal Resource Locator 的缩写,统一资源定位符). URI:(Uniform Resource Identifier 的缩写,统一资源标识符). 关系:

php使用http_build_query,parse_url,parse_str创建与解析url详解

1.http_build_query string http_build_query ( mixed $query_data [, string $numeric_prefix [, string $arg_separator [, int $enc_type = PHP_QUERY_RFC1738 ]]] ) 使用给出的关联(或下标)数组生成一个经过 URL-encode 的请求字符串. 参数: query_data 可以是数组或包含属性的对象. 一个query_data数组可以是简单的一维结

nodejs URL 详解

1 我们可以使用.parse方法来将一个URL字符串转换为URL对象 例如: url.parse('http://user:[email protected]:8080/p/a/t/h?query=string#hash');/* =>{ protocol: 'http:',  auth: 'user:pass',  host: 'host.com:8080',  port: '8080',  hostname: 'host.com',  hash: '#hash',  search: '?qu

HTML &lt;meta&gt; 标签 遇到&lt;meta http-equiv=&quot;refresh&quot; content=&quot;0; url=&quot;&gt;详解

页面定期刷新,如果加url的,则会重新定向到指定的网页,content后面跟的是时间(单位秒),把这句话加到指定网页的<head></head>里一般也用在实时性很强的应用中,需要定期刷新的如新闻页面,论坛等,不过一般不会用这个,都用新的技术比如ajax等 <meta http-equiv="refresh" content="0; url=">'经过一段时间转到另外某个页面 content="0;URL=",