С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: API, боты
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
6 / 8 / 2
Регистрация: 20.12.2012
Сообщений: 729
1

Скрипт покупки товара на Steam Community Market

05.11.2015, 03:55. Показов 2446. Ответов 1

Author24 — интернет-сервис помощи студентам
Скрипт заходит на страницу товара (передавая куки с sessionid и пр.), выбирает первый лот и отправляет post-запрос для покупки. И на этом запросе я получаю ошибку: The requested URL returned error: 400 Bad Request.

PHP
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php
    error_reporting(E_ALL);
    require_once('phpQuery-onefile.php');
    $url = 'http://steamcommunity.com/market/listings/730/PP-Bizon%20|%20Sand%20Dashed%20%28Well-Worn%29';
 
    preg_match('/sessionid  ([0-9a-zA-Z]+)/', file_get_contents('cookies.txt'), $m);
    $session_id = $m[1];
 
    // Получаем страницу с товаром
    $headers = array(
        'Origin: http://steamcommunity.com',
        'Accept' => '*/*',
        'Accept-Encoding' => 'gzip, deflate',
        'Accept-Language' => 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3'
    );
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt');
    curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt');
    curl_setopt($ch, CURLOPT_AUTOREFERER, true);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:38.0) Gecko/20100101');
    curl_setopt($ch, CURLOPT_FAILONERROR, true);
    $response = curl_exec($ch);
    if (!$response) die('load page error');
 
    $dom = phpQuery::newDocumentHTML($response);
    if (!$dom->find('#account_pulldown')->html()) die('auth failed');
    $js = $dom->find('.btn_green_white_innerfade.btn_small:eq(0)')->attr('href');
    preg_match("/BuyMarketListing\(.*?, '(.*?)', .*?, .*?, .*?\)/", $js, $m);
    $prod_id = $m[1];
 
    $row = $dom->find("#listing_$prod_id");
    $tr = pq($row);
    $price_with_fee = kop($row->find('.market_listing_price.market_listing_price_with_fee')->text());
    $price_without_fee = kop($row->find('.market_listing_price.market_listing_price_without_fee')->text());
 
 
    // Отправляем post-запрос для покупки
    $post_data = array(
        'currency' => 5,
        'fee' => $price_with_fee - $price_without_fee,
        'quantity' => 1,
        'sessionid' => $session_id,
        'subtotal' => $price_without_fee,
        'total' => $price_with_fee
    );
    $headers['Content-Type'] = 'application/x-www-form-urlencoded';
 
    curl_setopt($ch, CURLOPT_URL, "https://steamcommunity.com/market/buylisting/$prod_id");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    $response = curl_exec($ch);
    $json = @json_decode($response, true);
 
    if ($json) {
        print_r($json);
    } else {
        print "buy error: " . curl_error($ch);
    }
    curl_close($ch);
 
 
    function parse_sum($num) { // Извлекает из строки значение цены товара
        if (preg_match('/(\d+)(?:,(\d+))?/', $num, $m)) {
            if (!array_key_exists(2, $m)) $m[2] = 0;
            return "{$m[1]}.{$m[2]}";
        } else {
            die("price parse fail, num = $num");
            return 0;
        }
    }
 
    function kop($sum) { // Перевод рублей в копейки
        return (int) (parse_sum($sum) * 100);
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2015, 03:55
Ответы с готовыми решениями:

Определить стоимость покупки, если известны название купленного товара и количество приобретенных единиц товара
Дан список товаров, имеющихся в продаже, содержащий сведения: название товара и цена единицы...

Синхронизация цены товара play market с сервером
Есть туристический сайт-магазин. Заказчик хочет, чтобы в разрабатываемом мобильном приложении была...

Программа покупки товара
Срочная помощь. Суть программы состоит в том, что в txt файл написан код продуктов, наименование и...

Шаг покупки товара х2
Добрый вечер, такая проблема. Установил на сайт Woordpress плагин: &quot;WooCommerce Quantity Increment&quot;...

1
0 / 0 / 0
Регистрация: 11.08.2016
Сообщений: 1
12.08.2016, 02:36 2
Автор, решили проблему?
0
12.08.2016, 02:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.08.2016, 02:36
Помогаю со студенческими работами здесь

Вероятность покупки товара
Есть две таблицы в приложении. В первой таблицы указаны товары, группа товаров, цена и...

Вероятность покупки товара
Вероятность покупки данного товара покупателем в магазине составляет 0.6 1.найти вероятность того...

Статус товара после покупки
Здравствуйте! Подскажите пожалуйста как сделать так, чтоб статус товара после его покупки...

Вычислить сдачу с покупки товара
1.Товар стоит a руб. b коп. За него заплатили c руб. d коп. Сколько сдачи требуется получить?...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru