CoolFace
Apppublic

Mr-Risov/Telegram_reporting_system

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
app.py139 linesDownload Raw Back to root
1from flask import Flask, render_template, request, jsonify2import os3import requests4from time import sleep5from threading import Thread, active_count6import random7from bs4 import BeautifulSoup8from random_user_agent.user_agent import UserAgent9from random_user_agent.params import SoftwareName, OperatingSystem10import phonenumbers11from phonenumbers import PhoneNumberFormat12from emailtools import generate13 14app = Flask(__name__)15 16# User Agent Setup17software_names = [SoftwareName.CHROME.value, SoftwareName.FIREFOX.value, SoftwareName.EDGE.value, SoftwareName.OPERA.value]18operating_systems = [OperatingSystem.WINDOWS.value, OperatingSystem.LINUX.value, OperatingSystem.MAC.value]19user_agent_rotator = UserAgent(software_names=software_names, operating_systems=operating_systems, limit=1200)20 21# Constants22THREADS = 60023PROXIES_TYPES = ('http', 'socks4', 'socks5')24time_out = 1525success_count = 026error_count = 027 28errors = open('errors.txt', 'a+')29 30def generate_random_phone_number():31    while True:32        country_code = "+{}".format(random.randint(1, 999))33        national_number = str(random.randint(1000000000, 9999999999))34        phone_number_str = country_code + national_number35        try:36            phone_number = phonenumbers.parse(phone_number_str)37            if phonenumbers.is_valid_number(phone_number):38                return phonenumbers.format_number(phone_number, PhoneNumberFormat.E164)39        except phonenumbers.phonenumberutil.NumberParseException:40            continue41 42def get_random_line(filename, username):43    with open(filename, 'r') as file:44        lines = file.readlines()45    line = random.choice(lines).strip()46    return line.replace('{username}', username)47 48def control(proxy, proxy_type, username):49    global success_count, error_count50    51    USER_AGENT = user_agent_rotator.get_random_user_agent()52    url = 'https://telegram.org/support'53    try:54        response = requests.get(url, proxies={'http': f'{proxy_type}://{proxy}', 'https': f'{proxy_type}://{proxy}'}, timeout=time_out)55    except Exception as e:56        error_count += 157        errors.write(f'{e}\n')58        return59    60    cookies = response.cookies61    soup = BeautifulSoup(response.text, 'html.parser')62    form = soup.find('form', action="/support")63    64    if not form:65        error_count += 166        return67 68    message = get_random_line('message.txt', username)69    email = generate('gmail')70    phone = generate_random_phone_number()71 72    data = {input['name']: input.get('value', '') for input in form.find_all(['input', 'textarea'])}73    hidden_inputs = form.find_all('input', type='hidden')74    for hidden_input in hidden_inputs:75        data[hidden_input['name']] = hidden_input['value']76 77    data['support_problem'] = message78    data['support_email'] = email79    data['support_phone'] = phone80 81    headers = {'User-Agent': USER_AGENT}82    try:83        response = requests.post(url, data=data, cookies=cookies, headers=headers)84        if response.status_code == 200:85            success_count += 186        else:87            error_count += 188    except Exception as e:89        error_count += 190        errors.write(f'{e}\n')91 92def get_views_from_saved_proxies(proxy_type, proxies, username):93    for proxy in proxies:94        control(proxy.strip(), proxy_type, username)95 96def start_view(username):97    while True:98        threads = []99        for proxy_type in PROXIES_TYPES:100            try:101                with open(f"{proxy_type}_proxies.txt", 'r') as file:102                    proxies = file.readlines()103                chunked_proxies = [proxies[i:i + 70] for i in range(0, len(proxies), 70)]104                for chunk in chunked_proxies:105                    thread = Thread(target=get_views_from_saved_proxies, args=(proxy_type, chunk, username))106                    threads.append(thread)107                    thread.start()108            except FileNotFoundError:109                continue110        for t in threads:111            t.join()112 113@app.route('/')114def index():115    return render_template('index.html')116 117@app.route('/report', methods=['POST'])118def report():119    global success_count, error_count120    username = request.form['username']121    success_count = 0122    error_count = 0123    124    # Start reporting in background125    Thread(target=start_view, args=(username,)).start()126    127    return jsonify({'message': f'Reporting started for {username}'})128 129@app.route('/status')130def status():131    global success_count, error_count132    return jsonify({133        'success': success_count,134        'failed': error_count,135        'threads': active_count()136    })137 138if __name__ == '__main__':139    app.run(debug=True)