Форум сайта python.su
Установил Firebug, посмотрел заголовки, сделал так:
#!/usr/bin/python
import urllib,urllib2
url = 'http://python.su/forum/login.php?action=in'
data = urllib.urlencode({'login' : 'grok', 'password' : 'mypass'})
headers = {'Host' : 'python.su',
'User-Agent' : 'Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.04 (lucid) Firefox/3.6.13',
'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language' : 'ru,en-us;q=0.7,en;q=0.3',
'Accept-Encoding' : 'gzip,deflate',
'Accept-Charset' : 'windows-1251,utf-8;q=0.7,*;q=0.7',
'Keep-Alive' : '115',
'Connection' : 'keep-alive',
'Referer' : 'http://python.su/forum/login.php'
}
request = urllib2.Request(url, data, headers)
handle = urllib2.urlopen(request)
print handle.info().get('Set-Cookie')
text = handle.read()
f = "/home/adv/python/pass"
fopen = open(f, "w")
fopen.write(text)
fopen.close()
Отредактировано (Янв. 20, 2011 10:46:57)
Офлайн
А вы посмотрите на куки, которые вы отправляетет в запросе. Там уже есть сессия punbb и скорей всего она просто не ставится новая при повторном логине.
Офлайн
Александр КошелевСорри, но вчера уже поздним вечеров посмотрел не в ту сторону, т.е. не в post запрос, а уже на ответ сервера… (поправил скрипт выше) Поэтому и куки действительно не менялись. Но теперь авторизация снова не проходит. В чём же может быть дело? Заголовки верные, логин и пароль тоже.. Есть ли у кого какие соображения??
А вы посмотрите на куки, которые вы отправляетет в запросе. Там уже есть сессия punbb и скорей всего она просто не ставится новая при повторном логине.
Офлайн
Решил-таки свою проблему, это если кому интересно, да и может такому же ламу, как и я, пригодится, через замечателную библиотеку mechanize по совету вот из этой темы следующим образом:
from mechanize import Browser
login_url = 'http://python.su/forum/login.php?action=in'
user_name = 'my_user_name'
password = '*****'
br = Browser()
br.open(login_url)
br.select_form(nr=0)
br['req_username'] = user_name
br['req_password'] = password
resp = br.submit()
Отредактировано (Янв. 20, 2011 12:55:48)
Офлайн