Я начал создавать веб-скребок для 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/
Любая помощь приветствуется!