From 5afe839eb797274b2439843d3c01a53f7787f3b9 Mon Sep 17 00:00:00 2001 From: Lasse Date: Fri, 27 Aug 2021 19:31:09 +0200 Subject: [PATCH] removed some --- .gitignore | 2 - facebook/accs.py | 290 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 290 insertions(+), 2 deletions(-) create mode 100644 facebook/accs.py diff --git a/.gitignore b/.gitignore index ccc1003..79155be 100644 --- a/.gitignore +++ b/.gitignore @@ -17,5 +17,3 @@ facebook/mrkoll.py *.pyc facebook/tortest.py facebook/phone.py -facebook/accs.py -facebook/gephi.py diff --git a/facebook/accs.py b/facebook/accs.py new file mode 100644 index 0000000..68a3b2a --- /dev/null +++ b/facebook/accs.py @@ -0,0 +1,290 @@ +""" Import profiles from accsmarket """ + +from os import chdir +from getpass import getpass +from os.path import abspath, dirname +from random import randint +from time import sleep +import base64 +import json +import requests + +# Gör fb-scraper till arbetsmapp +chdir(dirname(dirname(abspath(__file__)))) + +from arangodb import arango_connect +import config +from helpers import now, nowstamp + +def mullvad_servers_to_db(db): + """ Läser fil med servarar och exporterar till db. Används bara om servarna skulle uppdateras hos Mullvad. """ + with open("data/servers.txt") as f: + for line in f.readlines(): + if "@" in line: + line = line.strip() + city = line[: line.find("@")].strip() + + if ("WireGuard" in line): # "au", "ca" #För senare när det behövs + line = line.strip() + country_short = line[:2] + server_id = line[: line.find("-")] + + # Kolla så att servern inte redan används av profil i databasen + # eller finns i listan som skapas nu. + city_short = city[city.find("(") + 1 : city.find(")")] + server_name = [country_short, city_short, server_id + "-wireguard"] + server = { + '_key': server_id, + 'country': country_short, + "city": city, + "id": server_id, + "server": server_id + "-wg.socks5.mullvad.net:1080", + "server_connect": server_name,} + db.insert_document('servers', server) + sleep(0.1) + + + +def servers_to_db(db, server_collection, socks='socks5'): + """ Läser fil med servarar och exporterar till db. """ + with open("socks5free.csv") as f: + for line in f.readlines(): + server = line.split(';')[1] + db.insert_document(server_collection, {'_key':server, 'proxies': {"https": f"{socks}://{server}", + "http": f"{socks}://{server}"}, 'country': False}) + sleep(0.1) + + + +def used_emails(db, collection): + cursor = db.aql.execute( + """ + FOR doc IN @@col + RETURN doc.email + """, + bind_vars={'@col': collection}) + return [email for email in cursor] + +def get_server(db, country, test=False, servers='servers', profiles='profiles'): + """ Hämtar en server åt profilen """ + if country == 'any': + cursor = db.aql.execute( + """ + FOR doc IN @@col + FILTER doc.country not in ['us', 'se'] + RETURN {proxies: doc.proxies, country: doc.country, id: doc.id, _key:doc._key, city:doc.city, server:doc.server, server_connect:doc.server_connect} + """, bind_vars={'@col': servers}) + else: + cursor = db.aql.execute( + """ + FOR doc IN @@servers + FILTER doc.country == @country + RETURN {proxies: doc.proxies, country: doc.country, id: doc.id, _key:doc._key, city:doc.city, server:doc.server, server_connect:doc.server_connect} + """, + bind_vars={'country': country, '@servers': servers} + ) + + servers = [] + used = used_servers(test, profiles) + for server in cursor: + if server['_key'] not in used: + servers.append(server) + if servers != []: + server = servers[randint(0, len(servers)-1)] + return server + + +def to_accs(db, vendors, accs, profiles): + """ + Ta profiles från köpt fil och lägg i accs + """ + + file = input('Lägg filen här ').strip("'").strip() + vendor = str(file[file.rfind('-')+1:file.rfind('.')]) + sep = vendors[vendor]['sep'] + info = vendors[vendor]['info'].split(':') + + used_accs = used_emails(db, accs) + used_profiles = used_emails(db, profiles) + + + with open(file) as f: + for line in f: + line = line.replace("https:", "https;") + l = line.split(sep) + # c = 0 + # for i in l: + # c += 1 + # print(c) + # print(i) + # print() + doc = {} + doc["vendor"] = vendor + doc["created"] = now() + if 'email' in info: + doc['email'] = l[info.index('email')] + elif 'login' in info: + doc['email'] = l[info.index('login')] + if doc['email'] in used_accs or doc['email'] in used_profiles: + continue + doc['name'] = doc['email'] + if 'pwd' in info: + doc["pwd"] = l[info.index('pwd')] + else: + doc["pwd"] = '' + if 'url' in info: + doc['id'] = l[info.index('url')].replace("https;", "https:") + if "useragent" in info: + doc["useragent"] = l[info.index('useragent')].strip() + else: + doc["useragent"] = config.user_agent + if 'cookie' in info: + cookies = l[info.index('cookie')] + + if 'c_user=' in cookies: + cookie = {} + for c in cookies.split(';'): + cookie[c[:c.find('=')].strip()] = c[c.find('=') + 1:].strip() + else: + cookies_base64 = cookies.strip()#.strip('=') + # print() + # print(cookies_base64) + # print() + cookies64_bytes = cookies_base64.encode("ascii") + cookies_bytes = base64.b64decode(cookies64_bytes) + #exit() + cookies_str = ( + cookies_bytes.decode("ascii") + .replace("'", '"') + .replace("False", "false") + .replace("True", "true") + ) + cookies = json.loads(cookies_str) + cookie = {} + if vendor == '159': + for c in cookies['cookies']: + cookie[c['name']] = c['value'] + else: + for c in cookies: + name = c["name"] + del c["name"] + cookie[name] = c["value"] + doc['cookie'] = cookie + else: + cookie = {} + if 'birthday' in info: + doc["birthday"] = l[info.index('birthday')] + if 'token' in info: + doc['token'] = l[info.index('token')].strip() + db.insert_document(accs, doc) + sleep(0.1) + +def to_profiles(db, test, accs='accs', profiles='profiles', country='us', servers='servers'): + """ Tar en prifil från accs och en server från servers och lägger in i profiles """ + count = 0 + for profile in [i for i in db.collection(accs).all()]: + count +=1 + if profile['email'] in used_emails(db, profiles): + continue + id_acc = profile['_id'] + del profile['_id'] + del profile['_rev'] + server = get_server(db, country, test, servers, profiles) + if server == None: + print(f'Inlagda profiler: {count}\nInga fler lediga servrar.') + break + profile["server"] = server["server"] + profile["server_connect"] = server["server_connect"] + profile["_key"] = server["_key"]#.replace(':', '') + profile["in_use"] = nowstamp() + profile['proxies'] = server['proxies'] + if test: + profile["in_use"] = nowstamp() - 1200 + db.insert_document(profiles, profile) + sleep(0.1) + db.delete_document(id_acc) + print('Inlagda profiler:', count, end='\r') + + +def used_servers(test=False, profiles='profiles'): + cursor = db.aql.execute( + """ + FOR doc IN @@col + RETURN doc._key + """, + bind_vars={'@col': profiles} + ) + servers = [doc for doc in cursor] + return servers + + +def webshare_proxies(): + """Get list of webshare-proxies.""" + + proxielist = requests.get('https://proxy.webshare.io/proxy/list/download/sompzungcbajbeqmxoopddsthzarqlewjgraicog/-/http/port/direct/') + + proxies = {} + count = 0 + + for line in proxielist.text.split('\n'): + count += 1 + proxie = line.replace('\r', '').split(':') + if proxie != ['']: + server = proxie[0] + port = proxie[1] + proxies[count] = {'server': server, 'port': port} + + + for _, proxie in proxies.items(): + proxies={'https':'socks5://xigpxrzr:ezgjcwr8lonj@{server}:{port}'.format(server=proxie['server'], port=proxie['port']), + 'http':'socks5://xigpxrzr:ezgjcwr8lonj@{server}:{port}'.format(server=proxie['server'], port=proxie['port']) + } + + try: + db.insert_document('servers_webshare', {'_key':proxie['server'], 'proxies': proxies, 'country': 'us'}) + except: + pass + +if __name__ == "__main__": + + vendors = { + '1152': {'info': 'login:password:cookie:token', 'sep': '|'}, + '1091': {'info': 'login:password:birthday:url:cookie', 'sep': ':'}, + '1113': {'info': 'login:password:mail:password:birthday:country:useragent:token:cookie', 'sep': '|'}, + '926': {'info': 'login:password:email:email password:birthday:token:cookie', 'sep': '|'} , + #'1113': {'info': 'login:mail:password:emailpassword:birthday:useragent:token:cookie', 'sep': '|'}, + '159': {'info': 'login:password:birthday:id:cookie', 'sep':':'} + } + + + # Det här ska köras lokalt så löseordet finns i fil + try: + with open("password_arango.txt") as f: + pwd = f.readline() + except: + pwd = getpass('Lösenord för Accs: ').strip() + + db = arango_connect(pwd, username='Accs') +§ + ############################### + ### Variabler att ställa in ### + country='us' + test = False + profiles = 'profiles_webshare' # ex profiles_free + servers = 'servers_webshare' + ############################### + + + accs = 'accs' + if test: + profiles='profiles_test' + accs='accs_test' + + #to_accs(db, vendors, accs=accs, profiles=profiles) ## Den här för att lägga in nyköpta profiler + #webshare_proxies() ## Den här för att uppdatera servers hos webshare + + # Kombinera köpt profil med server och lägg i profiles + to_profiles(db, test, accs=accs, profiles=profiles, country=country, servers=servers) + + +