Форум программистов, компьютерный форум, киберфорум
Наши страницы

Objective-C

Войти
Регистрация
Восстановить пароль
 
kolesichek
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 8
#1

Trade Bot Steam на Objective C - Objective-C

18.05.2016, 21:00. Просмотров 4668. Ответов 14
Метки нет (Все метки)

Привет ребят, пишу трейд бота на обжектив и все бы хорошо, но API стима не содержит метода который принимает обмен (не приветствуется автоматическая торговля). Почитал на reddit, там пишут, что нужно отправлять запрос на https://steamcommunity.com/tradeoffer/ид оффера/accept и к этому запросу прикручивать куки из браузера. Я смотрел в фидлере какие куки передаются и пробовал эмитировать браузер, но у меня ничего не получается - нет в этом совсем опыта. Я настраиваю куки вручную, но есть подозрения, что я это не правильно это делаю.
Создаю куки вручную, значения беру из браузера:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
    
    NSMutableDictionary *cookieSessionidProp = [NSMutableDictionary dictionary];
    [cookieSessionidProp setObject:@"sessionid" forKey:NSHTTPCookieName];
    [cookieSessionidProp setObject:@"ХХХХХХХХХХХХХХХХХХХ" forKey:NSHTTPCookieValue];
    [cookieSessionidProp setObject:@"steamcommunity.com" forKey:NSHTTPCookieDomain];
    [cookieSessionidProp setObject:@"/" forKey:NSHTTPCookiePath];
    [cookieSessionidProp setObject:@"Session" forKey:NSHTTPCookieExpires];
    
    NSHTTPCookie *cookieSessionId = [NSHTTPCookie cookieWithProperties:cookieSessionidProp];
    
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookieSessionId];
    
    //=====================================================
    
    NSMutableDictionary *cookieSteamLoginProp = [NSMutableDictionary dictionary];
    [cookieSteamLoginProp setObject:@"steamLogin" forKey:NSHTTPCookieName];
    [cookieSteamLoginProp setObject:@"ХХХХХХХХХХХХХХХХХХХ" forKey:NSHTTPCookieValue];
    [cookieSteamLoginProp setObject:@"steamcommunity.com" forKey:NSHTTPCookieDomain];
    [cookieSteamLoginProp setObject:@"/" forKey:NSHTTPCookiePath];
    [cookieSteamLoginProp setObject:@"Session" forKey:NSHTTPCookieExpires];
    
    NSHTTPCookie *cookieSteamLogin = [NSHTTPCookie cookieWithProperties:cookieSteamLoginProp];
    
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookieSteamLogin];
    
    //=====================================================
    
    NSMutableDictionary *cookieSteamLoginSecureProp = [NSMutableDictionary dictionary];
    [cookieSteamLoginSecureProp setObject:@"steamLoginSecure" forKey:NSHTTPCookieName];
    [cookieSteamLoginSecureProp setObject:@"ХХХХХХХХХХХХХХХ" forKey:NSHTTPCookieValue];
    [cookieSteamLoginSecureProp setObject:@"steamcommunity.com" forKey:NSHTTPCookieDomain];
    [cookieSteamLoginSecureProp setObject:@"/" forKey:NSHTTPCookiePath];
    [cookieSteamLoginSecureProp setObject:@"Session" forKey:NSHTTPCookieExpires];
    [cookieSteamLoginSecureProp setObject:@"true" forKey:NSHTTPCookieSecure];
    
    NSHTTPCookie *cookieSteamLoginSecure = [NSHTTPCookie cookieWithProperties:cookieSteamLoginSecureProp];
    
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookieSteamLoginSecure];
В заголовок добавляю данные из браузера, включая юзер-агент и делаю запрос:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
NSString *tradeofferId = @"1249994821";
    
    AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
    
    NSString *urlString = [NSString stringWithFormat:@"https://steamcommunity.com/tradeoffer/%@/accept", tradeofferId];
    
    NSURL *url = [NSURL URLWithString:urlString];
    
    
    NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url];
    
    [urlRequest setValue:@"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" forHTTPHeaderField:@"Accept"];
    
    [urlRequest setValue:@"gxip,deflate, sdch" forHTTPHeaderField:@"Acept-Encoding"];
    
    [urlRequest setValue:@"ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4" forHTTPHeaderField:@"Acept-Language"];
    
    [urlRequest setValue:@"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36" forHTTPHeaderField:@"User-Agent"];
    
    
    [urlRequest setTimeoutInterval:30.0f];
    [urlRequest setHTTPMethod:@"POST"];
    
    NSArray *array = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
    
    NSLog(@"%@", array);
    
    
    [[manager dataTaskWithRequest:urlRequest completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
        
        if (!error) {
            NSLog(@"Reply JSON: %@", responseObject);
            
            if ([responseObject isKindOfClass:[NSDictionary class]]) {
                //blah blah
            }
        } else {
 
            NSLog(@"Error: %@\n, response = %@\n, responseObject = %@", error, response, responseObject);
        }
    }] resume];
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2016, 21:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Trade Bot Steam на Objective C (Objective-C):

