forked from mengskysama/115-Lixian-API
-
Notifications
You must be signed in to change notification settings - Fork 0
/
http_request.py
78 lines (70 loc) · 2.64 KB
/
http_request.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
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib2
from urllib2 import HTTPError
headers_main = {'User-Agent': 'Mozilla/5.0'}
headers_post = {'Content-Type': 'application/x-www-form-urlencoded'}
urllib2.socket.setdefaulttimeout(60)
class http_request:
def __init__(self, cookie = '', proxy = None):
self.cookie = cookie
self.header = headers_main
if proxy:
self.opener = urllib2.build_opener(urllib2.ProxyHandler(proxy))
else:
self.opener = None
def post(self, uri, postdata = '', setcookie = False, referer = None):
header = self.header
header.update(headers_post)
header.update({'Cookie' : self.cookie})
if referer:
header.update({'Referer' : referer})
try:
req = urllib2.Request('%s' % uri, postdata, header)
if self.opener:
fd = self.opener.open(req)
else:
fd = urllib2.urlopen(req)
content = fd.read()
if setcookie and 'Set-cookie' in fd.headers:
self.cookie = ''
#虽然不能很好...但是能用
for i in range(0, len(fd.headers["Set-cookie"])):
self.cookie += fd.headers["Set-cookie"][i].replace(',', ';')
resp = {'status' : 200}
return resp, content
except HTTPError, e:
resp = {'status' : e.code}
return resp, ''
except Exception, e:
import traceback; traceback.print_exc()
resp = {'status' : 600}
return resp, ''
def get(self, uri, setcookie = False, referer = None):
header = self.header
header.update({'Cookie' : self.cookie})
if referer:
header.update({'Referer' : referer})
try:
req = urllib2.Request('%s' % uri, headers = header)
fd = urllib2.urlopen(req)
content = fd.read()
if setcookie:
self.cookie = ''
#虽然不能很好...但是能用
for i in range(0, len(fd.headers["Set-cookie"])):
self.cookie += fd.headers["Set-cookie"][i].replace(',', ';')
resp = fd.headers
resp = {'status' : 200}
return resp, content
except HTTPError, e:
resp = {'status' : e.code}
return resp, ''
except Exception, e:
import traceback; traceback.print_exc()
resp = {'status' : 600}
return resp, ''
if __name__ == "__main__":
http = http_request()
resp, ret = http.get("http://www.baidu.com")
print ret