├── README.md ├── accounts.txt ├── accountsWithAddress.txt ├── accountsWithNames.txt ├── app.py ├── config.json └── proxies.txt /README.md: -------------------------------------------------------------------------------- 1 | # Solebox-Account-Generator 2 | For Solebox demandware 3 | 4 | Instructions: 5 | 1. Fill out config.json + proxies.txt 6 | 2. Open app.py and enter 1 to create accounts, then enter number of accounts to generate 7 | 3. Once generated you then run app.py again and enter 2 to set your address on the accounts 8 | 4. Your accounts can be found in accountsWithAddress.txt 9 | -------------------------------------------------------------------------------- /accounts.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /accountsWithAddress.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /accountsWithNames.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import names 3 | import random 4 | from bs4 import BeautifulSoup 5 | import string 6 | import json 7 | 8 | def randomLetter(): 9 | return random.choice(string.ascii_uppercase) 10 | 11 | with open('config.json') as config: 12 | config = json.load(config) 13 | 14 | 15 | 16 | def loadProxy(): 17 | with open('proxies.txt','r') as proxyIn: 18 | proxyInput = proxyIn.read().splitlines() 19 | 20 | proxyList = [i for i in proxyInput] 21 | p = random.choice(proxyList) 22 | p = p.split(':') 23 | try: 24 | proxies = { 25 | 'http':f'http://{p[2]}:{p[3]}@{p[0]}:{p[1]}', 26 | 'https':f'https://{p[2]}:{p[3]}@{p[0]}:{p[1]}' 27 | } 28 | except: 29 | proxies = { 30 | 'http':f'http://{p[0]}:{p[1]}', 31 | 'https':f'https://{p[0]}:{p[1]}' 32 | } 33 | return proxies 34 | 35 | class Generator: 36 | def __init__(self): 37 | print("--------") 38 | print("CONFIG") 39 | print(config) 40 | print("--------") 41 | print("1. Create Accounts <> 2. Set Address") 42 | opt = input("Enter Input --> ") 43 | if opt == "1": 44 | opt2 = input("How many accounts ? --> ") 45 | for i in range(int(opt2)): 46 | self.getPage() 47 | if opt == "2": 48 | self.addySet2() 49 | 50 | 51 | def getPage(self): 52 | self.s = requests.session() 53 | page = self.s.get(f'https://www.solebox.com/{config["sbxRegion"]}/registration?url=1',proxies=loadProxy(),headers={ 54 | 'authority': 'www.solebox.com', 55 | 'path': f'/{config["sbxRegion"]}/registration?rurl=1', 56 | 'scheme': 'https', 57 | 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 58 | 'accept-encoding': 'gzip, deflate, br', 59 | 'accept-language': 'en-US,en;q=0.9', 60 | 'cache-control': 'max-age=0', 61 | 'sec-fetch-dest': 'document', 62 | 'sec-fetch-mode': 'navigate', 63 | 'sec-fetch-site': 'none', 64 | 'sec-fetch-user': '?1', 65 | 'upgrade-insecure-requests': '1', 66 | 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36' 67 | }) 68 | if page.status_code == 200: 69 | soup = BeautifulSoup(page.text,"html.parser") 70 | self.csrf = soup.find("input",{"name":"csrf_token"})["value"] 71 | self.create() 72 | 73 | 74 | def create(self): 75 | self.first = names.get_first_name() 76 | self.last = names.get_last_name() 77 | numbers = f'{random.randint(0, 9)}{random.randint(0, 9)}{random.randint(0, 9)}{random.randint(0, 9)}{random.randint(0, 9)}{random.randint(0, 9)}{random.randint(0, 9)}{random.randint(0, 9)}{random.randint(0, 9)}{random.randint(0, 9)}' 78 | form = { 79 | 'dwfrm_profile_register_title': 'mr', 80 | 'dwfrm_profile_register_firstName': self.first, 81 | 'dwfrm_profile_register_lastName': self.last, 82 | 'dwfrm_profile_register_email': f'{self.first}{self.last}{numbers}{config["catchall"]}', 83 | 'dwfrm_profile_register_emailConfirm': f'{self.first}{self.last}{numbers}{config["catchall"]}', 84 | 'dwfrm_profile_register_password': config["password"], 85 | 'dwfrm_profile_register_passwordConfirm': config["password"], 86 | 'dwfrm_profile_register_phone': config["phone"], 87 | 'dwfrm_profile_register_birthday': '10.11.1995', 88 | 'dwfrm_profile_register_acceptPolicy': True, 89 | 'csrf_token': self.csrf, 90 | } 91 | createAcc = self.s.post(f'https://www.solebox.com/on/demandware.store/Sites-solebox-Site/{config["sbxRegion"]}/Account-SubmitRegistration?rurl=1&format=ajax',proxies=loadProxy(),data=form,headers={ 92 | 'authority':'www.solebox.com', 93 | 'path': f'/on/demandware.store/Sites-solebox-Site/{config["sbxRegion"]}/Account-SubmitRegistration?rurl=1&format=ajax', 94 | 'scheme': 'https', 95 | 'accept': 'application/json, text/javascript, */*; q=0.01', 96 | 'accept-encoding': 'gzip, deflate, br', 97 | 'accept-language':'en-US,en;q=0.9', 98 | 'content-length': '659', 99 | 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', 100 | 'origin': 'https://www.solebox.com', 101 | 'referer': f'https://www.solebox.com/{config["sbxRegion"]}/registration?rurl=1', 102 | 'sec-fetch-dest': 'empty', 103 | 'sec-fetch-mode': 'cors', 104 | 'sec-fetch-site': 'same-origin', 105 | 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36', 106 | 'x-requested-with': 'XMLHttpRequest' 107 | }) 108 | print(createAcc.status_code) 109 | self.email = f'{self.first}{self.last}{numbers}{config["catchall"]}:{config["password"]}' 110 | print(f'{self.first}{self.last}{numbers}{config["catchall"]}:{config["password"]}') 111 | with open('accounts.txt','a') as accountFile: 112 | accountFile.write(f'{self.first}{self.last}{numbers}{config["catchall"]}:{config["password"]}\n') 113 | with open('accountsWithNames.txt','a') as accountFile: 114 | accountFile.write(f'{self.first}{self.last}{numbers}{config["catchall"]}:{config["password"]}:{self.first}:{self.last}\n') 115 | 116 | 117 | def addySet2(self): 118 | self.s = requests.session() 119 | 120 | with open('accountsWithNames.txt','r') as accountList: 121 | for a in accountList.readlines(): 122 | acc = a.split(':') 123 | lastName = acc[3].replace('\n','') 124 | page = self.s.get(f'https://www.solebox.com/{config["sbxRegion"]}/login',proxies=loadProxy(),headers={ 125 | 'authority': 'www.solebox.com', 126 | 'scheme': 'https', 127 | 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 128 | 'accept-encoding': 'gzip, deflate, br', 129 | 'accept-language': 'en-US,en;q=0.9', 130 | 'cache-control': 'max-age=0', 131 | 'sec-fetch-dest': 'document', 132 | 'sec-fetch-mode': 'navigate', 133 | 'sec-fetch-site': 'none', 134 | 'sec-fetch-user': '?1', 135 | 'upgrade-insecure-requests': '1', 136 | 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36' 137 | }) 138 | if page.status_code == 200: 139 | soup = BeautifulSoup(page.text,"html.parser") 140 | try: 141 | csrf = soup.find("input",{"name":"csrf_token"})["value"] 142 | except: 143 | pass 144 | 145 | form = { 146 | 'dwfrm_profile_customer_email': acc[0], 147 | 'dwfrm_profile_login_password': acc[1], 148 | 'csrf_token': csrf 149 | } 150 | loginACC = self.s.post(f'https://www.solebox.com/{config["sbxRegion"]}/authentication?rurl=1&format=ajax',proxies=loadProxy(),data=form,headers={ 151 | 'authority':'www.solebox.com', 152 | 'path': f'/{config["sbxRegion"]}/authentication?rurl=1&format=ajax', 153 | 'scheme': 'https', 154 | 'accept': 'application/json, text/javascript, */*; q=0.01', 155 | 'accept-encoding': 'gzip, deflate, br', 156 | 'accept-language':'en-US,en;q=0.9', 157 | 'content-length': '299', 158 | 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', 159 | 'origin': 'https://www.solebox.com', 160 | 'referer': f'https://www.solebox.com/{config["sbxRegion"]}/login', 161 | 'sec-fetch-dest': 'empty', 162 | 'sec-fetch-mode': 'cors', 163 | 'sec-fetch-site': 'same-origin', 164 | 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36', 165 | 'x-requested-with': 'XMLHttpRequest' 166 | }) 167 | 168 | 169 | ### delivery 170 | 171 | addyPage = self.s.get(f'https://www.solebox.com/on/demandware.store/Sites-solebox-Site/{config["sbxRegion"]}/Address-AddAddress?methodId=home-delivery_europe&format=ajax',proxies=loadProxy(),headers={ 172 | 'authority':'www.solebox.com', 173 | 'path': f'/on/demandware.store/Sites-solebox-Site/{config["sbxRegion"]}/Address-AddAddress?format=ajax', 174 | 'scheme': 'https', 175 | 'accept': 'en-US,en;q=0.9', 176 | 'accept-encoding': 'gzip, deflate, br', 177 | 'accept-language':'en-US,en;q=0.9', 178 | 'referer': f'https://www.solebox.com/{config["sbxRegion"]}/addresses', 179 | 'sec-fetch-dest': 'empty', 180 | 'sec-fetch-mode': 'cors', 181 | 'sec-fetch-site': 'same-origin', 182 | 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36', 183 | 'x-requested-with': 'XMLHttpRequest' 184 | }) 185 | if addyPage.status_code == 200: 186 | soup = BeautifulSoup(addyPage.text,"html.parser") 187 | csrf = soup.find("input",{"name":"csrf_token"})["value"] 188 | 189 | randomFour = f'{randomLetter()}{randomLetter()}{randomLetter()}{randomLetter()}' 190 | 191 | street = f'{randomFour} {config["street"]}' 192 | set1 = { 193 | 'street': street, 194 | 'houseNo': config["house"], 195 | 'postalCode': config["postCode"], 196 | 'city': config["city"], 197 | 'country': config["countryCode"], 198 | 'csrf_token': csrf 199 | } 200 | setAddress1 = self.s.post(f'https://www.solebox.com/on/demandware.store/Sites-solebox-Site/{config["sbxRegion"]}/CheckoutAddressServices-Validate?format=ajax',proxies=loadProxy(),data=set1,headers={ 201 | 'authority': 'www.solebox.com', 202 | 'path': f'/on/demandware.store/Sites-solebox-Site/{config["sbxRegion"]}/CheckoutAddressServices-Validate?format=ajax', 203 | 'scheme': 'https', 204 | 'accept': 'application/json, text/javascript, */*; q=0.01', 205 | 'accept-encoding': 'gzip, deflate, br', 206 | 'accept-language': 'en-US,en;q=0.9', 207 | 'content-length': '273', 208 | 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', 209 | 'origin': 'https://www.solebox.com', 210 | 'referer': f'https://www.solebox.com/{config["sbxRegion"]}/addresses', 211 | 'sec-fetch-dest': 'empty', 212 | 'sec-fetch-mode': 'cors', 213 | 'sec-fetch-site': 'same-origin', 214 | 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36', 215 | 'x-requested-with': 'XMLHttpRequest' 216 | }) 217 | 218 | room = f'Room {random.randint(0, 9)}{random.randint(0, 9)}{random.randint(0, 9)}' 219 | save1 = { 220 | 'dwfrm_address_title': 'Herr', 221 | 'dwfrm_address_firstName': acc[2], 222 | 'dwfrm_address_lastName': lastName, 223 | 'dwfrm_address_postalCode': config["postCode"], 224 | 'dwfrm_address_city': config["city"], 225 | 'dwfrm_address_street': street, 226 | 'dwfrm_address_suite': config["house"], 227 | 'dwfrm_address_address1': '', 228 | 'dwfrm_address_address2': room, 229 | 'dwfrm_address_phone': '', 230 | 'dwfrm_address_countryCode': config["countryCode"], 231 | 'csrf_token': csrf 232 | } 233 | 234 | saveAddress1 = self.s.post(f'https://www.solebox.com/on/demandware.store/Sites-solebox-Site/{config["sbxRegion"]}/Address-SaveAddress?methodId=home-delivery_europe&countryCode={config["countryCode"]}&format=ajax',proxies=loadProxy(),data=save1,headers={ 235 | 'authority': 'www.solebox.com', 236 | 'path': f'/on/demandware.store/Sites-solebox-Site/{config["sbxRegion"]}/Address-SaveAddress?methodId=home-delivery_europe&countryCode={config["countryCode"]}&format=ajax', 237 | 'scheme': 'https', 238 | 'accept': 'application/json, text/javascript, */*; q=0.01', 239 | 'accept-encoding': 'gzip, deflate, br', 240 | 'accept-language': 'en-US,en;q=0.9', 241 | 'content-length': '268', 242 | 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', 243 | 'origin': 'https://www.solebox.com', 244 | 'referer': f'https://www.solebox.com/{config["sbxRegion"]}/addresses', 245 | 'sec-fetch-dest': 'empty', 246 | 'sec-fetch-mode': 'cors', 247 | 'sec-fetch-site': 'same-origin', 248 | 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36', 249 | 'x-requested-with': 'XMLHttpRequest' 250 | }) 251 | 252 | self.s.get(f'https://www.solebox.com/{config["sbxRegion"]}/addresses?format=ajax') 253 | 254 | 255 | ### billing 256 | 257 | addyPage = self.s.get(f'https://www.solebox.com/on/demandware.store/Sites-solebox-Site/{config["sbxRegion"]}/Address-AddBillingAddress?format=ajax',proxies=loadProxy(),headers={ 258 | 'authority':'www.solebox.com', 259 | 'path': f'/on/demandware.store/Sites-solebox-Site/{config["sbxRegion"]}/Address-AddBillingAddress?format=ajax', 260 | 'scheme': 'https', 261 | 'accept': 'en-US,en;q=0.9', 262 | 'accept-encoding': 'gzip, deflate, br', 263 | 'accept-language':'en-US,en;q=0.9', 264 | 'referer': f'https://www.solebox.com/{config["sbxRegion"]}/addresses', 265 | 'sec-fetch-dest': 'empty', 266 | 'sec-fetch-mode': 'cors', 267 | 'sec-fetch-site': 'same-origin', 268 | 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36', 269 | 'x-requested-with': 'XMLHttpRequest' 270 | }) 271 | if addyPage.status_code == 200: 272 | soup = BeautifulSoup(addyPage.text,"html.parser") 273 | csrf = soup.find("input",{"name":"csrf_token"})["value"] 274 | 275 | randomFour = f'{randomLetter()}{randomLetter()}{randomLetter()}{randomLetter()}' 276 | 277 | 278 | set1 = { 279 | 'dwfrm_billingaddress_title': 'Herr', 280 | 'dwfrm_billingaddress_firstName': acc[2], 281 | 'dwfrm_billingaddress_lastName': lastName, 282 | 'dwfrm_billingaddress_postalCode': config["postCode"], 283 | 'dwfrm_billingaddress_city': config["city"], 284 | 'dwfrm_billingaddress_street': street, 285 | 'dwfrm_billingaddress_suite': config["house"], 286 | 'dwfrm_billingaddress_address1':'' , 287 | 'dwfrm_billingaddress_address2': room, 288 | 'dwfrm_billingaddress_countryCode': config["countryCode"], 289 | 'csrf_token': csrf 290 | } 291 | setAddress1 = self.s.post(f'https://www.solebox.com/on/demandware.store/Sites-solebox-Site/{config["sbxRegion"]}/Address-SaveAddress?isBilling=true&format=ajax',proxies=loadProxy(),data=set1,headers={ 292 | 'authority': 'www.solebox.com', 293 | 'path': f'/on/demandware.store/Sites-solebox-Site/{config["sbxRegion"]}/Address-SaveAddress?isBilling=true&format=ajax', 294 | 'scheme': 'https', 295 | 'accept': 'application/json, text/javascript, */*; q=0.01', 296 | 'accept-encoding': 'gzip, deflate, br', 297 | 'accept-language': 'en-US,en;q=0.9', 298 | 'content-length': '554', 299 | 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', 300 | 'origin': 'https://www.solebox.com', 301 | 'referer': f'https://www.solebox.com/{config["sbxRegion"]}/addresses', 302 | 'sec-fetch-dest': 'empty', 303 | 'sec-fetch-mode': 'cors', 304 | 'sec-fetch-site': 'same-origin', 305 | 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36', 306 | 'x-requested-with': 'XMLHttpRequest' 307 | }) 308 | print(setAddress1.text) 309 | 310 | self.s.get(f'https://www.solebox.com/{config["sbxRegion"]}/addresses?format=ajax') 311 | 312 | with open('accountsWithAddress.txt','a') as accountFile: 313 | accountFile.write(f'{acc[0]}:{config["password"]}\n') 314 | 315 | 316 | 317 | 318 | Generator() 319 | -------------------------------------------------------------------------------- /config.json: -------------------------------------------------------------------------------- 1 | { 2 | "catchall":"@", 3 | "sbxRegion":"en_GB", 4 | "password":"", 5 | "street":"", 6 | "house":"", 7 | "countryCode":"GB", 8 | "postCode":"", 9 | "city":"", 10 | "phone":"" 11 | } 12 | -------------------------------------------------------------------------------- /proxies.txt: -------------------------------------------------------------------------------- 1 | 2 | --------------------------------------------------------------------------------