pyInstagram icon indicating copy to clipboard operation
pyInstagram copied to clipboard

instagram.exceptions.UnexpectedResponse

Open grafist02511 opened this issue 5 years ago • 19 comments

Get unexpected response from 'https://www.instagram.com/accounts/login/?next=/explore/locations/219892316/' Отвалился парсинг фото по геолокации. Это вышла обнова у Инстаграм?

grafist02511 avatar Aug 17 '19 08:08 grafist02511

Да, наверное, в последнее время не слежу за этим

OlegYurchik avatar Aug 17 '19 15:08 OlegYurchik

If you're trying to access Instagram user profile: Instagram has just changed the behavior of its web version interface. Now no one can view more than a few users' profiles without being authorized on their servers first. In other words, user profiles are no longer publicly available for servers like ours. We're currently searching for ways to solve this problem. Sorry for the inconveniences.

https://github.com/RSS-Bridge/rss-bridge/issues/1271

r3dnck avatar Aug 27 '19 15:08 r3dnck

У меня такая же ошибка, только я не могу авторизоваться. Может нашли решение?

kirill568 avatar Oct 02 '19 17:10 kirill568

У меня такая же ошибка, только я не могу авторизоваться. Может нашли решение?

Авторизация мне не нужна

agent = WebAgent() location = Location(1234567) account = Account("zuck") media1, pointer = agent.get_media(account) media1, pointer = agent.get_media(location, pointer=pointer, count=15, delay=1)

С такими костылями у меня работает

grafist02511 avatar Oct 02 '19 17:10 grafist02511

Нет, пишет KeyError: 'ProfilePage', я так понимаю, что он не может просматривать страницы.

kirill568 avatar Oct 02 '19 17:10 kirill568

даже если установить proxy, всё равно появляется ошибка, очень странно

kirill568 avatar Oct 02 '19 17:10 kirill568

Код из quickstart работает?

from instagram import Account, Media, WebAgent

agent = WebAgent() account = Account("zuck")

media1, pointer = agent.get_media(account) print (media1)

grafist02511 avatar Oct 02 '19 17:10 grafist02511

Нет, в этом и прикол

kirill568 avatar Oct 02 '19 17:10 kirill568

Сегодня с утра всё работало, вечером начал парсить аккаунты, и опять вылетела эта ошибка instagram.exceptions.UnexpectedResponse: Get unexpected response from 'https://www.instagram.com/accounts/login/' Error: 'ProfilePage' Не знаю что делать

kirill568 avatar Oct 03 '19 13:10 kirill568

Проксю убери из-за нее не работает скачивание медиа

Lip4ik avatar Nov 10 '19 13:11 Lip4ik

Проксю убери из-за нее не работает скачивание медиа

Если делать много запросов, то вылетает такая ошибка, её можно обойти с помощью vpn, прокси почему-то не решают эту проблему, хотя они 100% работают. Ошибка выпадает даже если не использовать прокси.

kirill568 avatar Nov 11 '19 06:11 kirill568

Проксю убери из-за нее не работает скачивание медиа

Если делать много запросов, то вылетает такая ошибка, её можно обойти с помощью vpn, прокси почему-то не решают эту проблему, хотя они 100% работают. Ошибка выпадает даже если не использовать прокси.

Нет, фича в том что прокси её решает частично( в случае лайков и комментов) если вы при 429 будете менять проксю скачивание продолжится. Однако в media при подключении любой прокси вылетает ошибка ProfilePage not found (или что-то вроде того). А в случае с лайкамм и клиентами или 429( много запросов) или 403( не валидная прокся)

Lip4ik avatar Nov 11 '19 07:11 Lip4ik

А vpn не является альтернативой, так как если писать для своего устройства все окей, а если многопользовательское то все сломается. Или же ставить на всех впн и тд

Lip4ik avatar Nov 11 '19 07:11 Lip4ik

А vpn не является альтернативой, так как если писать для своего устройства все окей, а если многопользовательское то все сломается. Или же ставить на всех впн и тд

Есть тогда какое-нибудь решение? Мне нужно доставать информацию из bio большого количества аккаунтов.

kirill568 avatar Nov 11 '19 10:11 kirill568

А vpn не является альтернативой, так как если писать для своего устройства все окей, а если многопользовательское то все сломается. Или же ставить на всех впн и тд

Есть тогда какое-нибудь решение? Мне нужно доставать информацию из bio большого количества аккаунтов.

Какой метод вы используете? get_media?

Lip4ik avatar Nov 11 '19 10:11 Lip4ik

А vpn не является альтернативой, так как если писать для своего устройства все окей, а если многопользовательское то все сломается. Или же ставить на всех впн и тд

Есть тогда какое-нибудь решение? Мне нужно доставать информацию из bio большого количества аккаунтов.

Какой метод вы используете? get_media?

account = Account(people)
agent.update(account)
biography = account.biography
name = account.full_name

