Сайт
ru.grepolis.comКак видно из сниффера, для авторизации необходимо отправить ряд Post и Get запросов…
Куки обрабатываю автоматом.
Сделал тестовый акк на Grepolis
Вот код:
from collections import OrderedDict
from grab import Grab
import re
import json
import time, random
headers = {
'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0',
'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language' : 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3',
'Accept-Encoding' : 'gzip, deflate',
'Connection' : 'keep-alive',
}
#1
url = 'http://ru.grepolis.com'
g = Grab(headers=headers)
g.go(url)
#2
name = 'Tartang'
password = '7TXzMQvUZt3qUqh'
urlTo_start_page = 'http://ru.grepolis.com/start/index?action=login_from_start_page'
json_arg = json.dumps(OrderedDict([
("name", name),
("password", password),
("passwordhash", ""),
("autologin", False)],
))
#print json_arg
g.setup(post={'json':json_arg}, referer='http://ru.grepolis.com')
g.go(urlTo_start_page) # будет сгенерирован POST-запрос
urlTo_start_page_next = 'http://ru.grepolis.com/start/index?action=fetch_news'
g.setup(post={'json':"{}"}, referer='http://ru.grepolis.com', headers = {'X-Requested-With' : 'XMLHttpRequest'})
g.go(urlTo_start_page_next) # будет сгенерирован POST-запрос
urlTo_login_to_game = 'http://ru.grepolis.com/start?action=login_to_game_world'
g.setup(post=[
('world' , 'ru11'),
('facebook_session',''),
('facebook_login',''),
('gift_key',''),
('portal_sid',''),
('name' , 'Tartang'),
('password' , '7TXzMQvUZt3qUqh')
], referer='http://ru.grepolis.com')
g.go(urlTo_login_to_game) # будет сгенерирован POST-запрос
#-----------------------------------------------------------------------------------------------
p = re.compile('csrfToken\"\:\"(.*?)\"\,\"')
token = p.findall(g.response.body)
token = token[0]
#print token
p = re.compile('\"notification_last_requested_id\":(.*?)\,\"')
nlreq = p.findall(g.response.body)
nlreq = nlreq[0]
#print nlreq
timef = int(time.time()*1000)
#print timef
data = 'http://ru11.grepolis.com/game/data?action=get&town_id=51543&h=%s&json={"types":[{"type":"progressable"},{"type":"buildings"},{"type":"powers"},{"type":"units"},{"type":"l10n"},{"type":"grepolympiaDisciplines"},{"type":"grepolympiaTraining"},{"type":"shopItems"},{"type":"awards"},{"type":"frontendBridge"},{"type":"map","param":{"x":9,"y":4}},{"type":"bar"},{"type":"playerprogress"}]}&_=%s' %(token, nlreq)
g.setup(headers = {'X-Requested-With' : 'XMLHttpRequest'}, referer = 'http://ru11.grepolis.com/game/index?login=1')
g.go(data)
print g.response.cookies
После последнего запроса куки должны быть такого вида:
Cookie: sid=ecix0ssrblwk484o880gw8k4o; cid=1115109364; logged_in=true
А у меня получается так:
Cookie: PHPSESSID=0vrelroepparpg5setuufo8g11; sid=7pebv4lbrz8kw48o8o8804cso; logged_in=false; cid=1619514323
Заголовки последнего запроса
КАК ДОЛЖНО БЫТЬ
XIH}&_=1345543516022 HTTP/1.0
Host:
ru11.grepolis.comUser-Agent: Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0.1
Accept: text/plain, */*; q=0.01
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Connection: Keep-Alive
X-Requested-With: XMLHttpRequest
Referer:
http://ru11.grepolis.com/game/index?login=1Cookie: sid=ecix0ssrblwk484o880gw8k4o; cid=1115109364; logged_in=true
КАК У МЕНЯ
XIH}&_=0 HTTP/1.1
Host:
ru11.grepolis.comReferer:
http://ru11.grepolis.com/game/index?login=1Cookie: PHPSESSID=0vrelroepparpg5setuufo8g11; sid=7pebv4lbrz8kw48o8o8804cso; logged_in=false; cid=1619514323
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Keep-Alive: 300
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0
Accept-Charset: utf-8,windows-1251;q=0.7,*;q=0.5
Connection: keep-alive
X-Requested-With: XMLHttpRequest
Почему у меня передается logged_in=false?