110 lines
2.4 KiB
Python
110 lines
2.4 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
import urllib
|
|
import urllib2
|
|
import re
|
|
import ssl
|
|
import os
|
|
import platform
|
|
import sys
|
|
import StringIO
|
|
import gzip
|
|
import random
|
|
import socket
|
|
|
|
socket.setdefaulttimeout(10.0)
|
|
|
|
class Tools :
|
|
|
|
def __init__ (self) :
|
|
pass
|
|
|
|
def getPage (self, url, requestHeader = [], postData = {}) :
|
|
fakeIp = self.fakeIp()
|
|
requestHeader.append('CLIENT-IP:' + fakeIp)
|
|
requestHeader.append('X-FORWARDED-FOR:' + fakeIp)
|
|
|
|
if postData == {} :
|
|
request = urllib2.Request(url)
|
|
elif isinstance(postData, basestring) :
|
|
request = urllib2.Request(url, postData)
|
|
else :
|
|
request = urllib2.Request(url, urllib.urlencode(postData))
|
|
|
|
for x in requestHeader :
|
|
headerType = x.split(':')[0]
|
|
headerCon = x.replace(headerType + ':', '')
|
|
request.add_header(headerType, headerCon)
|
|
|
|
try :
|
|
ctx = ssl.create_default_context()
|
|
ctx.check_hostname = False
|
|
ctx.verify_mode = ssl.CERT_NONE
|
|
response = urllib2.urlopen(request, context = ctx)
|
|
header = response.headers
|
|
body = response.read()
|
|
code = response.code
|
|
except urllib2.HTTPError as e:
|
|
header = e.headers
|
|
body = e.read()
|
|
code = e.code
|
|
|
|
result = {
|
|
'code': code,
|
|
'header': header,
|
|
'body': body
|
|
}
|
|
|
|
return result
|
|
|
|
def fakeIp (self) :
|
|
fakeIpList = []
|
|
|
|
for x in xrange(0, 4):
|
|
fakeIpList.append(str(int(random.uniform(0, 255))))
|
|
|
|
fakeIp = '.'.join(fakeIpList)
|
|
|
|
return fakeIp
|
|
|
|
def fmtCookie (self, string) :
|
|
result = re.sub(r"path\=\/.", "", string)
|
|
result = re.sub(r"(\S*?)\=deleted.", "", result)
|
|
result = re.sub(r"expires\=(.*?)GMT;", "", result)
|
|
result = re.sub(r"domain\=(.*?)tv.", "", result)
|
|
result = re.sub(r"httponly", "", result)
|
|
result = re.sub(r"\s", "", result)
|
|
|
|
return result
|
|
|
|
def urlencode(self, str) :
|
|
reprStr = repr(str).replace(r'\x', '%')
|
|
return reprStr[1:-1]
|
|
|
|
def gzdecode(self, data) :
|
|
try:
|
|
compressedstream = StringIO.StringIO(data)
|
|
gziper = gzip.GzipFile(fileobj = compressedstream)
|
|
html = gziper.read()
|
|
return html
|
|
except Exception as e:
|
|
return data
|
|
|
|
def getRes (self, fileName) :
|
|
if getattr(sys, 'frozen', False):
|
|
base_path = os.path.join(sys._MEIPASS, 'RES')
|
|
else:
|
|
base_path = os.path.join(os.path.abspath("../"), 'Resources')
|
|
|
|
filePath = os.path.join(base_path, fileName)
|
|
|
|
return filePath
|
|
|
|
def isWin (self) :
|
|
osType = platform.system()
|
|
|
|
if osType == 'Windows' :
|
|
return True
|
|
else :
|
|
return False
|