#! /usr/bin/python3 # -*- coding: utf-8 -*- # Author: kelvinBen # Github: https://github.com/kelvinBen/AppInfoScanner import re import os import sys import time import config import logging import requests import threading import libs.core as cores from requests.packages import urllib3 from requests.adapters import HTTPAdapter class DownloadThreads(threading.Thread): def __init__(self,input_path,file_name,cache_path,types): threading.Thread.__init__(self) self.url = input_path self.types = types self.cache_path = cache_path self.file_name = file_name def __requset__(self): try: session = requests.Session() session.mount('http://', HTTPAdapter(max_retries=3)) session.mount('https://', HTTPAdapter(max_retries=3)) session.keep_alive =False session.adapters.DEFAULT_RETRIES = 5 urllib3.disable_warnings() if config.method.upper() == "POST": resp = session.post(url=self.url,params=config.data ,headers=config.headers,timeout=30) else: resp = session.get(url=self.url,data=config.data ,headers=config.headers,timeout=30) if resp.status_code == requests.codes.ok: if self.types == "Android" or self.types == "iOS": count = 0 progress_tmp = 0 length = float(resp.headers['content-length']) with open(self.cache_path, "wb") as f: for chunk in resp.iter_content(chunk_size = 512): if chunk: f.write(chunk) count += len(chunk) progress = int(count / length * 100) if progress != progress_tmp: progress_tmp = progress logging.info("\r", end="") logging.info("[*] Download progress: {}%: ".format(progress), "▋" * (progress // 2), end="") sys.stdout.flush() f.close() else: html = resp.text with open(self.cache_path,"w",encoding='utf-8',errors='ignore') as f: f.write(html) f.close() cores.download_flag = True except Exception as e: raise Exception(e) def run(self): threadLock = threading.Lock() self.__requset__()