Не могу войти в Instagram с помощью запросов

Я пытаюсь войти в Instagram с помощью библиотеки requests . Мне удалось использовать следующий сценарий, но он больше не работает. Поле пароля становится зашифрованным (проверял инструменты разработчика при входе в систему вручную).

Я пробовал:

  импорт запросов на реимпорт из bs4 import BeautifulSouplink  = 'https://www.instagram.com/accounts/login/'login_url =' https://www.instagram.com/accounts/login/ajax/'payload = {'username': 'someusername', 'пароль  ':' somepassword ',' enc_password ':' ',' queryParams ': {},' optIntoOneTap ':' false '} с помощью requests.Session () как s: r = s.get (ссылка) csrf = re.findall  (r "csrf_token ":  "(. *?) " ", r.text) [0] r = s.post (login_url, data = payload, headers = {" user-agent ":" Mozilla/5.0  (Windows NT 6.1) AppleWebKit/537.36 (KHTML, например, Gecko) Chrome/77.0.3865.120 Safari/537.36 "," x-requested-with ":" XMLHttpRequest "," referer ":" https://www.instagram.com /accounts/login/"," x-csrftoken ": csrf}) print (r.status_code) print (r.url)  

С помощью инструментов разработчика я обнаружил:

  имя пользователя: someusernameenc_password: #PWD_INSTAGRAM_BROWSER: 10: 1592421027: ARpQAAm7pp/etjy2dMjVtPRdJFRPu8  FAGILBRyupINxLckJ3QO0u0RLmU5NaONYK2G0jQt + 78BBDBxR9nrUsufbZgR02YvR8BLcHS4uN8Gu88O2Z2mQU9AH3C0Z2NpDPpS22uqUYhxDKcYS5cA == queryParams: { "oneTapUsers": "[" 36990119985  "]"} optIntoOneTap: ложь код> 

Как я могу войти в Instagram с помощью запросов р >


Вы можете использовать версию аутентификации 0 — простой пароль, без шифрования:

  импортировать запросы на реимпорт из  bs4 import BeautifulSoupfrom datetime import datetimelink = 'https://www.instagram.com/accounts/login/'login_url =' https://www.instagram.com/accounts/login/ajax/'time = int (datetime.now  () .timestamp ()) payload = {'username': '', 'enc_password': f '# PWD_INSTAGRAM_BROWSER: 0: {time}: ', #  

Печать:

  200https://www.instagram. com/accounts/login/ajax/{"authenticated": true, "user": true, "userId": "XXXXXXXX", "oneTapPrompt": true, "reactivated": true, "status": "ok"}  

Чтобы сделать это, вам нужно провести некоторое исследование их javascript.

После небольшого исследования я понял, что они используют AES-GCM с длиной ключа 256 бит, у них есть префикс в 100 байт, который я до сих пор не знаю, что это такое, затем они объединяют пароль с его и зашифровать все сообщение 100 + len (пароль) .

Вы можете прочитать об AES-GCM, получить ключ, iv и дополнительные данные из их код и завершите работу самостоятельно.

Надеюсь, что помог, Удачи 🙂


В для этого вам нужно провести исследование их javascript.

После небольшого исследования я понял, что они используют AES-GCM с длиной ключа 256 бит, у них есть некоторый префикс из 100 байт, которые я до сих пор не знаю, что это, затем они присоединяют к нему пароль и шифруют все сообщение 100 + len (пароль) .

Вы можете прочитать об AES-GCM, получить ключ, iv и дополнительные данные из их кода и выполнить задание самостоятельно.

Надеюсь, что помог, Удачи 🙂


Вы не можете. Instagram шифрует пароль при отправке запроса. Если вы не поймете, как они его шифруют, и не сможете сделать то же самое с отправляемым паролем, вы не сможете войти в Instagram с запросами.


Вы не можете. Instagram шифрует пароль при отправке запроса. Если вы не сможете выяснить, как они его зашифровывают, и не сможете сделать то же самое с отправляемым паролем, вы не сможете войти в Instagram с запросами.


Приведенный выше код, предоставленный @Andrej Kesely, мне не подходит. но я внес некоторые изменения в код, установив заголовок (user-agent и Referer) в первом запросе get «s.get (link)». Если вы также получаете сообщение об ошибке, как и я.

  csrf = re.findall (r "csrf_token ":  "(. *?) " ", r.text) [0] IndexError: индекс списка вне допустимого диапазона   

Тогда вот решение, о котором я говорил вам выше.

  import reimport requestsfrom bs4 import BeautifulSoupfrom datetime import datetimelink = 'https:// www.instagram.com/accounts/login/'login_url = 'https://www.instagram.com/accounts/login/ajax/'userAgent= "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, например  Gecko) Chrome/87.0.4280.88 Safari/537.36 "time = int (datetime.now (). timestamp ()) payload = {'username': '', 'enc_password': f '# PWD_INSTAGRAM_BROWSER: 0: {time}: ', 'queryParams': {}, 'optIntoOneTap': 'false  '} с помощью requests.Session () как s: s.headers = {"user-agent": userAgent} s.headers.update ({"Referer": link}) r = s.get (link) print (r)  csrf = re.findall (r "csrf_token ":  "(. *?) " ", r.text) [0] r = s.post (login_url, data = payload, headers = {" user-agent "  : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, например, Gecko) Chrome/87.0.4280.88 Safari/537.36", "x-requested-with": "XMLHttpRequest", "referer": "https://www.instagram.com/accounts/login/"," x-csrftoken ": csrf}) print (r.status_code) print (r.url) print (r.text)  

Используйте версию python3 для запуска этого скрипта. В противном случае вы получите еще одну ошибку для «форматированных строковых литералов» и «AttributeError: объект ‘datetime.datetime’ не имеет атрибута ‘timestamp’».

Запустите сценарий следующим образом.

  python3  

Надеюсь, он решит вашу проблему.


Приведенный выше код, предоставленный @Andrej Kesely, мне не подходит. но я внес некоторые изменения в код, установив заголовок (user-agent и Referer) в первом запросе get «s.get (link)». Если вы также получаете сообщение об ошибке, как и я.

  csrf = re.findall (r "csrf_token ":  "(. *?) " ", r.text) [0] IndexError: индекс списка вне допустимого диапазона   

Тогда вот решение, о котором я говорил вам выше.

  import reimport requestsfrom bs4 import BeautifulSoupfrom datetime import datetimelink = 'https:// www.instagram.com/accounts/login/'login_url = 'https://www.instagram.com/accounts/login/ajax/'userAgent= "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, например  Gecko) Chrome/87.0.4280.88 Safari/537.36 "time = int (datetime.now (). Timestamp ()) payload = {'username': '', 'enc_password': f '# PWD_INSTAGRAM_BROWSER: 0: {  time}:  ',' queryParams ': {},' optIntoOneTap ':' false '} с помощью requests.Session () как s: s.headers = {"user-agent": userAgent} s.headers.update  ({"Referer": link}) r = s.get (ссылка) print (r) csrf = re.fin  dall (r "csrf_token ":  "(. *?) " ", r.text) [0] r = s.post (login_url, data = payload, headers = {" user-agent ":" Mozilla/ 5.0 (X11;  Linux x86_64) AppleWebKit/537.36 (KHTML, например, Gecko) Chrome/87.0.4280.88 Safari/537.36 "," x-requested-with ":" XMLHttpRequest "," referer ":" https://www.instagram.com/accounts /login/"," x-csrftoken ": csrf}) print (r.status_code) print (r.url) print (r. text)  

Используйте версию python3 для запуска этого скрипта. в противном случае вы получите еще одну ошибку для «форматированных строковых литералов» и «AttributeError: объект ‘datetime.datetime’ не имеет атрибута ‘timestamp’».

Запустите сценарий следующим образом.

  python3  

Надеюсь, это решит вашу проблему.

Оцените статью
techsly.ru
Добавить комментарий