Objective C - Программирование iOS
Доброго времени суток. Знаю что тема уже стара так же как задница Аллы Пугачевой, но суть вопроса в том что я изучаю Objective C. и...

Строки в Objective-C - Objective-C
Помогите решить такую задачу: есть NSMutableString например с таким содержанием "Send email to and to and to". Нужно получить строку в...

Референция в Objective-C - Objective-C
Всем привет. Многие, кто пишет на Java, знают, что там есть возможность передавать референцию на объекты между классами. Делегирование...

Перевод в Objective C - Objective-C
Здраствуйте! можете мне помочь с такой проблемой, нужно перевести этот С++ код в Objective C. Сам уже третий день пытаюсь но все время...

Полиморфизм в Objective-C - Objective-C
Всем привет! Без упоминания долгой предыстории, затронули с товарищем понятие полиморфизма в Objective-C. Я привел популярный пример...

Скачать Objective-C - Objective-C
Здравствуйте, где можно скачать Objective-C ? В инете искал, чё-то не нашёл. Знаю, что он входит в GCC

14
DOLINSKYI
1 / 1 / 0
Регистрация: 16.08.2015
Сообщений: 31
29.06.2017, 01:25 #2
kolesichek, Добрый день! У меня такая же проблема, тоже хочу настроить автоматическое подтверждение обмена.
Поделитесь опытом?
0
kolesichek
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 8
29.06.2017, 01:38  [ТС] #3
DOLINSKYI, я на днях залью отрывок кода на гитхаб и дам тебе ссылку.
0
DOLINSKYI
1 / 1 / 0
Регистрация: 16.08.2015
Сообщений: 31
29.06.2017, 04:16 #4
kolesichek, Большое спасибо!
0
kolesichek
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 8
29.06.2017, 12:07  [ТС] #5
https://github.com/berliozzz/SteamSe...erverManager.m
Сначала нужно экспортировать куки, я для этого использую расширение для хрома EditThisCookie, куки в формате JSON кладу в файл JSONData.txt, добавляем куки в массив [NSHTTPCookieStorage sharedHTTPCookieStorage] и добавляем заголовки к запросам (заголовки делаю как в браузере). Дальше делаем запрос getTradeOfferWithId, offerId я беру у торгового бота там где торгую, потом в ответе первого запроса нужно вытащить sessionId и partnerId. И уже с этими параметрами отправляем второй запрос методом acceptTradeOfferWithTradeOfferId. Я если что использую библиотеку AFNetworking.
0
DOLINSKYI
1 / 1 / 0
Регистрация: 16.08.2015
Сообщений: 31
29.06.2017, 13:29 #6
kolesichek, Я только учусь программировать, возможно глупый вопрос, это написано на Джава скрипт?

Добавлено через 6 минут
kolesichek, Мне пока сложно разобраться в вашем коде, но я кое что нарыл в интернете, что скажите такой способ будет работать?

Данная API позволяет Вам получить трейд-оффера, как и их id-шники. Собсна принять их можно простым Post-запросом на https://steamcommunity.com/tradeoffer/"tradeId"/accept где tradeId - собственно, ID оффера.

В шапке отправки нужно указать:

{"sessionid", ...},
{"serverid", ...},
{"tradeofferid", ...},
{"partner", ...},
{"captcha", ...}
Первые два параметры должны храниться в контейнере, который собирается при авторизации. Третий и четвертый параметры, будут получены через предложенный вами API, а Капча, по умолчанию, string.empty
0
kolesichek
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 8
29.06.2017, 13:50  [ТС] #7
DOLINSKYI, написано это на объектив си, думаю если ты только учишься, мой способ будет проще.
0
DOLINSKYI
1 / 1 / 0
Регистрация: 16.08.2015
Сообщений: 31
29.06.2017, 14:04 #8
kolesichek, Дело в том, что я более менее программирую на с++,Qt. В общем я написал бота на Qt, вполне приличного, теперь хочу авто обмен настроить, вот и ищу примеры на С++.

