Навигация по Instagram после Python Запросы не работают - PullRequest
1 голос
/ 03 мая 2020

Я начал создавать веб-скребок для Instagram и пытаюсь НЕ использовать Selenium (собрать предыдущие версии с Selenium, нужно что-то быстрее). Я знаю, что Instagram API больше не будет, поэтому я не хотел иметь с ним дело.

Проблема, с которой я сталкиваюсь, заключается в том, что «следующий» веб-сайт не распознается как зарегистрированный. Я могу успешно войдите на страницу входа в систему и перейдите на страницу профиля пользователя, но как только я попытаюсь выполнить запрос «GET» на следующей странице, это сигнализирует о том, что мне нужно войти в систему. Вот код в python с использованием библиотеки запросов:

BASE_URL = 'https://www.instagram.com/'
LOGIN_URL = BASE_URL + 'accounts/login/ajax/'

def login():
    """Logs in to instagram."""
    session.headers.update(
        {'Referer': BASE_URL, 'user-agent': STORIES_UA})
    req = session.get(BASE_URL)

    session.headers.update({'X-CSRFToken': req.cookies['csrftoken']})

    login_data = {'username': USERNAME, 'password': PASSWORD}
    login = session.post(LOGIN_URL, data=login_data, allow_redirects=True)
    session.headers.update({'X-CSRFToken': login.cookies['csrftoken']})
    loginVerification = login.json()

    """
    Check that the user is actually authenticated in the JSON
    """
    if loginVerification['authenticated'] == True and login.status_code == 200:
        print("Successful login")
    else:
        print("Invalid login")
        if login.status_code != 200:
            print("Client error")

    print(login.url)

    """Get to user home page"""
    user_page = session.get(YOURPAGE_URL)
    if user_page.status_code == 200:
        print("Successful navigation to user page")
        print(user_page.url)
    else:
        print("Couldn't get to user page")

    """Next we need to get the user's followers"""
    session.headers.update({'Referer': FOLLOWERS_URL})
    follower_page = session.get(FOLLOWERS_URL)
    if follower_page.status_code == 200:
        print("Successful navigation to followers page")
        print(follower_page.url)
    else:
        print("Couldn't get to followers page")

Когда я распечатываю URL разных страниц после выполнения запросов GET, они соответствуют странице профиля пользователя, но не один раз, когда я пытаюсь и перейдите на следующую страницу.

Я должен быть направлен на это: https://www.instagram.com/USERNAME/following/

Но вместо этого мне отправляется: https://www.instagram.com/accounts/login/?next=/USERNAME/following/

Любая помощь приветствуется!

...