авторизации на сайте переводчика которого пробую добавить
сайт yarp-online.ru
в данный момент скрипт работает следующим обзором
я в ручную авторизируюсь на сайте смотрю через Fiddler PHPSESSID
и вставляю в скрипт, в программе все работает , но PHPSESSID устаревает через какое-то время
мне надо чтобы в скрипте можно было указать логин пароль и чтоб полученный PHPSESSID отправлялся с последующим запросам
главное ограничение надо не выходить за рамки requests,cookielib, urllib2, urllib
весь скрипт
# coding: utf-8 # worldtrans.py # 7/5/2012 jichi # # URLs if __name__ == '__main__': import sys sys.path.append('..') import re, requests from sakurakit.skdebug import dwarn, derror from sakurakit.sknetdef import GZIP_HEADERS from sakurakit.skstr import unescapehtml import pprint import base64 import string import cookielib, urllib2, urllib from sakurakit import skstr session = requests # global session def _LANG(lang): """ @param lang str @return str """ return 'ru' if lang == '' else lang url = 'http://yarp-online.ru/' # сайт переводчика yarp_TEXT_START = '<div id="result" style="height:95px" >' yarp_TEXT_STOP = '<' def api(to='ru', fr=''): """ @return str @raise KeyError """ FR, TO = fr.upper(), to.upper() langs = fr, to if 'ru' in langs: return ''.join((url, "",)) # def translate(text, to='ru', fr=''): """Return translated text, which is NOT in unicode format @param text unicode not None @param fr unicode not None, must be valid language code @param to unicode not None, must be valid language code @return unicode or None """ try: r = session.post(api(to, fr), headers = { 'src': text, 'Host': 'yarp-online.ru', 'User-Agent': 'Mozilla/5.0 (Windows NT 5.1; rv:27.0) Gecko/20100101 Firefox/27.0', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0', 'Accept':'Language: ru-ru,ru;q=0.8,uk;q=0.6,en-us;q=0.4,en;q=0.2', 'Accept':'Encoding: gzip, deflate', 'Cookie': 'PHPSESSID=', #сюда вставляю PHPSESSID из Fiddler 'Connection': 'keep-alive', 'Cache-Control': 'max-age=0' }, data = { 'src': text }) #r = requests.get(url, data=json.dumps(payload), headers=headers) #print r.headers['Content-Type'] ret = r.content if r.ok: ret = skstr.findbetween(ret, yarp_TEXT_START, yarp_TEXT_STOP) ret = ret.decode('utf8', errors='ignore') ret = skstr.unescapehtml(ret) return ret except socket.error, e: dwarn("socket error", e.args) except requests.ConnectionError, e: dwarn("connection error", e.args) except requests.HTTPError, e: dwarn("http error", e.args) #except UnicodeDecodeError, e: # dwarn("unicode decode error", e) except KeyError, e: dwarn("language error", e) #except KeyError, e: # dwarn("invalid response header", e.args) except Exception, e: derror(e) dwarn("failed") try: dwarn(r.url) except: pass return "" if __name__ == '__main__': t = translate(u"あのね\nすもももももももものうち!", 'zht') import sys from PySide.QtGui import * a = QApplication(sys.argv) w = QLabel(t) w.show() a.exec_() # EOF