Настроить личные запросы Python для учетной записи Instagram - PullRequest
2 голосов
/ 10 июля 2019

По какой-то причине у меня возникают проблемы с настройкой личной учетной записи с помощью простого http-запроса.Я могу нормально редактировать профиль, но когда я отправляю запрос на установление приватности моей учетной записи, он выдает мне 200 кодов состояния вместе с сообщением об успешном ответе, но при проверке моего профиля учетная запись не является приватной ...

Вот мой код:

import requests
import json

class IGWebAPI:

    def __init__(self, username, password, user_agent):
        self.session = requests.Session()
        self.username = username
        self.password = password
        self.user_agent = user_agent
        self.login()

    def login(self):
        self.session.headers = {'user-agent': self.user_agent}
        self.session.get('https://www.instagram.com/accounts/login/ajax/')
        self.session.headers.update({'Referer': 'https://www.instagram.com/accounts/login/', 'x-csrftoken': self.session.cookies['csrftoken']})
        self.session.post('https://www.instagram.com/accounts/login/ajax/', data={'username': self.username, 'password': self.password, 'queryParams' : r'{}'}, allow_redirects=True)
        self.session.headers.update({'x-csrftoken': self.session.cookies['csrftoken']})

    def make_profile_private(self):
        self.session.get('https://www.instagram.com/accounts/privacy_and_security/')
        self.session.headers.update(
            {'Referer' :'https://www.instagram.com/accounts/privacy_and_security/'})
        a = self.session.post(
                'https://www.instagram.com/accounts/set_private/',
                data = {
                    'is_private' : True
                }
            )
        print(a.text)

username = ''
password = ''
user_agent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'
api = IGWebAPI(username, password, user_agent)
api.make_profile_private()

РЕДАКТИРОВАТЬ: пришлось добавить строку для обновления заголовков с токеном csrf.

...