Files
XSStrike/core/requester.py

50 lines
2.0 KiB
Python
Raw Normal View History

2018-10-27 18:58:52 +05:30
import random
import requests
import time
2018-12-17 18:36:25 +05:30
from urllib3.exceptions import ProtocolError
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
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)
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-04-12 13:23:21 +05:30
response = requests.post(url, json=data, headers=headers,
2019-01-22 05:05:42 +05:30
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:
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)