#!/usr/bin/env python3 from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.common.exceptions import NoSuchElementException import glob, multiprocessing, re, requests, urllib.request, urllib.error, urllib.parse, time, os import setuptools useragent = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0" session = None driver = None def status(): global driver if "Benutzername oder E-Mail-Adresse:" not in driver.page_source and 'href="login/"' not in driver.page_source: return True else: return False def loadPage(url, period=5, init = False): global driver if not (init or status()): login() driver.get(url) time.sleep(period) def loginHandler(user = setuptools.user(), password = setuptools.password()): loadPage("https://scriptzbase.org/login/", 3, True) curfield = driver.find_element_by_name("login") curfield.send_keys(user) curfield = driver.find_element_by_name("password") curfield.send_keys(password) curfield.send_keys(Keys.RETURN) time.sleep(3) return status() class LoginError(Exception): pass def login(): global driver, session if not (status() or loginHandler()): raise LoginError("Login failed.") session = requests.Session() kekse = driver.get_cookies() for keks in kekse: session.cookies.set(keks["name"], keks["value"]) session.headers.update({"User-Agent": useragent}) return True def fileHandler(url, retry = False): global session try: fid = url.split("=")[1] if not glob.glob("files/sbd%s_*" % fid): res = session.get("https://scriptzbase.org/%s" % url) fname = re.findall("filename=(.+)", res.headers["content-disposition"])[0].split(";")[0].strip('"') with open("files/sbd%s_%s" % (fid, fname), "wb") as out: out.write(res.content) except (requests.exceptions.ConnectionError, requests.exceptions.ChunkedEncodingError): if not retry: time.sleep(10) fileHandler(url, True) else: raise def pageHandler(): global driver juha = BeautifulSoup(driver.page_source, "html5lib") for a in juha.findAll("a"): try: if "/download?version=" in a["href"]: fileHandler(a["href"]) except KeyError: pass def siteHandler(p): global driver loadPage("https://scriptzbase.org/nulled_scripts/?page=" + str(p)) if driver.current_url[-len(str(p)):] == str(p): pageHandler() return True return False def mainHandler(): os.makedirs("files", exist_ok=True) p = 1 while True: if not siteHandler(p): break p += 1 def makeDriver(): caps = webdriver.DesiredCapabilities().PHANTOMJS.copy() caps["phantoms.page.settings.userAgent"] = useragent return webdriver.PhantomJS(desired_capabilities=caps) if __name__ == "__main__": driver = makeDriver() mainHandler() driver.close()