通过urllib2登录/ admin

时间:2014-03-27 12:07:12

标签: python django login urllib

我尝试使用以下代码登录我的django管理页面

#!/usr/bin/python

import urllib, urllib2, cookielib
from BeautifulSoup import BeautifulSoup

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)

url_admin = 'http://localhost:8000/admin/'
url = urllib2.urlopen(url_admin)
html = url.read()
doc = BeautifulSoup(html)

csrf_input = doc.find(attrs=dict(name='csrfmiddlewaretoken'))
csrf_token = csrf_input['value']

params = urllib.urlencode(dict(username='my_admin_user',
                               password='my_password',
                               csrfmiddlewaretoken=csrf_token))

url = urllib2.urlopen(url_admin, params)
print url.read()

但我得到了他的错误(在打印的HTML中)

<p class="errornote">
    Please log in again, because your session has expired.
</p>

我做错了什么?我的目标是保持登录会话并在之后执行一些任务。事实上,用户应该是管理员,这不是我的要求。我还没有为非管理员用户提供常规登录页面。

1 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,服务器在每次请求时都向我发送了一个新的会话cookie,但我无法用CookieJar解决它。

我最终使用了Selenium PhantomJS webdriver。如果您没有得到任何有效的解决方案,请尝试一下,这是我的经验。