Если остались еще люди у которых нет своего такого скрипта, вот вам моя поделка Требования:
Python 2.7
Умение пользоваться командной строкой
Код:
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="[Ссылки могут видеть только зарегистрированные пользователи. ] login")
parser.add_argument("password", help="[Ссылки могут видеть только зарегистрированные пользователи. ] 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 = 'https://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/4050'}
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
Как пользоваться:
Качаем и устанавливаем питон версии 2.7 (добавляем его в переменную среды PATH, если инсталлер не сделал этого сам)
Создаем текстовый документ с названием mini.py в папке /ArcheAge/Bin32
Вставляем в созданный файл код скрипта
Запускаем скрипт из командной строки: mini.py <email> <password>, или создаете .bat файл и запускаете из него
Обновления:
11.04.2014
[~] Исправлены некоторые ошибки
[+] Добавлена возможность подключения клиента к собственному логин-серверу, для этого используем ключ -s или --server Пример
Код:
mini.py [Ссылки могут видеть только зарегистрированные пользователи. ] password -s 127.0.0.1:1337
[+] Добавлена мини-справка, увидеть ее можно запустив скрипт с ключом -h или --help Пример
Код:
usage: mini.py [-h] [-s SERVER] login password
positional arguments:
login [Ссылки могут видеть только зарегистрированные пользователи. ] login
password [Ссылки могут видеть только зарегистрированные пользователи. ] password
optional arguments:
-h, --help show this help message and exit
-s SERVER, --server SERVER
login server address
22.07.2014
[~] Обновлен юзер-агент
[~] Исправлена ошибка 'no element found: line 1, column 0'
________________
Talk is cheap. Show me the code
— Linus Torvalds
Последний раз редактировалось Yukikaze; 22.07.2014 в 06:15.
Причина: Обновление скрипта
[+] Добавлена возможность подключения клиента к собственному логин-серверу, для этого используем ключ -s или --server Пример
Код:
mini.py [Ссылки могут видеть только зарегистрированные пользователи. ] password -s 127.0.0.1:1337
[+] Добавлена мини-справка, увидеть ее можно запустив скрипт с ключом -h или --help Пример
Код:
usage: mini.py [-h] [-s SERVER] login password
positional arguments:
login [Ссылки могут видеть только зарегистрированные пользователи. ] login
password [Ссылки могут видеть только зарегистрированные пользователи. ] password
optional arguments:
-h, --help show this help message and exit
-s SERVER, --server SERVER
login server address
и у меня не получилось тоже... ТС, может помогёш?? )
UPD. Получилось.. ))
Не зря в шапке написано добавить переменную среды PATH )))
P.S. Если кто не знает как это делать, то вот.
Пуск - Компьютер (ПКМ) - Свойства - Дополнительные параметры системы - Переменные среды.
В нижнем окошке ищем переменную PATH (или Path), нажимаем изменить и в конце строки, БЕЗ отступа от предыдущей записи пишем C:\Python27\;C:\Python27\Scripts;
Это при условии, что у Вас стоит версия 2.7 и установлена она там же )
Последний раз редактировалось Demid; 29.05.2014 в 20:34.
Запускает только одно окно.
Скажи пожалуйста, что именно надо мониторить, чтобы контролировать обновление?
То есть почему может не запускаться несколько окон, а запускаться только одно?
Последний раз редактировалось AxMan; 03.06.2014 в 10:49.
и у меня не получилось тоже... ТС, может помогёш?? )
UPD. Получилось.. ))
Не зря в шапке написано добавить переменную среды PATH )))
P.S. Если кто не знает как это делать, то вот.
Пуск - Компьютер (ПКМ) - Свойства - Дополнительные параметры системы - Переменные среды.
В нижнем окошке ищем переменную PATH (или Path), нажимаем изменить и в конце строки, БЕЗ отступа от предыдущей записи пишем C:\Python27\;C:\Python27\Scripts;
Это при условии, что у Вас стоит версия 2.7 и установлена она там же )
у меня перед скриптс еще папка Tools, значит вставить так же и в записи твоей?
а что дальше? как запустить через командную строку я что-то не понимаю, или может я еще что-то не сделал?
Добавлено через 4 минуты
Архив с мега не качается, перезалей пожалуйста)
Добавлено через 1 час 10 минут
Я что-то совсем запутался, а что делать с теми ключами в обновлении((
________________
Подпись
Последний раз редактировалось Hikomori; 21.06.2014 в 23:51.
Причина: Добавлено сообщение