Python替换url内参数值的方式是什么,python替换url内参,大家好,我是python
Python替换url内参数值的方式是什么,python替换url内参,大家好,我是python
大家好,我是python新手,想写一个测试目录遍历的小脚本,遇到了问题,求各位大牛指教!
python 2.7.8 windows 7 x64位
测试url:http://www.waitalone.cn/index.php?id=123&abc=456&xxx=ooo
其实参数名值对个数不是固定的,这里我只是以3个为准测试。
payloads = ('../boot.ini','../etc/passwd','../windows/win.ini','../../boot.ini','../../etc/passwd')
我想要实现的是这样的功能,首先遍历payloads,然后使用其payload替换url中的参数值,但是要在替换第一个参数值的时候其它两个或者多个参数名值对保护不变,举例如下:
http://www.waitalone.cn/index.php?id=../boot.ini&abc=456&xxx=ooo
http://www.waitalone.cn/index.php?id=../etc/passwd&abc=456&xxx=ooo
.....
http://www.waitalone.cn/index.php?id=../../etc/passwd&abc=456&xxx=ooo
当替换第2个参数值的时候其它的不变:
http://www.waitalone.cn/index.php?id=123&abc=../boot.ini&xxx=ooo
...
http://www.waitalone.cn/index.php?id=123&abc=../../etc/passwd&xxx=ooo
第3个或者多个参数名值对同上面。。
我只知道如何一次性的把所有的参数值给替换掉,但是不知道如何保持其它两个不变,求大牛们指教!
http://stackoverflow.com/questions/4656843/jquery-get-querystring-from-url
创建方法时第一个传参数为你的payloads,第二个参数和第三个参数设为带默认值的参数例如
def test(payloads,abc='456',xxx='123')
调用的时候只需要给第一个参数,因为第二,第三个参数都是由默认值的.
当然你也可以用python的可变参数或关键参数.
已经搞定了,详情代码如下:
http://www.waitalone.cn/replace-url-params.html
def url_values_plus(url, vals):ret = []u = urlparse.urlparse(url)qs = u.querypure_url = url.replace('?'+qs, '')qs_dict = dict(urlparse.parse_qsl(qs))for val in vals: for k in qs_dict.keys(): tmp_dict = copy.deepcopy(qs_dict) tmp_dict[k] = val tmp_qs = urllib.unquote(urllib.urlencode(tmp_dict)) ret.append(pure_url + "?" + tmp_qs)return ret
是这样么? (python3.x)
url = 'http://www.waitalone.cn/index.php?id=%s&abc=%s&xxx=%s'
payloads = ['../boot.ini', '../etc/passwd', '../windows/win.ini', '../../boot.ini', '../../etc/passwd']
def f(id='123', abc='456', xxx='000') :
print(url % (id, abc, xxx))
for payload in payloads :
f(id=payload)
f(abc=payload)
f(xxx=payload)
就是@MIllyn说的方法
import urlparsedef url_replacer(url, _id, target_value): c_url_list = list(urlparse.urlparse(url)) queries = [q.split('=') for q in c_url_list[4].split('&')] queries[_id - 1][1] = target_value c_url_list[4] = '&'.join(map(lambda l: '='.join(l), queries)) return urlparse.urlunparse(c_url_list)print url_replacer('http://www.waitalone.cn/index.php?id=../boot.ini&abc=456&xxx=ooo', 2, '123')
虽然实现了,但是很别扭。。不知道有没有第三方库提供这个功能
编橙之家文章,
相关内容
- 请问Python Markdown和Markdown2高手们更推荐哪个,markdownm
- python2.7.3 uwsgi安装出错,python2.7.3uwsgi,系统信息:Linux v
- 求问Python归并排序求逆序数方法,python逆序,class nx:
- python django在nginx里模板输出html标签出错,djangonginx,就是
- Python与php在数据处理方面差异有哪些?,python数据处理
- Django项目删除最正确方法是什么,django项目方法,版本信
- 谁能讲解关于Python yield用途和作用,pythonyield,搜索了下
- Python xlwings插件报错跪求大神帮助,pythonxlwings,就这样了
- python什么方法能把../这样的网址转换成真实地址呢?,
- https类型网页python scrapy能爬取吗,pythonscrapy,想获得ht
评论关闭