403禁止使用Urllib2 [Python]

时间:2016-01-24 09:29:02

标签: python instagram-api

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连接)。到底发生了什么,有没有人有任何想法?

谢谢!

编辑:添加更多信息。

我得到的错误就是这个

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 个答案:

答案 0 :(得分:7)

对于初学者来说有两个重要的事情:

  • 确保您留在法律方面。根据Instagram的Terms of Use
  

我们禁止通过自动方式抓取,抓取,缓存或以其他方式访问服务上的任何内容,包括但不限于用户个人资料和照片(可能是标准搜索引擎协议或搜索使用的技术的结果) Instagram获得明确同意的引擎。

     

您不得通过未经授权的方式使用服务创建帐户,包括但不限于使用自动设备,脚本,机器人,蜘蛛,爬虫或刮刀。

除此之外,Instagram本身很重要,您可能会发现仅使用urllib2requests很难处理。如果出于某种原因,您无法使用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()