не запускается в чём причина не пойму в разной версии программы?
Цитата:
Сообщение от forlazha
Python под винду конечно жесковато ). Можно было и на С# наваять. чтоб избежать глупых коментов).
А вообще молодец.
Я переписал решение из первого поста на с++. Судя по всему, решение из первого поста не работает. В ответе отсутствует set-cookie, вместо этого куки выставляются js-скриптом.
А как конкретнее пока не раскопал.. столкнулся с тем, что в природе отсутствует нормальный дебаггер JS-скриптов.
Я не оказываю услуги гаранта!
База данных кидал: blacklist.rf-cheats.ru
Обязательно проверяйте человека через чёрный список прежде чем совершать с ним сделку.
В хроме, в опере, в лисе есть отладчик JS. Этого мало?
В хроме нет возможности ставить бряк при изменении конкретного кука. Скачал фокс + firebug. В нём эта фишка есть, но кука меняется, а бряк не срабатывает. Оперу не пробовал.
Я не оказываю услуги гаранта!
База данных кидал: blacklist.rf-cheats.ru
Обязательно проверяйте человека через чёрный список прежде чем совершать с ним сделку.
Я не оказываю услуги гаранта!
База данных кидал: blacklist.rf-cheats.ru
Обязательно проверяйте человека через чёрный список прежде чем совершать с ним сделку.
Я переписал решение из первого поста на с++. Судя по всему, решение из первого поста не работает. В ответе отсутствует set-cookie, вместо этого куки выставляются js-скриптом.
Странно, у меня вот так до сих пор работает
Код:
import re
import urllib
import httplib
import os
import argparse
import xml.etree.ElementTree as Xml
from urlparse import urlparse
def request(url, param="", headers={}, method="GET"):
if type(param) is dict:
param = urllib.urlencode(param)
uri = urlparse(url)
conn = httplib.HTTPConnection(uri.netloc)
conn.request(method, uri.path, param, headers)
return conn.getresponse(), conn
def getCookies(responce):
result = {}
cookies = responce.getheader('set-cookie')
if not cookies: # cookies not found
return result
temp = re.split(",(?= \w+[\w\d]*=)", cookies)
for cookie in temp:
slices = re.split('=|; ', cookie)
result.update({slices[0]: slices[1]})
return result
def parseArgs():
parser = argparse.ArgumentParser()
parser.add_argument("login", help="GameCenter@Mail.ru login")
parser.add_argument("password", help="GameCenter@Mail.ru password")
parser.add_argument("-s", "--server", help="login server address")
return parser.parse_args()
def main():
args = parseArgs()
split = args.login.split("@")
if len(split) < 2:
raise Exception("Bad email '{0}'".format(args.login))
login = split[0]
domain = split[1]
password = args.password
server = args.server or "178.22.90.182:1237"
params = {"Login": login, "Domain": domain, "Password": password}
resp, conn = request(
"http://win.mail.ru/cgi-bin/auth", params, method="POST")
conn.close()
cookies = getCookies(resp)
if 'Mpop' not in cookies:
raise Exception("Authorization failed")
mpop = cookies['Mpop']
url = 'http://authdl.mail.ru/sz.php?hint=AutoLogin'
params = '<?xml version="1.0" encoding="UTF-8"?>\
<AutoLogin ProjectId="3001" SubProjectId="0" ShardId="0" \
Mpop="%s"/>' % mpop
headers = {'User-Agent': 'Downloader/3810'}
resp, conn = request(url, params, headers, "POST")
xml = resp.read()
conn.close()
root = Xml.fromstring(xml)
uid = root.attrib['PersId']
token = root.attrib['Key']
if not os.path.isfile('archeage.exe'):
raise Exception("archeage.exe not found")
commandline = ' '.join(["start", "archeage.exe", "-r",
"+auth_ip " + server,
"-uid " + uid,
"-token " + token])
print "Starting client with", args.server or "default", "server"
os.system(commandline)
if __name__ == '__main__':
try:
main()
except Exception, e:
print e
Ну по крайней мере uid и token получаю, а дальше хз, принимает ли их сервер не проверял
ЗЫ Обращение к недопонявшим: ЭТО НЕ МНОГООКОНКА, ИСПОЛЬЗУЯ ДАННЫЙ СКРИПТ ВЫ НЕ СМОЖЕТЕ ЗАПУСТИТЬ БОЛЕЕ ОДНОГО ОКНА
Я не оказываю услуги гаранта!
База данных кидал: blacklist.rf-cheats.ru
Обязательно проверяйте человека через чёрный список прежде чем совершать с ним сделку.