Форум сайта python.su
#coding=utf-8 import httplib import urllib import re conn = httplib.HTTPConnection("m.odnoklassniki.ru", 80) headers = {} headers['User-Agent'] = "Mozilla/5.0 (X11; Linux i686; rv:10.0.6) Gecko/20100101 Firefox/10.0.6" headers['Accept'] = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" conn.request("GET", "/", None, headers) res = conn.getresponse() tkn = re.search(r"/dk\?bk=GuestMain&st\.cmd=main&tkn=([0-9]{4})", res.read()).group(1) sid = re.search(r"SERVERID=(\S+);", res.getheader('Set-Cookie')).group(1) headers['Cookie'] = "SERVERID=%s; BANNER_LANG=ru; community-lang=ru" % (sid) print tkn, sid params = urllib.urlencode({"fr.posted": "set", "fr.needCaptcha": "", "fr.login": "admin", "fr.password": "pass", "button_login": "Войти"}) conn.request("POST", "/dk?bk=GuestMain&st.cmd=main&tkn=%s" % (tkn), params, headers) res = conn.getresponse() print res.read() print res.status print res.getheaders() conn.close()
Отредактировано yss (Авг. 10, 2012 07:22:12)
Офлайн
Насколько блевотно это выглядит после граба
Минусатору: после граба код выглядит нечитаемым, поэтому читать я его не буду. Может, кто-то другой тебе поможет. А хочешь быть как человек - юзай requests или grab.
Отредактировано odnochlen (Авг. 11, 2012 15:49:27)
Офлайн
Возможно все дело в Keepalive (после разрыва соединения нужно заново авторизоваться), насколько знаю httplib и urllib не поддерживают этот режим.
Офлайн
agrynБред.
Возможно все дело в Keepalive (после разрыва соединения нужно заново авторизоваться)
Офлайн
а что в ответе пишет?
Офлайн
Да лан, читабельно все выглядит!
Офлайн
Есть предположение что у тебя падает сессия прежде чем ты успеваешь обработать и ввести данные для входа. Попробуй на zbrowser реализацию сделать или опиши подробнее что необходимо получить.
то что я вижу у тебя 2 раза в коде встречается res = conn.getresponse() и соответственно куки не сохраняются для предыдущий сессии. Или у тебя до этого выпадает ошибка ?
Офлайн
Поменялось наверно что-то за 2 года
Офлайн
да вот и и хотим узнать автор наверное решил эту проблему
Офлайн