关于url:链接的参数

var test = window.location.hash; 169=83&172=137

January 30, 2023 · 1 min · jiezi

关于url:yarl-PK-python3-标准库-urllibqbit

前言测试环境 Python 3.8yarl 1.8.1本文次要是绝对比易用性,无关性能yarl 官网文档:https://yarl.aio-libs.org/en/...url 组成部分yarl VS. urllib获取 url 参数urllib>>> from urllib import parse>>> url = r'https://docs.python.org/3.8/search.html?q=parse&check_keywords=yes&area=default'>>> parseResult = parse.urlparse(url)>>> parseResultParseResult(scheme='https', netloc='docs.python.org', path='/3.8/search.html', params='', query='q=parse&check_keywords=yes&area=default', fragment='')>>> param_dict = parse.parse_qs(parseResult.query)>>> param_dict{'q': ['parse'], 'check_keywords': ['yes'], 'area': ['default']}>>> q = param_dict['q'][0]>>> q'parse'#留神:加号会被解码,可能有时并不是咱们想要的>>> parse.parse_qs('proxy=183.222.102.178:8080&task=XXXXX|5-3+2'){'proxy': ['183.222.102.178:8080'], 'task': ['XXXXX|5-3 2']}如果你还想问为什么没有 urldecode,把下面的示例看五遍。^_^ yarl>>> url = URL(r"https://docs.python.org/3.8/search.html?q=parse&q=1&check_keywords=yes&area=default")>>> url.query["q"]'parse'# 多值时能够用 getall 函数>>> url.query.getall("q") ['parse']解析 url 的 query stringurllib>>> from urllib import parse>>> parse.parse_qs('action=addblog&job=modify&tid=1766670') # 1{'tid': ['1766670'], 'action': ['addblog'], 'job': ['modify']} #留神和第3个并不一样>>> parse.parse_qsl('action=addblog&job=modify&tid=1766670')[('action', 'addblog'), ('job', 'modify'), ('tid', '1766670')] # 3>>> dict(parse.parse_qsl('action=addblog&job=modify&tid=1766670')) #留神和第1个并不一样{'tid': '1766670', 'action': 'addblog', 'job': 'modify'}yarl>>> url = URL.build(query_string="action=addblog&job=modify&tid=1766670")>>> url.query<MultiDictProxy('action': 'addblog', 'job': 'modify', 'tid': '1766670')>>>> url.query['tid']'1766670'encode 编码urllib>>> from urllib import parse>>> query = { 'name': 'walker', 'age': 99, }>>> parse.urlencode(query)'name=walker&age=99'yarlfrom yarl import URL>>> query = { 'name': 'walker', 'age': 99, }>>> url = URL.build(query=query)>>> url.query_string'name=walker&age=99'quote 编码urllib>>> from urllib import parse>>> parse.quote('a&b/c') #未编码斜线'a%26b/c'>>> parse.quote_plus('a&b/c') #编码了斜线'a%26b%2Fc'yarlyarl 仿佛无此性能unquote 解码urllibfrom urllib import parse>>> parse.unquote('1+2') #不解码加号'1+2'>>> parse.unquote('1+2') #把加号解码为空格'1 2'域名编码防止敏感词屏蔽>>> ''.join('%' + ('%x'%ord(ch)).upper() for ch in 'github.com')'%67%69%74%68%75%62%2E%63%6F%6D'本文出自 qbit snap

October 24, 2022 · 1 min · jiezi

关于url:BUGurl-参数-AES-加密和解密问题

原文地址: 【BUG】url 参数 AES 加密和解密问题 欢送拜访我的博客: http://blog.duhbb.com/ 引言bug 复盘, 让你少写 bug! 明天剖析的是一个 url 参数加密解密的问题, 起因毁坏了加密后的字符串导致解密失败. 参数的加密解密状况形容url 有个参数是地址, 比方 http://www.hello.com/, 申请这个 url 的时候试图把最初的正斜杠给 trim 掉. 当初有个平安问题须要将这个地址参数给加密, 而加密后的字符串尾部可能呈现 /. 所以解决这个问题的时候肯定要留神: 加密之前能够 trim加密之后的字符串不能再 trim 了, 否则加密的后果不残缺同理 解密之前的字符串是不能 trim 的解密之后的字符串能够 trim 的为什么始终没有暴露出这个问题呢? 起因是, 加密的盐值是用了日期, 导致 / 的呈现是个概率问题, 摸不准那天就触发了这个雷了. 问题起因如上, 就是因为解密的时候没有判断是否启用了加密, 而先去 trim 而后在解密, 会导致如果加密字符串尾部有 /, 最初解密的加密字符串是不对的. 正斜杠 / 须要本义吗?Chrome + SpringBoot 测试?a=/sdfsdf/sdfsf&b=/ 这种组合的话在 Spring 中是能够获取到带 / 的 a 和 b 的值的. 用 %2F 或者 %2f 的话也能够获取 / 参数, emmmmm. ...

