Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
iMro0t
GitHub Repository: iMro0t/bomb3r
Path: blob/master/Provider.py
143 views
1
import requests
2
import urllib3
3
import json
4
import random
5
6
DEFAULT_TIMEOUT = 30
7
VERIFY = True
8
not VERIFY and urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
9
10
with open('config.json', 'r') as f:
11
PROVIDERS = json.load(f)['providers']
12
13
class Provider:
14
15
def __init__(self, target, proxy={}, verbose=False, cc='91', config=False):
16
if config:
17
self.config = config
18
else:
19
self.config = random.choice(PROVIDERS[cc if cc in PROVIDERS else 'multi'])
20
self.target = target
21
self.headers = self._headers()
22
self.done = False
23
self.proxy = proxy
24
self.verbose = verbose
25
self.cc = cc
26
27
def _headers(self):
28
tmp_headers = {
29
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:66.0) Gecko/20100101 Firefox/66.0"}
30
if 'headers' in self.config:
31
tmp_headers.update(self.config['headers'])
32
return tmp_headers
33
34
def _data(self):
35
data = self.config['data']
36
if 'cc_target' in self.config:
37
data[self.config['cc_target']] += self.cc
38
data[self.config['target_param']] += self.target
39
return data
40
41
def _get(self):
42
url = self.config['url'] + self.target
43
if 'cc_target' in self.config:
44
url += '&' + self.config['cc_target'] + '=' + self.cc
45
return requests.get(url, headers=self.headers, timeout=DEFAULT_TIMEOUT, proxies=self.proxy, verify=VERIFY)
46
47
def _post(self):
48
if 'data_type' in self.config and self.config['data_type'].lower() == "json":
49
return requests.post(self.config['url'], json=self.data, headers=self.headers, timeout=DEFAULT_TIMEOUT, proxies=self.proxy, verify=VERIFY)
50
else:
51
return requests.post(self.config['url'], data=self.data, headers=self.headers, timeout=DEFAULT_TIMEOUT, proxies=self.proxy, verify=VERIFY)
52
53
def start(self):
54
if self.config['method'] == 'GET':
55
self.resp = self._get()
56
elif self.config['method'] == 'POST':
57
self.data = self._data()
58
self.resp = self._post()
59
self.done = True
60
61
def status(self):
62
if self.config['identifier'] in self.resp.text:
63
self.verbose and print(
64
'{:12}: success'.format(self.config['name']))
65
return True
66
else:
67
self.verbose and print('{:12}: failed'.format(self.config['name']))
68
return False
69
70