Ternick
@Ternick

Почему не работает авторегистрация instagram?

КОД:
from user_agent import generate_user_agent
from random import choice, randint, sample
from string import ascii_letters, digits
from requests import Session, exceptions
from os.path import isfile
from re import search

def getRandomStr(length):
    return "".join(choice(ascii_letters + digits) for i in range(length))

def loginbot(proxies, email, password, username, first_name):
    try:
        session = Session()
        userAgent = generate_user_agent()
        headers = {
            'user-agent': userAgent,
            'Connection': 'keep-alive',
            'Cache-Control': 'max-age=0',
            'Upgrade-Insecure-Requests': '1',
            'Sec-Fetch-Mode': 'navigate',
            'Sec-Fetch-User': '?1',
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
            'Sec-Fetch-Site': 'none',
            'Referer': 'https://www.google.com/',
            'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7,zh-CN;q=0.6,zh;q=0.5'
                }
        r = session.get("https://www.instagram.com/?hl=ru", headers=headers, proxies=proxies, verify= False)
        rollOuthash = search(r',"rollout_hash":"(\b\w*?\b)"', r.text)[0].split('"')[3]
        # cookies = r.cookies.get_dict()
        headers = {
            'user-agent': userAgent,
            'Connection': 'keep-alive',
            'Sec-Fetch-Mode': 'cors',
            'X-Instagram-AJAX': rollOuthash,
            'Content-Type': 'application/x-www-form-urlencoded',
            'Accept': '*/*',
            'X-Requested-With': 'XMLHttpRequest',
            'X-CSRFToken':  r.cookies.get_dict()['csrftoken'],
            'X-IG-App-ID': '936619743392459',
            'Origin': 'https://www.instagram.com',
            'Sec-Fetch-Site': 'same-origin',
            'Referer': 'https://www.instagram.com/accounts/emailsignup/',
            'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7,zh-CN;q=0.6,zh;q=0.5',
                }
        data = {
            'email': email,
            'password': password,
            'username': username,
            'first_name': first_name,
            'seamless_login_enabled': '1',
            'tos_version': 'row',
            'opt_into_one_tap': 'false'
                }
        r = session.post("https://www.instagram.com/accounts/web_create_ajax/", headers=headers, data=data, proxies=proxies, verify= False)
        return r.json()
    except KeyError:
        return {'account_created': False, "status": "ok", 'error_type': "KeyError"}
    except exceptions.ConnectionError:
        return {'account_created': False, "status": "ok", 'error_type': "ConnectionError"}
    except exceptions.ProxyError:
        return {'account_created': False, "status": "ok", 'error_type': "ProxyError"}

def getProxy(filename):
    if isfile(filename):
        with open(filename) as f:
            proxies = f.read().strip().split('\n')
            proxies = sample(proxies, len(proxies))
        for proxy in proxies:
            try:
                yield {"https": "socks5://" + proxy, "http": "socks5://" + proxy}
            except StopIteration:
                print("Прокси закончились")
                exit()
    else:
        print("File with proxy isn't exist")
        exit()

def main():
    proxyGenerator = getProxy("proxy.txt")
    proxy = next(proxyGenerator)
    proxyUsed = 0
    mails = ['@gmail.com', '@yandex.by', '@ya.ru']
    first_names = ["Noah", "Liam", "William", "Mason", "James", "Benjamin", "Jacob", "Michael", "Elijah", "Ethan", "Emma", "Olivia", "Ava", "Sophia", "Isabella", "Mia", "Charlotte", "Abigail", "Emily", "Harper"]
    last_names = ["Abramson", "Adamson", "Adderiy", "Addington", "Adrian", "Albertson", "Aldridge", "Allford", "Alsopp", "Anderson", "Andrews", "Archibald", "Arnold", "Arthurs", "Atcheson", "Attwood", "Audley"]
    while True:
        email = getRandomStr(randint(7, 12)) + choice(mails)
        passw = getRandomStr(randint(7, 18))
        nickName = getRandomStr(randint(9, 18))
        fullname = choice(first_names) + " " + choice(last_names)
        result = loginbot(proxy, email, passw, nickName, fullname)
        if result["status"] == 'ok':
            if result['account_created']:
                print("Аккаунт был создан :", email, ":", passw)
            elif result['error_type'] == 'signup_block':
                print("Прокси были забанены")
            elif result['error_type'] == "KeyError":
                print("Кука не была обнаружена <что то новенькое>")
            elif result['error_type'] == "ConnectionError":
                print("Ошибка подключения")
            elif result['error_type'] == "ProxyError":
                print("Плохой прокси")
            else:
                print(result)
        else:
            print("Пожалуйста подождите <как это вообще возможно?>")
        proxy = next(proxyGenerator)

if __name__ == '__main__':
    main()

# https://www.instagram.com/ajax/bz:[{"page_id":"v1xv8g","app_id":"936619743392459","device_id":"XVf46wALAAF1Y1_787Xit0_a36gB","posts":[["qex:expose",{"universe_id":"25","mid":"XVF46WALAAF1Y1_787XIT0_A36GB"},1566046444927,0],["qex:expose",{"universe_id":"27","mid":"XVF46WALAAF1Y1_787XIT0_A36GB"},1566046445061,0]],"trigger":"qex:expose","send_method":"ajax"}]


Код выше :)
Вся прелесть в том что когда я начинаю сравнивать хедеры и прочие штуки при регистрации аккаунта браузером и моим скриптом, разницы нет <если не считать что браузер делает какие то другие ещё запросы возможно связанные с процессом авторизации>

Не ужели instagram смог забанить все прокси и никак это не обойти ?

Или я все же где то прокололся и между моими запросами есть что то общее которое помогает инстаграму забанить мои прокси ?

Не пробуйте это на своей машине <забанит блин > {можно 1 раз} - оно потом разбанит, но если больше 2 -3 раз бан навсегда :(
  • Вопрос задан
  • 1246 просмотров
Пригласить эксперта
Ответы на вопрос 1
@steemandlinux
Requests + Instagram. Люди с реальных браузеров с трудом регистрируются. Там же кукисы, зависящие от жабаскриптов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы