这篇文章给大家介绍如何进行url的编解码分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
创新互联是专业的关岭网站建设公司,关岭接单;提供网站制作、成都网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行关岭网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!url中使用的是ASCII码(8位)字符集中的字符。如东亚地区中文在url中就需要特意编码,规则是在百分号后面接上两个十六进制数字,和其在ASCII字符表中的对应位置相同。
特殊情况:
1、如常见情况不能再url中使用空格字符,当让现在先进浏览器可以自动编码如当访问http://192.168.90.162/advanced search.html 浏览器会自动http://192.168.90.162/advanced%20search.html
2、有些字符使得url非法,因为是保留字符。如斜线字符将会用来分割路径,如果使用斜线字符而不是将其作为路径,则需要转义如斜线(当然:windows下建立文件名不能包含"\/:?<>|"中的任何字符),但是linux很灵活如(touch :a;touch \
保留字符 | URL编码 | 保留字符 | url编码 | 保留字符 |
---|---|---|---|---|
; | %3B | : | 3%A | |
/ | 2%F | @ | %40 | |
& | %26 | ? | %3F |
3、不安全字符指那些虽然在URL中没有特殊意义,而可能在URL的上下文中有特殊含义的字符。如双引号在标签中分开属性和值,如果在url中包含有双引号,则浏览器解析时可能错误。此时可以用%22来编码双引号,进而解决冲突。
尽管浏览器智能解析
不安全字符编码举例:
< %3C , > %3E , # %23 , % %25, ~ %7E , \ %5C 等。
quote方法:对URL进行编码;
unquote: 对url进行解码
quote_plus:同quote方法,进一步将空格表示成+符号;
unquote_plus:同unquote方法,将+符号变成空格
>>> r2=quote("/~test aggin &/") >>> r2 '/%7Etest%20aggin%20%26/' #注意空格和&符号都已经编码了,而”/“并没有转换 >>> un_r2=unquote(r2) >>> un_r2 '/~test aggin &/' >>> quote("~/ test","~/") #quote第二个参数的使用:当将"~"字符加入忽略字符列表后,再次输出就没有对”~“进行编码了。 '~/%20test'
quote_plus使用时会将”/“字符替换成%2F,并将空格字符替换成+符号,这是同quote的主要区别,如下:
>>> quote_plus("/~test aggin &/") '%2F%7Etest+aggin+%26%2F' >>> unquote_plus('%2F%7Etest+aggin+%26%2F') '/~test aggin &/'
http://192.168.90.162/中文.html, 现在主流浏览器chrome,IE,edge等已经能识别了。然而问题不能忽视,对于不安全的字符使用url编码总是不安全的。
>>> quote("中文编码") '%E4%B8%AD%E6%96%87%E7%BC%96%E7%A0%81' >>> unquote('%E4%B8%AD%E6%96%87%E7%BC%96%E7%A0%81') '中文编码'
http两种数据提交方式:get和post。都需要提交查询参数和其值。特别get方法中还会将这种值显示在地址栏中如:
https://www.baidu.com/s?wd=url%E7%BC%96%E7%A0%81&rsv_spt=1&rsv_iqid=0xb6a3f6f50003c26a&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf8&rqlang=cn&tn=baiduhome_pg&rsv_enter=0&oq=url%25E7%25BC%2596%25E7%25A0%2581&rsv_t=a3a7nKjz1kdhBSmGXcoRFeCicwee05LR5H9nq5W5GZWVKwR×××WAjMl98d3Rfvhq%2FCJb&rsv_pq=8532218200044be3
>>> unquote("url%E7%BC%96%E7%A0%81") ?wd=url%E7%BC%96%E7%A0%81会将值显示在地址栏中 'url编码'
对查询参数进行编码的方法:urlencode由urllib.parse模块提供该方法
功能:将查询的参数值对返回成URL编码的新式。参数值对可以是一系列的字典数据。
>>> urlencode([('key1','value1'),('key2','value2')]) 'key1=value1&key2=value2' >>> help(urlencode) Help on function urlencode in module urllib.parse:
说明1、查询参数为一个(keyword,value)的列表,这里列表的长度为2..注意参数格式列表里面套元组
2、urlencode将参数值对列表编码成了一个URL字符串,查询参数顺序和列表中一致
>>> urlencode([("key1","urlencode编码")]) 'key1=urlencode%E7%BC%96%E7%A0%81'
urlencode方法还可以接受一个可选参数,用来对输入查询参数中的数据进行控制。默认值False。即当查询数据(keyword,value)列表中的value也为列表时,将其使用整个quote_pluse方法进行编码
>>> urlencode([("keyword",("value1","value2","value3"))]) 'keyword=%28%27value1%27%2C+%27value2%27%2C+%27value3%27%29' >>> urlencode([("keyword",("value1","value2","value3"))],True) 但当参数为True时,会将value列表中的每个值都和keyword组成一个查询参数值对。 'keyword=value1&keyword=value2&keyword=value3'
关于如何进行url的编解码分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。