Instagram обнаруживает запросы Python - PullRequest
0 голосов
/ 01 февраля 2019

я использую python для просмотра веб-страниц, но instagram обнаруживает такие устройства, как:
Устройство · Python-запросы · x City, x
и блокирует соединение, как я могу это исправить?

Device · Python Requests

я пытаюсь использовать fake_useragent или browser manual setting код:

def login(self):
    print ('Trying to login as %s...\n' % (self.username))
    self.s.headers.update({
        'Accept': '*/*',
        'Accept-Encoding' : 'gzip, deflate',
        'Accept-Language' : 'en-US;q=0.6,en;q=0.4',
        'authority': 'www.instagram.com',
        'ContentType' : 'application/x-www-form-urlencoded',
        'Connection': 'keep-alive',
        'Host' : 'www.instagram.com',
        'origin': 'https://www.instagram.com',
        'Referer': 'https://www.instagram.com',
        'Upgrade-Insecure-Requests':'1',
        'UserAgent':self.ua.random,
        'x-instagram-ajax':'1',
        'X-Requested-With': 'XMLHttpRequest'
    })
    r = self.s.get('https://www.instagram.com/') 
    self.s.headers.update({'X-CSRFToken' : r.cookies.get_dict()['csrftoken']})
    r = self.s.post('https://www.instagram.com/accounts/login/ajax/', data={'username':self.username, 'password':self.password}, allow_redirects=True)
    self.s.headers.update({'X-CSRFToken' : r.cookies.get_dict()['csrftoken']})
    loginstatus = json.loads(r.text)
    if loginstatus['authenticated'] == True :
        print ('Login Success')
        self.login_status=True
        return True
    elif loginstatus['authenticated'] == False :
        return False

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Вы можете попробовать разные вещи.Попробуйте скопировать User-Agent с одного из ваших браузеров, если он не работает, возможно, потому что он использует некоторые куки или localStorage для хранения информации о логинах.Попробуйте проверить куки в вашем браузере, отфильтровав их по доменам и скопировав значения в словарь.

cookies = {"key": "value"} #Dictionary as cookies
credentials = {'username': username, 'password': password}
r = requests.post("http://examples.com",
        cookies=cookies, 
        data=credentials,
        allow_redirects=True)
0 голосов
/ 01 февраля 2019

Theres много javascript в комплекте.С python requests вы получаете HTTP-ответ непосредственно от веб-сервера.Это должно быть сделано в браузере, чтобы получить всю информацию и контент со страницы.

Самый простой способ решить эту проблему, это использовать селен.

...