June 15, 2022 · 1 min · jiezi

关于url:2021年最新获取url参数的方法用正则就落后啦

前言:置信大家对获取浏览器参数都很相熟,第一反馈是应用正则表达式去对浏览器的参数进行切割获取,然而浏览器曾经提供了一个URLSearchParams这个接口给咱们去操作URL的查问字符串 应用正则表达式获取url温故而知新,先上一下咱们惯例应用正则表达式去获取url参数的代码 function getParams(url, params){ var res = new RegExp("(?:&|/?)" + params + "=([^&$]+)").exec(url); return res ? res[1] : '';} // url: xx.com?id=2&isShare=trueconst id = getParams(window.location.search, 'id') console.log(id) // 2复制代码然而,当初再也不必正则这么简单去获取浏览器的查问参数啦,浏览器给咱们间接提供了一个URLSearchParams接口,让咱们能够对查问参数有很大的操作空间,而且比起之前应用正则,更加简洁间接 对于URLSearchParams办法代码实现首先把怎么应用URLSearchParams办法实现获取url参数的代码呈上 const urlSearchParams = new URLSearchParams(window.location.search);const params = Object.fromEntries(urlSearchParams.entries()); console.log(params) // {id: '2', isShare: 'true'}console.log(params.id) // 2复制代码是不是超级简略,只须要以url作为参数传入,并且创立URLSearchParams的一个实例对象,而后调用entries()这个办法,返回一个迭代协定iterator,该协定反对能够遍历所有反对健/值对的列表 此时还须要通过Object.fromEntries()这个办法去把该健/值对的列表,而后咱们就能够欢快地应用获取到的参数啦 URLSearchParams的兼容性搜了一下URLSearchParams的兼容性查问,详情请点击 IE真的是万恶之源,其余古代浏览器的兼容性都杠杠的,如果是不须要兼容IE的我的项目,能够释怀食用 如果切实要兼容IE,也不要怕,能够应用url-search-params-polyfill这个插件去应用啦 装置形式: npm install url-search-params-polyfill --save复制代码应用形式: const params = new URLSearchParams("id=2&isShare=true");复制代码最初如果你感觉此文对你有一丁点帮忙,点个赞。或者能够退出我的开发交换群:1025263163互相学习,咱们会有业余的技术答疑解惑 如果你感觉这篇文章对你有点用的话,麻烦请给咱们的开源我的项目点点star: https://gitee.com/ZhongBangKe...不胜感激 !

November 13, 2021 · 1 min · jiezi

关于url:转载阮一峰关于URL编码

一、问题的由来URL就是网址,只有上网,就肯定会用到。 一般来说,URL只能应用英文字母、阿拉伯数字和某些标点符号,不能应用其余文字和符号。比方,世界上有英文字母的网址"http://www.abc.com",然而没有希腊字母的网址"http://www.a.com"(读作阿尔法-贝塔-伽玛.com)。这是因为网络规范RFC 1738做了硬性规定: "...Only alphanumerics [0-9a-zA-Z], the special characters "$-_.+!*'()," [not including the quotes - ed], and reserved characters used for their reserved purposes may be used unencoded within a URL.""只有字母和数字[0-9a-zA-Z]、一些特殊符号"$-_.+!*'(),"[不包含双引号]、以及某些保留字,才能够不通过编码间接用于URL。"这意味着,如果URL中有汉字,就必须编码后应用。然而麻烦的是,RFC 1738没有规定具体的编码方法,而是交给应用程序(浏览器)本人决定。这导致"URL编码"成为了一个凌乱的畛域。 上面就让咱们看看,"URL编码"到底有多凌乱。我会顺次剖析四种不同的状况,在每一种状况中,浏览器的URL编码方法都不一样。把它们的差别解释分明之后,我再说如何用Javascript找到一个对立的编码方法。 二、状况1:网址门路中蕴含汉字关上IE(我用的是8.0版),输出网址http://zh.wikipedia.org/wiki/春节。留神,春节这两个字此时是网址门路的一部分。 查看HTTP申请的头信息,会发现IE理论查问的网址是http://zh.wikipedia.org/wiki/%E6%98%A5%E8%8A%82。也就是说,IE主动将"春节"编码成了%E6%98%A5%E8%8A%82。 咱们晓得,"春"和"节"的utf-8编码别离是E6 98 A5和E8 8A 82,因而,%E6%98%A5%E8%8A%82就是依照程序,在每个字节前加上%而失去的。(具体的转码办法,请参考我写的《字符编码笔记》。) 在Firefox中测试,也失去了同样的后果。所以,论断1就是,网址门路的编码,用的是utf-8编码。 三、状况2:查问字符串蕴含汉字在IE中输出网址http://www.baidu.com/s?wd=春节。留神,"春节"这两个字此时属于查问字符串,不属于网址门路,不要与状况1混同。 查看HTTP申请的头信息,会发现IE将春节转化成了一个乱码。 切换到十六进制形式,能力分明地看到,"春节"被转成了B4 BA BD DA。 咱们晓得,春和节的GB2312编码(我的操作系统"Windows XP"中文版的默认编码)别离是B4 BA和BD DA。因而,IE实际上就是将查问字符串,以GB2312编码的格局发送进来。 Firefox的解决办法,略有不同。它发送的HTTP Head是wd=%B4%BA%BD%DA。也就是说,同样采纳GB2312编码,然而在每个字节前加上了%。 所以,论断2就是,查问字符串的编码,用的是操作系统的默认编码。 四、状况3:Get办法生成的URL蕴含汉字后面说的是间接输出网址的状况,然而更常见的状况是,在已关上的网页上,间接用Get或Post办法收回HTTP申请。 依据台湾中兴大学吕瑞麟老师的试验,这时的编码方法由网页的编码决定,也就是由HTML源码中字符集的设定决定。 <meta http-equiv="Content-Type" content="text/html;charset=xxxx">如果下面这一行最初的charset是UTF-8,则URL就以UTF-8编码;如果是GB2312,URL就以GB2312编码。 举例来说,百度是GB2312编码,Google是UTF-8编码。因而,从它们的搜寻框中搜寻同一个词"春节",生成的查问字符串是不一样的。 百度生成的是%B4%BA%BD%DA,这是GB2312编码。 Google生成的是%E6%98%A5%E8%8A%82,这是UTF-8编码。 ...

