コード例 #1
0
ファイル: important.py プロジェクト: KGerring/RevealMe
def _splitter(url):
	base, query = splitquery(url)
	parts = dict([q.split('=') for q in query.split('&')])
	return base, parts
コード例 #2
0
ファイル: important.py プロジェクト: KGerring/RevealMe
def _as_dict(url):
	base, query = splitquery(url)
	if query:
		return OrderedDict([q.split('=') for q in query.split('&')])
	else:
		return url
コード例 #3
0
ファイル: http_util.py プロジェクト: woytu/key-http-web
    def resolve_headers(self):
        # 解析请求方法、url、协议
        self.request_line = self.requestline
        request_line = self.requestline.split(' ')
        self.Method = request_line[0].upper()
        # 请求地址和参数分割
        mpath, margs = request.splitquery(self.path)  # ?分割
        self.Url = mpath
        self.Protocol = request_line[2]
        # 如果有携带参数,并且请求方式为GET
        if util.not_empty(margs) and self.Method == "GET":
            parameters = margs.split('&')
            for parameter in parameters:
                if util.not_empty(parameter):
                    key, val = parameter.split('=', 1)
                    self.request_data[key] = val

        # 头部信息
        for header in self.headers:
            key = header.lower()
            val = self.headers[header]
            if key == "Host".lower():
                self.Host = val
            elif key == "Connection".lower():
                self.Connection = val
            elif key == "Cache-Control".lower():
                self.CacheControl = val
            elif key == "User-Agent".lower():
                self.UserAgent = val
            elif key == "Accept".lower():
                self.Accept = val
            elif key == "Content-Type".lower():
                self.ContentType = val
            elif key == "Accept-Encoding".lower():
                self.AcceptEncoding = val
            elif key == "Accept-Language".lower():
                self.AcceptLanguage = val
            elif key == "Cookie".lower():
                ck = val.split('; ')
                for k in ck:
                    if k.lower() == "csrftoken":
                        self.csrf_token = k.split("=")[0]
                    else:
                        self.Cookie = k
            # self.head[key] = val

        # 解析参数,并且请求方式为POST
        if util.not_empty(
                self.headers['Content-length']) and self.Method == "POST":
            body = self.rfile.read(int(
                self.headers['Content-length'])).decode('utf-8')
            if body.find("Content-Disposition") != -1:
                hd = body[body.find("\r\n"):len(body)].replace('\r\n\r\n', '')
                form = hd.split('\r\n')
                for content in form:
                    if content.find("form-data") != -1:
                        param = content.split('"')
                        self.request_data[param[1]] = param[2]
            else:
                params = body.split("&")
                if util.not_empty(params[0]):
                    for param in params:
                        k, v = param.split("=", 1)
                        self.request_data[k] = v
コード例 #4
0
    def resolve_headers(self, req):
        # 解析请求方法、url、协议
        request_line, headers = req.split('\r\n', 1)
        self.request_line = request_line
        header_list = request_line.split(' ')
        self.Method = header_list[0].upper()
        # 请求地址和参数分割
        mpath, margs = request.splitquery(header_list[1])  # ?分割
        self.Url = mpath
        self.Protocol = header_list[2]
        # 如果有携带参数,并且请求方式为GET
        if util.not_empty(margs) and self.Method == "GET":
            parameters = margs.split('&')
            for parameter in parameters:
                if util.not_empty(parameter):
                    key, val = parameter.split('=', 1)
                    self.request_data[key] = val

        # 头部信息
        request_headers = headers.split('\r\n\r\n')
        head_options = request_headers[0].split('\r\n')
        for header in head_options:
            key, val = header.split(': ', 1)
            key = key.lower()
            if key == "Host".lower():
                self.Host = val
            elif key == "Connection".lower():
                self.Connection = val
            elif key == "Cache-Control".lower():
                self.CacheControl = val
            elif key == "User-Agent".lower():
                self.UserAgent = val
            elif key == "Accept".lower():
                self.Accept = val
            elif key == "Content-Type".lower():
                self.ContentType = val
            elif key == "Accept-Encoding".lower():
                self.AcceptEncoding = val
            elif key == "Accept-Language".lower():
                self.AcceptLanguage = val
            elif key == "Cookie".lower():
                ck = val.split('; ')
                for k in ck:
                    if k.lower() == "csrftoken":
                        self.csrf_token = k.split("=")[0]
                    else:
                        self.Cookie = k
            # self.head[key] = val

        # 解析参数,并且请求方式为POST
        if len(request_headers) > 1 and self.Method == "POST":
            hd = headers[headers.find("\r\n\r\n"):len(headers)].replace(
                '\r\n\r\n', '')
            if hd.find("Content-Disposition") != -1:
                form = hd.split('\r\n')
                for content in form:
                    if content.find("form-data") != -1:
                        param = content.split(';')[1].split('"')
                        self.request_data[param[1]] = param[2]
            else:
                params = hd.split("&")
                if util.not_empty(params[0]):
                    for param in params:
                        k, v = param.split("=", 1)
                        self.request_data[k] = v