Что скажите насчет Post запроса выше, не в курсе он работает? Я хочу проверить этот запрос, только не могу понять ка получить параметры "sessionid" и "serverid", я сейчас пытаюсь найти метод Авторизации в Steam, я так понял при авторизации я полу эти данные?
0
kolesichek
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 8
29.06.2017, 14:31  [ТС] #9
DOLINSKYI, да, или при авторизации, или как у меня из куков сразу. Думаю работает, хотя я гет запросы шлю.
0
DOLINSKYI
1 / 1 / 0
Регистрация: 16.08.2015
Сообщений: 31
29.06.2017, 14:33 #10
kolesichek, Спасибо за ответ! А метод на С++ для авторизации не подскажите?
0
kolesichek
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 8
29.06.2017, 14:55  [ТС] #11
Метод авторизации смотри в steam API.
0
DOLINSKYI
1 / 1 / 0
Регистрация: 16.08.2015
Сообщений: 31
02.07.2017, 14:55 #12
kolesichek, Добрый день. До сих пор не могу настроить обмен, если не сложно ответь на пару вопросов.
1) Я вижу у вас в коде параметр "serverid" = "1". Это постоянное значение? Как вы нашли его? Я пытался найти этот параметр через сниффер во время авторизации в Steam, но конкретно "serverid" там не нашел.
2) Я правильно понимаю, что параметр в get запросе "tradeId" равен параметру в post запросе "tradeofferid"? Этот параметр я беру от бота который мне предлагает обмен, вот такую строку мне возвращает бот когда предлагает обмен :"{"success":true,"trade":"2258068563","nick":"Hamma","botid":360412264,"profile":"https:\\/\\/steamcommunity.com\\/profiles\\/76561198320677992\\/","secret":"48DE","items":[]}"
3) Что такое "partner"? Это profiles бота (76561198320677992) или это "botid" ( 360412264) ? Параметры взяты из строки которую возвращает бот.
0
kolesichek
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 8
02.07.2017, 18:47  [ТС] #13
1) "serverid" = "1" это постоянный параметр, чтобы посмотреть все параметры, в хроме вручную предай или прими какой-нибудь предмет, перед этим открой консоль разработчика, там вкладку network, когда нажмешь зелененькую кнопку подтверждения появится запрос, вот там и смотри какие параметры передаются и какие заголовки, тебе нужно сделать идентичный запрос.
2) думаю правильно, можешь ради интереса поставить https://steamcommunity.com/tradeoffer/trade/ в браузере и проверить. думаю "trade":"2258068563" то что тебе нужно.
3) partner это профиль бота (76561198320677992), я его парсю из ответа первого запроса, но у тебя он приходит вместе с трейд ай ди, так что тебе еще проще.
0
DOLINSKYI
1 / 1 / 0
Регистрация: 16.08.2015
Сообщений: 31
02.07.2017, 19:53 #14
kolesichek, Большое спасибо! Сейчас буду разбираться.
И еще вопрос. Обязательно отсылать запрос https или с http запросом обмен тоже пройдет?
0
kolesichek
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 8
02.07.2017, 19:57  [ТС] #15
Вообще нужные куки я беру строго с https, так как на http не все куки. Поэтому думаю только https.
0
02.07.2017, 19:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2017, 19:57
Привет! Вот еще темы с ответами:

Перцептрон на objective c - Objective-C
Добрый день! Я пытаюсь реализовать перцептрон на обжектив-С. Но столкнулся с проблеммой, когда через какое-то число эпох выход сети уходит...

Наследование в Objective C - Objective-C
У меня есть класс CustomCell, в котором объявлен прототип функции initDataCell. Тело функции описано в классах FolderCell,...

Рисование в Objective-C - Objective-C
Доброго времени суток. Подскажите пожалуйста как на Objective-C в Xcode реализовать что та типа Paint. Подскажите хотя бы с чего начать или...

Objective-C A to Z Started - Objective-C
Доброго времени суток господа, хотел бы получить у вас совет, решил очень усиленно начать разрабатывать приложения на ios, может кто...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru