python3
from urllib.parse import urlparse
url = 'http://192.168.8.24:8161/11/12.htm'
_url = urlparse(url)
hostname = _url.hostname
port = _url.port
url_port = _url.netloc
url_path = _url.path
url_protocol = _url.scheme
print(f'域名:{hostname}\n端口:{port}\n域名+端口:{url_port}\n域名路径地址:{url_path}\n域名协议:{url_protocol}')
结果
域名:192.168.8.24
端口:8161
域名+端口:192.168.8.24:8161
域名路径地址:/11/12.htm
域名协议:http
实例
if __name__=="__main__":
parser = argparse.ArgumentParser(description='宝塔面板数据库未授权访问')
parser.add_argument("-r","--rhost",dest="rhost",type=str,help="target host",required=True)
parser.add_argument("-p","--rport",dest="rport",type=int,help = "target port,default 888",default = 888)
options = parser.parse_args()
try:
dip = options.rhost
_url = urlparse(dip)
# 判断协议
if _url.scheme == "":
scheme = "http://"
else:
scheme = _url.scheme + "://"
# 判断域名
if _url.hostname is None:
domain = dip
else:
domain = _url.hostname
# 判断端口
if _url.port is None:
port = options.rport
else:
port = _url.port
url = scheme + domain + ":" + str(port)
print(url)
#check_baota(url) # POC
except Exception as e:
sys.exit(1)
Python2
#!/usr/bin/env python
# encoding: utf-8
import urllib
proto,rest = urllib.splittype("http://192.168.8.24:8161/11/12.htm")
print(proto,rest) # ('http','//192.168.8.24:8161/11/12.htm')
host,rest = urllib.splithost(rest)
print(host,rest) # ('192.168.8.24:8161','/11/12.htm')
host,port = urllib.splitport(host)
if port is None:
port =80
print(host,port) # ('192.168.8.24','8161'
结果
('http','//192.168.8.24:8161/11/12.htm')
('192.168.8.24:8161','/11/12.htm')
('192.168.8.24','8161')
删除url中参数
url = "http://forcloud.xyz/PHPinfo.PHP?a=1&b=2"
index = url.find('?')
if index > 0:
sURL = url[0:index]
else:
sURL = url
print(sURL)