2018-10-27 18:58:52 +05:30
|
|
|
import random
|
|
|
|
|
import requests
|
2018-11-15 15:41:01 +05:30
|
|
|
import time
|
2018-12-17 18:36:25 +05:30
|
|
|
from urllib3.exceptions import ProtocolError
|
2018-11-15 15:41:01 +05:30
|
|
|
import warnings
|
|
|
|
|
|
2018-11-14 10:50:22 +05:30
|
|
|
import core.config
|
2019-04-06 20:45:10 +05:30
|
|
|
from core.utils import converter, getVar
|
2019-01-21 04:57:55 +05:30
|
|
|
from core.log import setup_logger
|
|
|
|
|
|
|
|
|
|
logger = setup_logger(__name__)
|
2018-10-27 18:58:52 +05:30
|
|
|
|
2018-11-16 21:13:45 +05:30
|
|
|
warnings.filterwarnings('ignore') # Disable SSL related warnings
|
|
|
|
|
|
2018-10-27 18:58:52 +05:30
|
|
|
|
2018-11-10 17:33:48 +05:30
|
|
|
def requester(url, data, headers, GET, delay, timeout):
|
2019-04-06 20:45:10 +05:30
|
|
|
if getVar('jsonData'):
|
2018-11-22 13:43:25 +05:30
|
|
|
data = converter(data)
|
2019-04-06 20:45:10 +05:30
|
|
|
elif getVar('path'):
|
2018-11-22 13:43:25 +05:30
|
|
|
url = converter(data, url)
|
|
|
|
|
data = []
|
2018-12-17 18:31:06 +05:30
|
|
|
GET, POST = True, False
|
2018-10-27 18:58:52 +05:30
|
|
|
time.sleep(delay)
|
|
|
|
|
user_agents = ['Mozilla/5.0 (X11; Linux i686; rv:60.0) Gecko/20100101 Firefox/60.0',
|
2018-11-16 21:13:45 +05:30
|
|
|
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'
|
|
|
|
|
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 OPR/43.0.2442.991']
|
2018-10-28 10:00:32 +05:30
|
|
|
if 'User-Agent' not in headers:
|
|
|
|
|
headers['User-Agent'] = random.choice(user_agents)
|
|
|
|
|
elif headers['User-Agent'] == '$':
|
|
|
|
|
headers['User-Agent'] = random.choice(user_agents)
|
2019-01-21 04:57:55 +05:30
|
|
|
logger.debug('Requester url: {}'.format(url))
|
|
|
|
|
logger.debug('Requester GET: {}'.format(GET))
|
|
|
|
|
logger.debug_json('Requester data:', data)
|
|
|
|
|
logger.debug_json('Requester headers:', headers)
|
2018-12-17 18:36:25 +05:30
|
|
|
try:
|
|
|
|
|
if GET:
|
|
|
|
|
response = requests.get(url, params=data, headers=headers,
|
|
|
|
|
timeout=timeout, verify=False, proxies=core.config.proxies)
|
2019-04-06 20:45:10 +05:30
|
|
|
elif getVar('jsonData'):
|
2019-01-22 05:05:42 +05:30
|
|
|
response = requests.get(url, json=data, headers=headers,
|
|
|
|
|
timeout=timeout, verify=False, proxies=core.config.proxies)
|
2018-12-17 18:36:25 +05:30
|
|
|
else:
|
|
|
|
|
response = requests.post(url, data=data, headers=headers,
|
|
|
|
|
timeout=timeout, verify=False, proxies=core.config.proxies)
|
|
|
|
|
return response
|
|
|
|
|
except ProtocolError:
|
2019-01-21 04:57:55 +05:30
|
|
|
logger.warning('WAF is dropping suspicious requests.')
|
|
|
|
|
logger.warning('Scanning will continue after 10 minutes.')
|
2018-12-17 18:36:25 +05:30
|
|
|
time.sleep(600)
|