kirill568 avatar Nov 11 '19 13:11 kirill568

cnt_proxy = 0 settings = None settings_list = [None]

def Change_proxy(): global cnt_proxy global settings global settings_list if cnt_proxy == len(settings_list) - 1: cnt_proxy = 0 else: cnt_proxy += 1 settings = settings_list[cnt_proxy] print("Change proxy to", cnt_proxy)

def Exception_handler(e): global cnt_proxy global settings global settings_list if "Cannot connect to proxy." in str(e.args[0]): del settings_list[cnt_proxy] print("Proxy is not working") Change_proxy() elif "with response code '429'" in str(e.args[0]): print("Proxy overloaded") Change_proxy() else: # TODO://Media except ProfilePage raise e

def take_proxy_list(proxy_file_name): global settings_list with open(proxy_file_name) as proxies: for proxy in proxies: elem = {"proxies": {re.search(r".*://", proxy).group(0)[:-3]: proxy.rstrip()}} settings_list.append(elem) account = Account(people) agent.update(account, settings=settings) biography = account.biography name = account.full_name

Lip4ik avatar Nov 11 '19 19:11 Lip4ik

cnt_proxy = 0 settings = None settings_list = [None]

def Change_proxy(): global cnt_proxy global settings global settings_list if cnt_proxy == len(settings_list) - 1: cnt_proxy = 0 else: cnt_proxy += 1 settings = settings_list[cnt_proxy] print("Change proxy to", cnt_proxy)

def Exception_handler(e): global cnt_proxy global settings global settings_list if "Cannot connect to proxy." in str(e.args[0]): del settings_list[cnt_proxy] print("Proxy is not working") Change_proxy() elif "with response code '429'" in str(e.args[0]): print("Proxy overloaded") Change_proxy() else: # TODO://Media except ProfilePage raise e

def take_proxy_list(proxy_file_name): global settings_list with open(proxy_file_name) as proxies: for proxy in proxies: elem = {"proxies": {re.search(r".*://", proxy).group(0)[:-3]: proxy.rstrip()}} settings_list.append(elem) account = Account(people) agent.update(account, settings=settings) biography = account.biography name = account.full_name

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

settings = {
    "proxies": {
		"http": "50.235.28.146:3128",
		"http": "23.97.101.222:80",
		"http": "200.89.178.73:8080",
		"http": "195.171.27.244:3128",
		"http": "109.226.233.31:3128",
		"http": "176.105.100.62:3128",
		"http": "165.22.44.147:80",
		"http": "167.71.59.12:8080",
		"http": "187.110.16.2:3128",
		"http": "144.217.74.219:3128",
		"http": "119.81.71.27:8123",
		"http": "103.35.64.12:3128",
		"http": "157.245.209.92:80",
		"http": "95.168.185.183:8080",
		"http": "173.192.21.89:25"
    },
}
agent.update(account, settings=settings)
biography = account.biography
name = account.full_name

kirill568 avatar Nov 12 '19 13:11 kirill568

cnt_proxy = 0 settings = None settings_list = [None] def Change_proxy(): global cnt_proxy global settings global settings_list if cnt_proxy == len(settings_list) - 1: cnt_proxy = 0 else: cnt_proxy += 1 settings = settings_list[cnt_proxy] print("Change proxy to", cnt_proxy) def Exception_handler(e): global cnt_proxy global settings global settings_list if "Cannot connect to proxy." in str(e.args[0]): del settings_list[cnt_proxy] print("Proxy is not working") Change_proxy() elif "with response code '429'" in str(e.args[0]): print("Proxy overloaded") Change_proxy() else: # TODO://Media except ProfilePage raise e def take_proxy_list(proxy_file_name): global settings_list with open(proxy_file_name) as proxies: for proxy in proxies: elem = {"proxies": {re.search(r".*://", proxy).group(0)[:-3]: proxy.rstrip()}} settings_list.append(elem) account = Account(people) agent.update(account, settings=settings) biography = account.biography name = account.full_name

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

settings = {
    "proxies": {
		"http": "50.235.28.146:3128",
		"http": "23.97.101.222:80",
		"http": "200.89.178.73:8080",
		"http": "195.171.27.244:3128",
		"http": "109.226.233.31:3128",
		"http": "176.105.100.62:3128",
		"http": "165.22.44.147:80",
		"http": "167.71.59.12:8080",
		"http": "187.110.16.2:3128",
		"http": "144.217.74.219:3128",
		"http": "119.81.71.27:8123",
		"http": "103.35.64.12:3128",
		"http": "157.245.209.92:80",
		"http": "95.168.185.183:8080",
		"http": "173.192.21.89:25"
    },
}
agent.update(account, settings=settings)
biography = account.biography
name = account.full_name

так у Вас в словаре proxies, на все значения один ключ - "http"

SanzharMrz avatar Sep 22 '20 09:09 SanzharMrz