2016-01-24 4 views
3
url = 'https://www.instagram.com/accounts/login/ajax/' 
values = {'username' : 'User', 
      'password' : 'Pass'} 

#'User-agent', '' 
data = urllib.urlencode(values) 
req = urllib2.Request(url, data,headers={'User-Agent' : "Mozilla/5.0"}) 
con = urllib2.urlopen(req) 
the_page = response.read() 

Есть ли у кого-нибудь идеи? Я продолжаю получать ошибку «403 запрещен». Его возможная instagram имеет то, что не позволит мне подключиться через python (я не хочу подключаться через их API). Что здесь происходит, есть ли у кого-нибудь идеи?403 Запрещено использование Urllib2 [Python]

Спасибо!

EDIT: Добавление дополнительной информации.

Ошибка я получаю был этот

This page could not be loaded. If you have cookies disabled in your browser, or you are browsing in Private Mode, please try enabling cookies or turning off Private Mode, and then retrying your action. 

Я отредактировал мой код, но я все еще получаю эту ошибку.

jar = cookielib.FileCookieJar("cookies") 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar)) 
print len(jar) #prints 0 
opener.addheaders = [('User-agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36')] 
result = opener.open('https://www.instagram.com') 
print result.getcode(), len(jar) #prints 200 and 2 

url = 'https://www.instagram.com/accounts/login/ajax/' 
values = {'username' : 'username', 
      'password' : 'password'} 

data = urllib.urlencode(values) 

response = opener.open(url, data) 
print response.getcode() 
+1

Пользовательский агент не собирается резать его, я думаю. Вам нужны остальные куки и, возможно, некоторые заголовки. Запустите консоль на instagram и введите 'document.cookie' и скопируйте их здесь. Кроме того, он не имеет ничего общего с Python, он не позволит вам делать это с CURL. – ishaan

+0

Мои психические силы предполагают, что им нужно будет использовать их API OAuth для входа в систему. Тем не менее, это означает, что пользователям вашего приложения необходимо будет перейти на веб-страницу, чтобы получить токен доступа (и/или обновить токен), который нужно будет передать вашему приложению. Быстрый поиск «Instagram OAuth» приводит к [этой странице] (https://www.instagram.com/developer/authentication/). – selbie

ответ

7

Два важных вещей, для стартеров:

  • убедитесь, что вы остаетесь на юридической стороне. По Terms of Use в Instagram в:

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

Вы не должны создавать учетные записи в Сервисе по несанкционированному использованию, включая, но не ограничиваясь, автоматическое устройство, скрипт, бот, паук, гусеничный или скребок.

  • есть Instagram API, который поможет оставаться на юридической стороне и сделать жизнь проще. Существует клиент Python: python-instagram

Кроме того, сам по себе является Instagram Javascript-тяжелая, и вы можете найти его трудно работать с использованием только urllib2 или requests. Если по какой-то причине вы не можете использовать API, вы должны изучить автоматизацию браузера через selenium. Обратите внимание, что вы можете автоматизировать безглавой браузер, например, PhantomJS. Ниже приведен пример кода для входа в систему:

from selenium import webdriver 

USERNAME = "username" 
PASSWORD = "password" 

driver = webdriver.PhantomJS() 
driver.get("https://www.instagram.com") 

driver.find_element_by_name("username").send_keys(USERNAME) 
driver.find_element_by_name("password").send_keys(PASSWORD) 

driver.find_element_by_xpath("//button[. = 'Log in']").click() 
Смежные вопросы