June 26, 2021 · 1 min · jiezi

关于url:简述字符集与编码

因为计算机外部只能辨认和解决二进制代码,所以字符都必须依照肯定的规定用一组二进制编码来示意。 在学习编码之前,须要先理解一下 字符集与编码的关系:字符集(Character Set)是字符的汇合,定义零碎能解决哪些字符;编码(Encoding)则规定这些字符在计算机外部的示意形式。 字符编码ASCII码(编码字符集)目前,国内上广泛采纳的一种字符零碎是7位二进制编码的ASCII码,它可示意10个十进制数码、52 个英文大写字母和小写字母(A~Z, a~z)及肯定数量的专用符号(如$、%、+、=等),共128个字符。为了存入计算机,通常最高位补0,凑足1B。 在ASCII码中,编码值0~31为控制字符,用于通信管制或设施的性能管制;编码值32~126共95个字符称为可印刷字符;编码值127是DEL码。 0~9的ASCII码值为48(0110000)~57(0111001),即去掉高3位,只保留低4位,正好是二进制模式的0-9。因为ASCII码的局限性,各国的语言不能残缺地示意进去。于是对 ASCII 字符集做了拓展。 汉字的示意和编码目前采纳 GB 2312-80规范 : 汉字+各种符号共7445个。用两个字节示意一个汉字,每字节用七位码。(1个汉字相当于两个英文字符) 规定:ASCII 值小于 127 的字符的意义与原来 ASCII 集中的字符雷同,但当两个 ASCII 值大于 127 的字符连在一起时,就示意一个简体中文的汉字。 为了在解码时操作的对立,在 ASCII 里原本就有的数字、标点、字母都对立从新示意为了两个字节长的编码,这就是常说的 “全角” 字符,而原来在 127 号以下的就叫 “半角” 字符。 汉字编码包含:输出编码 区位码国标码汉字内码汉字字形码区位码:94个区,每区94个地位。是4位十进制数,前2位是区码,后2位是位码。国标码:将十进制的区位码转换成十六进制数后,再在每字节上加上20H。国标码两字节的最高位都是0。汉字内码:为了不便计算机辨别中文字符和英文字符,将国标码两字节最高位都改为“1“,这就是汉字内码。 GBKGBK 是对 GB2312 的一个扩大,兼容 GB2312,因而也兼容 ASCII,也是一个变长编码方案。上面是一个简介: GBK 总体编码范畴为 8140-FEFE,首字节在 81-FE 之间,尾字节在 40-FE 之间,总计 23940 个码位,共支出 21886 个汉字和图形符号,其中汉字(包含部首和构件)21003 个,图形符号 883 个。GBK 是国家有关部门与一些信息行业企业等一起单干推出的计划,但并未作为国家标准公布,只是一个事实上的规范,一个过渡计划,为 GB18030 规范作的一个筹备。 世界上各国都有不同的编码方式,0—127 示意的符号仍然都是一样的,因为他们都兼容 ASCII 码,但127之后的同一个二进制数字能够被解码成不同的符号。因而,要想关上一个文本文件,就必须晓得它的编码方式,否则用谬误的编码方式解读,就会呈现乱码。 Unicode把所有语言都对立到一套编码里,且兼容 ASCII。 ASCII、GBK 等类编码模式的字符集和编码方式都是一一对应的,Unicode是字符集,UTF-32/ UTF-16/ UTF-8是三种字符编码方案。 ...

March 8, 2021 · 2 min · jiezi