-
Notifications
You must be signed in to change notification settings - Fork 71
/
Copy pathmodel.py
105 lines (90 loc) · 3.11 KB
/
model.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/usr/bin/python2.7
# -*- encoding: utf-8 -*-
"""
@Description: Models used.
~~~~~~
@Author : longwenzhang
@Time : 19-8-19 3:13
"""
import json
class HttpRequest():
def __init__(self,method,url,headers,body=''):
self.method=method
self.url=url
self.headers=headers
self.body=body
def tostring(self):
return self.method+self.url+json.dumps(self.headers,encoding='utf-8')+self.body
def get_header(self,header_name):
# Host
if header_name in self.headers.keys():
return self.headers[header_name]
# host=Host
elif header_name.lower() in self.headers.keys():
return self.headers[header_name.lower()]
def change_header(self,header_name,tovalue):
# Host
if header_name in self.headers.keys():
self.headers[header_name]=tovalue
# host=Host
elif header_name.lower() in self.headers.keys():
self.headers[header_name.lower()]=tovalue
@staticmethod
def headers2print(headers):
headersprint=''
for key,value in headers.items():
headersprint+=key
headersprint+=': '
headersprint+=value
headersprint+='\n'
return headersprint
def headers2str(self):
headerstr=''
for key,value in self.headers.items():
headerstr+=key
headerstr+=': '
headerstr+=value
headerstr+='\n'
return headerstr
def __str__(self):
return self.method+' '+self.url+'\n'+self.headers2print(self.headers)+'\n'+self.body
class HttpResponse():
def __init__(self,code,reason,headers,data):
self.code=code
self.reason=reason
self.headers=headers
self.data=data
def tostring(self):
return self.code+self.reason+json.dumps(self.headers,encoding='utf-8')+self.data
def get_header(self,header_name):
if header_name in self.headers.keys():
return self.headers[header_name]
elif header_name.lower() in self.headers.keys():
return self.headers[header_name.lower()]
def get_setcookie_list(self):
setcookie_list=[]
for resp_header_name,resp_header_value in self.headers.items():
if resp_header_name=='Set-Cookie':
setcookie_list.append(resp_header_value)
return setcookie_list
def __str__(self):
return self.code+' '+self.reason+'\n'+HttpRequest.headers2print(self.headers)+'\n'+self.data
class Case():
def __init__(self,vul,method,url,headers,body,args):
"""
Case class is a object like test case,include http-util,verify function,url etc.
:param vul:
:param method:
:param url:
:param headers:
:param body:
:param args: (location,match)
"""
self.vul = vul
self.method = method
self.url = url
self.headers=headers
self.body = body
self.args=args
if __name__ == '__main__':
pass