コード例 #5
0
>>> url1="https://stackoverflow.com/questions/34475051/need-to-install-urllib2-for-python-3-5-1"
>>> sp = request.urlsplit(url1)
>>> sp
SplitResult(scheme='https', netloc='stackoverflow.com', path='/questions/34475051/need-to-install-urllib2-for-python-3-5-1', query='', fragment='')
>>> url1="https://stackoverflow.com/questions/34475051/need-to-install-urllib2-for-python-3-5-1?admin=no&param=yes:8000"
>>> sp = request.urlsplit(url1)
>>> sp
SplitResult(scheme='https', netloc='stackoverflow.com', path='/questions/34475051/need-to-install-urllib2-for-python-3-5-1', query='admin=no&param=yes:8000', fragment='')
>>> sp.admin
Traceback (most recent call last):
  File "<pyshell#27>", line 1, in <module>
    sp.admin
AttributeError: 'SplitResult' object has no attribute 'admin'
>>> type(sp[3])
<class 'str'>
>>> sp1=request.splitquery()
Traceback (most recent call last):
  File "<pyshell#29>", line 1, in <module>
    sp1=request.splitquery()
TypeError: splitquery() missing 1 required positional argument: 'url'
>>> sp1=request.splitquery(url1)
>>> spl
Traceback (most recent call last):
  File "<pyshell#31>", line 1, in <module>
    spl
NameError: name 'spl' is not defined
>>> sp1
('https://stackoverflow.com/questions/34475051/need-to-install-urllib2-for-python-3-5-1', 'admin=no&param=yes:8000')
>>> dir(request)
['AbstractBasicAuthHandler', 'AbstractDigestAuthHandler', 'AbstractHTTPHandler', 'BaseHandler', 'CacheFTPHandler', 'ContentTooShortError', 'DataHandler', 'FTPHandler', 'FancyURLopener', 'FileHandler', 'HTTPBasicAuthHandler', 'HTTPCookieProcessor', 'HTTPDefaultErrorHandler', 'HTTPDigestAuthHandler', 'HTTPError', 'HTTPErrorProcessor', 'HTTPHandler', 'HTTPPasswordMgr', 'HTTPPasswordMgrWithDefaultRealm', 'HTTPPasswordMgrWithPriorAuth', 'HTTPRedirectHandler', 'HTTPSHandler', 'MAXFTPCACHE', 'OpenerDirector', 'ProxyBasicAuthHandler', 'ProxyDigestAuthHandler', 'ProxyHandler', 'Request', 'URLError', 'URLopener', 'UnknownHandler', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '__version__', '_cut_port_re', '_ftperrors', '_have_ssl', '_localhost', '_noheaders', '_opener', '_parse_proxy', '_proxy_bypass_macosx_sysconf', '_randombytes', '_safe_gethostbyname', '_thishost', '_url_tempfiles', 'addclosehook', 'addinfourl', 'base64', 'bisect', 'build_opener', 'contextlib', 'email', 'ftpcache', 'ftperrors', 'ftpwrapper', 'getproxies', 'getproxies_environment', 'getproxies_registry', 'hashlib', 'http', 'install_opener', 'io', 'localhost', 'noheaders', 'os', 'parse_http_list', 'parse_keqv_list', 'pathname2url', 'posixpath', 'proxy_bypass', 'proxy_bypass_environment', 'proxy_bypass_registry', 'quote', 're', 'request_host', 'socket', 'splitattr', 'splithost', 'splitpasswd', 'splitport', 'splitquery', 'splittag', 'splittype', 'splituser', 'splitvalue', 'ssl', 'string', 'sys', 'tempfile', 'thishost', 'time', 'to_bytes', 'unquote', 'unquote_to_bytes', 'unwrap', 'url2pathname', 'urlcleanup', 'urljoin', 'urlopen', 'urlparse', 'urlretrieve', 'urlsplit', 'urlunparse', 'warnings']
>>> sp1=request.splitattr(url1)