通过urllib2登录/admin



我试着用下面的代码登录我的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>

我做错了什么?我的目标是保持一个登录会话,然后执行一些任务。事实上,这里的用户应该是一个管理员不是我的要求。只是我还没有一个普通的非admin用户登录页面

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

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

最新更新