Вход в Python Instagram с использованием запросов - PullRequest
0 голосов
/ 23 октября 2019

Я пытаюсь войти в Instagram с помощью python. Я могу получить токен csrf, но requests.Session().post(), похоже, неправильно публикует данные для входа на сайт. Я всегда получаю class="no-js not-logged-in client-root". Я искал некоторое время, а также пытался войти в некоторые случайные сайты, которые, казалось, работали. В методе входа в систему я просто запускаю requests.Session() и отправляю запрос на https://www.instagram.com/accounts/login/ с именем пользователя и паролем в качестве параметра data.

def login(self):
    with requests.Session() as s:
        p = s.post(self.loginUrl, data=self.loginData, allow_redirects=True)

Также, пожалуйста, неНе говорите мне использовать Selenium, я строго хочу делать это с запросами.

1 Ответ

0 голосов
/ 23 октября 2019

Попробуйте использовать этот код:

import requests

#Creating URL, usr/pass and user agent variables

BASE_URL = 'https://www.instagram.com/'
LOGIN_URL = BASE_URL + 'accounts/login/ajax/'
USERNAME = '****'
PASSWD = '*******'
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)\
 Chrome/59.0.3071.115 Safari/537.36'

#Setting some headers and refers
session = requests.Session()
session.headers = {'user-agent': USER_AGENT}
session.headers.update({'Referer': BASE_URL})


try:
    #Requesting the base url. Grabbing and inserting the csrftoken

    req = session.get(BASE_URL)
    session.headers.update({'X-CSRFToken': req.cookies['csrftoken']})
    login_data = {'username': USERNAME, 'password': PASSWD}

    #Finally login in
    login = session.post(LOGIN_URL, data=login_data, allow_redirects=True)
    session.headers.update({'X-CSRFToken': login.cookies['csrftoken']})

    cookies = login.cookies

    #Print the html results after I've logged in
    print(login.text)

#In case of refused connection
except requests.exceptions.ConnectionError:
    print("Connection refused")

Я нашел его в этом видео Youtube. Это сработало для меня, я надеюсь, что это может сработать и для вас.

...