【web_逆向05】URLEncode

发布时间 2023-08-13 22:14:59作者: Tony_xiao

我们这网站中总能看到这样一种url,例如:百度中直接搜索"周杰伦"

https://www.baidu.com/sugrec?&prod=pc_his&from=pc_web&json=1&sid=26350&hisdata=%5B%7B%22time%22%3A1691934763%2C%22kw%22%3A%22%E5%91%A8%E6%9D%B0%E4%BC%A6%22%2C%22fq%22%3A4%7D%5D&_t=1691934762862&req=2&bs=%E5%91%A8%E6%9D%B0%E4%BC%A6&csor=0

为什么要有urlencode

  • 此时会发现, 在浏览器上明明是能看到中文的. 但是一旦复制出来. 或者在抓包工具里看到的. 都是这种%. 那么这个%是什么鬼? 也是加密么?
  • 非也, 其实我们在访问一个url的时候. 浏览器会自动的进行urlencode操作. 会对我们请求的url进行编码. 这种编码规则被称为百分号编码. 是专门为url(统一资源定位符)准备的一套编码规则.
http://xxx.com/admin/lucky专辑/特殊.mp4?username=用户填写&psw=用户填写

用户填写 = xwl
用户填写 = 123

# 上述逻辑是正常逻辑

用户填写 = xwl&mama=123
用户填写 = 123

http://xxx.com/admin/lucky专辑/特殊.mp4?username=xwl&mama=123&psw=123

# 上述逻辑, 特殊的符号如果不做任何处理. 可能会改变url的整体逻辑.

解决方案. 把参数中的特殊符号. 进行特殊得处理. 在服务器端. 接受参数的时候. 反向操作

python处理urlencode

from urllib.parse import urlencode, unquote, quote
dic = {
    'bs':'周杰伦'
}

r = urlencode(dic)    #只能传字典
print(r)   #bs=%E5%91%A8%E6%9D%B0%E4%BC%A6

s = 'xwl&mama/=123'
print(quote(s))  # 它的参数是字符串.  xwl%26mama/%3D123
print(quote_plus(s))  # 它的参数是字符串. 多处理一个/  xwl%26mama%3D123